h2o二分类,理解p0和p1
Posted
技术标签:
【中文标题】h2o二分类,理解p0和p1【英文标题】:h2o binary classification, understand p0 and p1 【发布时间】:2018-08-02 05:08:28 【问题描述】:我已经读过这个问题:How should we interpret the results of the H2O predict function? 仍然不明白 p1 是否是 [0,1] 之间的概率,并且可以平等地使用,因为它是一个回归,我可以应用我自己的阈值
编辑: 谢谢您的回答,对此仍有一些困惑,假设我的结果 Y 是 [0,1],让我们挖掘一下,如果 Y 是数字,我将其作为 REGRESSION 运行,并且我有一个列作为响应。另一方面,如果 Y 是因子,则将其作为 CLASSIFICATION 运行,输出为:预测/p0/p1。现在,p1 是否与使用 Y 作为数字相同? http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/calibrate_model.html calibrate_model 参数也会影响 logloss,但现在最大 F1 仍用作 P0 P1 或校准概率的阈值?我可以使用校准的概率进行回归,因为 logloss 应该更少吗?
【问题讨论】:
Y
的数据类型未定义问题是回归还是分类。如果Y
仅包含 0,1 值(更不用说数字或字符),语义就会这样做,它可能会要求分类。因此预测概率并使用分类。只需使用 train.df['Y'] = as.factor(train.df['Y'])
之类的东西将数字转换为 enum
类型。
在 h2o 中,如果 Y [0,1] 是它执行分类的一个因素,如果 is.numeric 是一个回归
来自 h2o docs:响应列的数据类型决定了模型类别。如果响应是分类变量(也称为因子或枚举),则创建分类模型。如果响应列数据类型是数字(整数或实数),则创建回归模型。
上面的代码显示了如何将Y
的类型从数字更改为因子。同样,它是关于语义的,而不是关于它的形式类型。
诀窍在于了解无论您是在做分类还是回归问题,H2O 都会构建一个回归树,因为该树不是预测一个类别,而是预测一个介于 0 和 1 之间的值(这是未校准的概率)。所以对于一个二元目标,你没有做回归问题。
【参考方案1】:
H2O 的二元分类问题的输出将为您提供类别标签(设置阈值以获得最大 F1 分数)、类别 0 (p0) 的预测值和类别 1 的预测值(p1)。
这些预测值是未校准的概率,如果您想要实际概率,您需要将 H2O 的模型参数 calibrate_model
设置为 True。
所以回答您的问题,是的,p1
是介于 0 和 1 之间的预测值(例如,您会看到 .23、.45.、.89 等值)和因为 H2O 构建回归树,您可以在技术上使用 1-p0
来获取您的 p1
值(反之亦然),事实上,除非您设置 binomial_double_trees = True
这正是 H2O 正在做的事情:它为其中一个构建单个回归树类,然后取 1-(该类值)来获取另一个类的预测值。
【讨论】:
以上是关于h2o二分类,理解p0和p1的主要内容,如果未能解决你的问题,请参考以下文章
R语言基于h2o包构建二分类模型:使用h2o.glm构建正则化的逻辑回归模型使用h2o.auc计算模型的AUC值