h2o.glm 与 R 中的线性回归的 glm 不匹配

2024-03-16

我一直在将 H2O.ai(版本 3.10.3.6)与 R 结合使用。

我正在努力用 h2o.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

h2o 模型的 MSE 高出 60%。我的假设 glm ≈ h2o.glm 是错误的吗?我将尽快提供一个示例数据集(训练数据集是机密的,350000 行 x 350 列)。

一个额外的问题:出于某种原因,as.h2o 添加了一行充满 NA 的额外行,以便 h2o_training 和 h2o_testing 多了一行。在构建模型之前删除它(就像我在这里所做的:as.h2o(train)[-1,])不会影响回归性能。没有 NA 值传递给 glm 或 h2o.glm;即训练矩阵没有 NA 值。


为了使 H2O 的 GLM 与 R 的 GLM 匹配,您需要设置一些参数,因为默认情况下,它们的功能不同。以下是您需要进行设置才能获得相同结果的示例:

library(h2o)
h2o.init(nthreads = -1)

path <- system.file("extdata", "prostate.csv", package = "h2o")
train <- h2o.importFile(path)

# Run GLM of VOL ~ CAPSULE + AGE + RACE + PSA + GLEASON
x <- setdiff(colnames(train), c("ID", "DPROS", "DCAPS", "VOL"))

# Train H2O GLM (designed to match R)
h2o_glmfit <- h2o.glm(y = "VOL", 
                      x = x, 
                      training_frame = train, 
                      family = "gaussian",
                      lambda = 0,
                      remove_collinear_columns = TRUE,
                      compute_p_values = TRUE,
                      solver = "IRLSM")

# Train an R GLM
r_glmfit <- glm(VOL ~ CAPSULE + AGE + RACE + PSA + GLEASON, 
                data = as.data.frame(train)) 

这是 coefs(它们匹配):

> h2o.coef(h2o_glmfit)
  Intercept     CAPSULE         AGE 
-4.35605671 -4.29056573  0.29789896 
       RACE         PSA     GLEASON 
 4.35567076  0.04945783 -0.51260829 

> coef(r_glmfit)
(Intercept)     CAPSULE         AGE 
-4.35605671 -4.29056573  0.29789896 
       RACE         PSA     GLEASON 
 4.35567076  0.04945783 -0.51260829 

我添加了一个吉拉门票 https://0xdata.atlassian.net/browse/PUBDEV-4258将此信息添加到文档中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

h2o.glm 与 R 中的线性回归的 glm 不匹配 的相关文章

  • 分组和计数以获得接近值

    我想计算每country的次数status is open以及次数status is closed 然后计算closerate per country Data customer lt c 1 2 3 4 5 6 7 8 9 country
  • kmeans 对分组数据进行聚类

    目前 我尝试在分组数据中找到簇的中心 通过使用示例数据集和问题定义 我能够创建kmeans每个组内的集群 然而 当涉及到给定组的集群的每个中心时 我不知道如何获取它们 https rdrr io cran broom man kmeans
  • 如何从R中的日期中提取月份

    我正在使用lubridate封装并应用month从日期中提取月份的函数 我在日期字段上运行了 str 命令 得到了 Factor w 9498 levels 01 01 1979 01 01 1980 5305 1 1 1 1 1 1 1
  • 如何在 R 中为回归量创建“宏”?

    对于长且重复的模型 我想创建一个 宏 在 Stata 中称为 宏 并通过以下命令完成 global var1 var2 其中包含回归量的模型公式 例如来自 library car lm income education prestige d
  • rpart是自动剪枝吗?

    Is rpart自动修剪 生成的决策树rpart比具有自动修剪功能的 Oracle Data Mining 生成的级别要多得多 否 但拟合函数的默认值可能会 提前 停止分割 对于 早期 的某些定义 See rpart control对于您可
  • 如何使用 sprintf 函数在字符中添加前导“0”而不是空格?

    我正在尝试使用sprintf函数为字符添加前导 0 并使所有字符长度相同 然而我得到的是领先空间 My code a lt c 12 123 1234 sprintf 04s a 1 12 123 1234 我试图得到什么 1 0012 0
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 使用自定义渐变填充直方图箱

    我想在 R 和 ggplot2 中创建一个直方图 其中根据连续的 x 值填充箱 大多数教程仅通过离散值或密度 计数进行着色 下列的这个例子 https stackoverflow com questions 40284227 how to
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • 如何总结此R问题中的销售数量、售出酒类数量和花费金额

    我使用以下代码在 R 上上传我的数据 if file exists ames liquor rds url lt https github com ds202 at ISU materials blob master 03 tidyvers
  • 空间数据xyz到矩阵

    我有一个大数据框 100 000 行 其中包含 LON LAT VALUE 我想将其转换为矩阵 EPSG 中的坐标 3035 我使用以下命令尝试了 reshape2 包 acast df lon lat value var value 效果
  • 按组计算连续行中的值之间的差异

    这是我的一个df 数据框 group value 1 10 1 20 1 25 2 5 2 10 2 15 我需要按组计算连续行中的值之间的差异 所以 我需要一个结果 group value diff 1 10 NA because the
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu

随机推荐

  • R:如何将移动平均值应用于数据框中的列子集?

    我有一个数据框 training set 其中包含 83 个变量的 150 个观察值 我想用一些移动平均线来转换其中 82 个列 问题是结果最终只有 150 个数值 即 1 列 如何在数据中的每一列中单独应用移动平均函数并保持第 83 列不
  • “您的设备与此版本不兼容”

    我在 Play 商店中放置了一个应用程序 而我的朋友 在两台设备上运行 4 0 3 在尝试安装我的应用程序时收到以下消息 您的设备与此版本不兼容 一台设备允许安装 而另一台设备则不允许 我允许 API 3 15 并且两台设备都是 4 0 3
  • 向量子集性能:名称与索引

    如果我有一个向量v姓名 John Murray Lisa Mike Joe Ann 0 0832090 0 0475580 0 2797860 0 1086225 0 0104590 0 0028250 时间复杂度是多少v Joe vers
  • 如何将PHP编译成操作码并在生产环境中运行?

    注意 这不是facebook最近的hiphop项目 我只是想把它转换成opcode not c c 现在还有解决办法吗 演示永远是最好的 您正在寻找的是PHP加速器 http en wikipedia org wiki PHP accele
  • 创建 Dockerfile - docker 在每个新构建上从头开始

    我正在尝试构建一个 dockerfile 迭代地添加行和测试 我的理解是 docker 将缓存已经构建的行 并从我添加的新行开始 情况似乎是 每次我在容器上调用 build 时 它只是从头开始构建 这是正常的吗 如果不是 我做错了什么 正如
  • REngine”不包含“SetDllDirectory”、“RDotNet”的定义

    My Code using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • Android 通过按钮打开相机

    我希望这不是一个重复的问题 但我正在制作一个应用程序 我想要一个按钮来打开相机应用程序 单独的默认 Android 相机 我怎样才能做到这一点 我知道有一个功能 intent setAction MediaStore ACTION IMAG
  • 在 Big Query 上向表中插入数据时出现 IO 异常

    我正在尝试在大查询的表中插入数据 我遵循了一些文档 我的最终代码如下所示 HttpTransport TRANSPORT new NetHttpTransport JsonFactory JSON FACTORY new JacksonFa
  • 如何使用jquery放大图像

    我只是想知道如何使用 jquery 放大图片 像这个网站这样的东西 当您单击大图像时 它会放大 您可以移动光标并在放大时查看图片的其他部分 如果有人可以向我展示链接或将我引向正确的方向 我将不胜感激 它们不会放大 真正发生的是 当您单击 缩
  • lua多重赋值

    lua中是否有任何多重赋值的方法 使得右侧缺失的值不被视为nil 类似于 a b c 1 但得到 a 1 b 1 c 1 结果 很遗憾 a b c 1 不起作用 我需要这个 因为我可能在右侧有复杂的表格 并且我想保持它简短 没有任何附加变量
  • C++ 中的结构继承

    Can a struct在C 中可以继承吗 Yes struct完全就像class除了默认的可访问性是public for struct 虽然它是private for class
  • 在构造函数中自动生成唯一 ID

    使用 VB net 创建一个名为 Staff 的新类 它具有三个属性 Name LastName ID 应适合用作数据库中的主键 提供类构造函数来填充 Name 和 LastName ID 应在构造函数内自动生成 不应传入 我知道如何创建类
  • ExtJS菜单checkItem:如何防止在某些情况下出现项目检查事件?

    对于菜单checkItem 当用户点击它时 默认会触发checkchange 我想知道如果满足某种情况 如何在单击后不更改其检查状态 换句话说 停止此事件链 我尝试了以下代码 但不起作用 listeners click function i
  • 查询方法参数应该是可以转换为数据库列的类型或包含此类类型的列表/数组

    我有一个具有自定义数据类型的数据库FollowEntityType作为一个列 Entity primaryKeys arrayOf id type tableName follow info data class FollowInfoEnt
  • 正确的 strtod 实现?

    简单的问题 双精度数字 1 15507e 173 的正确位表示是什么 完整的问题 如何确定这个数字的正确解析 背景 我的问题来自这个答案 https stackoverflow com questions 1994658 locale in
  • 通过引用传递基元类型而不是通过值返回有效率上的好处吗?

    在 C 中 通过引用传递基本类型而不是通过值返回是否有效率优势 通过引用传递基元类型而不是通过值返回是否有效率优势 不太可能 首先 除非您从探查器中获得的数据让您有理由这样做 否则您在设计程序时不应担心性能问题 选择simplest设计 以
  • 从逗号或制表符分隔的文本文件中读取

    我需要从可以用逗号或制表符分隔的文件中读取数据 我现在有一个函数 getcsv 但它只接受一个可能的分隔符 有什么想法如何处理这个问题吗 Thanks 从 PHP 5 3 开始 您可以使用str getcsv http php net ma
  • Mac PyQt5 菜单栏在取消焦点重新聚焦应用程序之前不会激活

    我在 Mac 中使用 PyQt5 创建 Qt 菜单栏时遇到问题 我遇到的问题是菜单栏会显示 但直到我取消应用程序的焦点 通过单击其他应用程序 然后再次重新聚焦 Qt 应用程序时才会做出反应 这是我的环境 操作系统 塞拉利昂 10 12 Py
  • python类中私有变量的实际实现[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中对象名称前的单下划线和双下划线的含义 https stackoverflow com questions 1301346 the meaning of a single and a d
  • h2o.glm 与 R 中的线性回归的 glm 不匹配

    我一直在将 H2O ai 版本 3 10 3 6 与 R 结合使用 我正在努力用 h2o glm 复制 glm 的结果 我期望得到完全相同的结果 在这种情况下 根据均方误差进行评估 但我发现 h2o 的准确性一定更差 由于我的模型是高斯模型