Я пытаюсь использовать библиотеку H2O в Python и R для создания GLM без перехвата.К сожалению, это не похоже на работу.Результаты полностью отключены, коэффициент перехвата не равен нулю (только стандартизированный коэффициент для перехвата равен нулю), однако это не дает мне правильного прогноза.
Если исключить перехват из модели, я ожидаюпрогноз для случая, когда все остальные входы равны 0, а также 0.Это не вариант.Коэффициент значительно смещает прогноз, и на самом деле, если я устанавливаю intercept = True для смоделированных данных, которые, как я знаю, не должны иметь перехват, мой коэффициент перехвата будет намного ближе к 0, чем когда я запускаю те же данные с intercept = False.
То же самое происходит и в R, и в Python, и я не уверен, что что-то не так делаю при настройке модели.
Пример кода, который я написал, просто для проверки проблемы в R:
library(h2o)
h2o.init()
x1 = runif(500)
x2 = runif(500)
x3 = runif(500)
y = 2.67*x1 + 1.23*x2 -7.2*x3
h2odata<-data.frame(x1,x2,x3,y)
head(h2odata)
h2odata <- as.h2o(h2odata)
predictors <- c('x1','x2','x3')
response <- 'y'
h2o.splits = h2o.splitFrame(data=h2odata,ratios=.8)
train <- h2o.splits[[1]]
valid <- h2o.splits[[2]]
glm <- h2o.glm(x=predictors,y=response,family='gaussian',link='identity',
intercept = FALSE,training_frame = train,
validation_frame = valid)
glm
x1=0
x2=0
x3=0
newdata = data.frame(x1,x2,x3)
colnames(newdata)<-c('x1','x2','x3')
newdata<-as.h2o(newdata)
h2o::h2o.predict(glm,newdata)
Я что-то упускаю здесь очевидное?