我一直在與H2O.ai(3.10.3.6版)與R.h2o.glm不用於聯合線性迴歸
我奮力用水複製從GLM結果匹配R中GLM。 GLM。我期望得到完全相同的結果(在這種情況下,以均方誤差來評估),但我發現h2o的精度必須更差。由於我的模型是高斯的,我認爲這兩種情況都是普通最小二乘(或最大似然)迴歸。
這是我的例子:
train <- model.matrix(~., training_df)
test <- model.matrix(~., testing_df)
model1 <- glm(response ~., data=data.frame(train))
yhat1 <- predict(model1 , newdata=data.frame(test))
mse1 <- mean((testing_df$response - yhat1)^2) #5299.128
h2o_training <- as.h2o(train)[-1,]
h2o_testing <- as.h2o(test)[-1,]
model2 <- h2o.glm(x = 2:dim(h2o_training)[2], y = 1,
training_frame = h2o_training,
family = "gaussian", alpha = 0)
yhat2 <- h2o.predict(model2, h2o_testing)
yhat2 <- as.numeric(as.data.frame(yhat2)[,1])
mse2 <- mean((testing_df$response - yhat2)^2) #8791.334
的MSE是爲H2O型號高出60%。我的假設glm≈h2o.glm錯了嗎?我將着眼於提供一個示例數據集asap(訓練數據集是保密的,350000行x 350列)。
一個額外的問題:由於某些原因,as.h2o增加了一個充滿NAs的額外行,以便h2o_training和h2o_testing有一個額外的行。在構建模型之前刪除它(如我在這裏所做的:as.h2o(train)[ - 1,])不會影響迴歸性能。沒有傳遞給glm或h2o.glm的NA值;即訓練矩陣不具有NA值。
從你自己的意見,而不知道h2o,似乎h2o處理NA的方式與glm完全不同。你應該在發佈問題 – Akbar
@Akabar之前閱讀兩個幫助文件,訓練矩陣中沒有NAs,所以這不是問題。我已閱讀文檔和h2o.glm聲明做「通過迭代重新最小二乘法進行最大似然估計」,這應該給高斯模型提供與ols相同的參數估計值。 – fifthace
如果您在h2o.glm中仔細設置參數,可以複製glm,但默認設置肯定會做不同的事情。 – jmuhlenkamp