原则上和理论上,硬分类和软分类(即分别返回类和概率)是不同的方法,每种方法都有其优点和缺点。考虑以下示例,来自论文Hard or Soft Classification? Large-margin Unified Machines:
基于边距的分类器在机器学习和分类问题的统计中都很流行。在众多的分类器中,有些是hard分类器,有些是soft分类器。软分类器显式地估计类条件概率,然后根据估计的概率进行分类。相反,硬分类器直接针对分类决策边界而不产生概率估计。这两种分类器基于不同的理念,各有千秋。
也就是说,实际上,今天使用的大多数分类器,包括随机森林(我能想到的唯一例外是 SVM 系列)实际上都是 软 分类器:它们实际上在下面产生是一种类似概率的度量,随后结合隐含的阈值(在二进制情况下通常默认为 0.5),给出了像0/1 或True/False 这样的硬类成员资格。
什么是得到分类预测结果的正确方法?
对于初学者来说,从概率到难课总是有可能的,但反之则不然。
一般来说,考虑到您的分类器实际上是一个软分类器,只获得最终的硬分类 (True/False) 会给该过程带来“黑匣子”的味道,它原则上应该是不可取的;直接处理产生的概率,并且(重要!)明确控制决策阈值应该是这里的首选方式。根据我的经验,这些是新从业者经常忽略的微妙之处;考虑以下示例,来自交叉验证线程Reduce Classification probability threshold:
当您为新样本的每个类别输出一个概率时,您的练习的统计部分就结束了。选择一个阈值,将新观察分类为 1 与 0 的阈值不再是 统计数据 的一部分。它是 decision 组件的一部分。
除了像上面这样的“软”参数(无意的双关语)之外,在某些情况下,您需要直接处理基础概率和阈值,即二进制分类中默认阈值 0.5 的情况会让你误入歧途,尤其是当你的课程不平衡时;有关这种情况的具体示例,请参阅我在 High AUC but bad predictions with imbalanced data 中的回答(以及其中的链接)。
说实话,我对你报告的 H2O 的行为感到相当惊讶(我个人没有使用过),即输出的类型受输入表示的影响;情况不应该如此,如果确实如此,我们可能会遇到设计不良的问题。例如比较 scikit-learn 中的随机森林分类器,它包括两种不同的方法,predict 和 predict_proba,分别获得硬分类和底层概率(并检查文档,很明显 @ 的输出987654333@ 基于概率估计,之前已经计算过)。
如果概率是数值目标值的结果,那么在多类分类的情况下我该如何处理?
这里原则上没有什么新东西,除了一个简单的阈值不再有意义。再次,来自随机森林predict scikit-learn 中的文档:
预测的类别是具有最高平均概率估计的类别
也就是说,对于(0, 1, 2) 的 3 个类别,您会得到 [p0, p1, p2] 的估计值(根据概率规则,元素总和为 1),预测的类别是概率最高的类别,例如对于[0.12, 0.60, 0.28] 的情况,第 1 类。这是带有 3 类虹膜数据集的reproducible example(用于 GBM 算法和 R,但原理相同)。