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值

R语言基于h2o包构建二分类模型:使用h2o.gbm构建梯度提升机模型GBM使用h2o.auc计算模型的AUC值

2.逻辑回归关于二分类问题的理解

机器学习:理解逻辑回归及二分类多分类代码实践

机器学习基础:理解逻辑回归及二分类多分类代码实践

GBDT算法做回归二分类及多分类的理解看这几篇文章足矣