首页 > 解决方案 > Predict classes or class probabilities?

问题描述

I am currently using H2O for a classification problem dataset. I am testing it out with H2ORandomForestEstimator in a python 3.6 environment. I noticed the results of the predict method was giving values between 0 to 1(I am assuming this is the probability).

In my data set, the target attribute is numeric i.e. True values are 1 and False values are 0. I made sure I converted the type to category for the target attribute, I was still getting the same result.

Then I modified to the code to convert the target column to factor using asfactor() method on the H2OFrame still, there wasn't any change on the result.

But when I changed the values in the target attribute to True and False for 1 and 0 respectively, I was getting the expected result(i.e) the output was the classification rather than the probability.

标签: pythonmachine-learningclassificationrandom-foresth2o

解决方案


原则上和理论上,硬分类和软分类(即分别返回概率)是不同的方法,每种方法都有其优点和缺点。例如,从硬分类还是软分类?大利润统一机器

基于边距的分类器在机器学习和分类问题的统计中都很流行。在众多的分类器中,有些是分类器,有些是分类器。软分类器显式地估计类条件概率,然后根据估计的概率进行分类。相反,硬分类器直接针对分类决策边界而不产生概率估计。这两种分类器基于不同的哲学,各有其优点。

也就是说,在实践中,今天使用的大多数分类器,包括随机森林(我能想到的唯一例外是 SVM 系列)实际上都是分类器:它们在下面实际产生的是类似概率的度量,随后,结合一个隐式阈值(通常在二进制情况下默认为 0.5),给出一个硬类成员资格,如0/1or True/False

得到分类预测结果的正确方法是什么?

对于初学者来说,从概率到难课总是有可能的,但反之则不然。

一般来说,考虑到你的分类器实际上是一个True/False分类器,只得到最后的硬分类(直接处理产生的概率,并且(重要!)明确控制决策阈值应该是这里的首选方式。根据我的经验,这些是新从业者经常忽略的微妙之处;例如,从交叉验证线程减少分类概率阈值中考虑以下内容:

当您为新样本的每个类别输出一个概率时,您的练习的统计部分就结束了。选择一个阈值,超过该阈值将新观察分类为 1 与 0 不再是统计数据的一部分。它是决策组件的一部分。

除了像上面这样的“软”参数(双关语)之外,在某些情况下,您需要直接处理潜在的概率和阈值,即二进制分类中默认阈值 0.5 会导致您误入歧途的情况,尤其是当您的类不平衡;有关这种情况的具体示例,请参阅我在High AUC 但对不平衡数据(以及其中的链接)的错误预测的回答。

老实说,我对你报告的 H2O 的行为感到相当惊讶(我个人没有使用过),即输出的类型受输入表示的影响;情况不应该如此,如果确实如此,我们可能会遇到设计不良的问题。比较例如 scikit-learn 中的随机森林分类器,它包括两种不同的方法,predictpredict_proba,分别获得硬分类和潜在概率(并检查文档,很明显,输出predict是基于概率估计,之前已经计算过)。

如果概率是数值目标值的结果,那么在多类分类的情况下我该如何处理呢?

这里原则上没有什么新东西,除了一个简单的阈值不再有意义。再次,来自predictscikit-learn 中的 Random Forest 文档:

预测的类别是具有最高平均概率估计的类别

也就是说,对于 3 个类别(0, 1, 2),您会得到一个估计值[p0, p1, p2](根据概率规则,元素总和为 1),并且预测的类别是概率最高的类别,例如 的情况下的类别 #1 [0.12, 0.60, 0.28]。这是一个具有 3 类 iris 数据集的可重现示例(用于 GBM 算法和 R,但基本原理相同)。


推荐阅读