预测类别还是类别概率?

我目前正在使用H2O处理一个分类问题的数据集。我在一个Python 3.6环境中使用H2ORandomForestEstimator进行测试。我注意到predict方法的结果返回了介于0到1之间的值(我假设这是概率)。

在我的数据集中,目标属性是数值型,即True值为1,False值为0。我确保将目标属性的类型转换为分类,但结果仍然相同。

然后我修改了代码,使用asfactor()方法将H2OFrame中的目标列转换为因子,结果仍然没有变化。

但是,当我将目标属性中的值改为1和0分别对应True和False时,我得到了预期的结果(即输出是分类结果而不是概率)。

  • 如何正确获得分类预测结果?
  • 如果数值目标值的输出是概率,那么在多类分类的情况下如何处理?

回答:

从原则和理论上讲,硬分类和软分类(即分别返回类别概率)是不同的方法,各有优缺点。例如,来自论文Hard or Soft Classification? Large-margin Unified Machines中的以下内容:

基于边缘的分类器在机器学习和统计学中的分类问题中都很流行。在众多分类器中,有些是分类器,有些是分类器。软分类器明确估计类条件概率,然后基于估计的概率进行分类。相比之下,硬分类器直接针对分类决策边界进行处理,而不产生概率估计。这两种类型的分类器基于不同的哲学,各有其优点。

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

如何正确获得分类预测结果?

首先,从概率到硬类别总是可能的,但反过来则不成立。

一般来说,鉴于你的分类器实际上是一个分类器,仅获得最终的硬分类结果(True/False)会使过程带有“黑盒”味道,这在原则上是不受欢迎的;直接处理生成的概率,并(重要的是!)明确控制决策阈值应该是这里更可取的方式。根据我的经验,这些细微之处往往被新手忽视;例如,来自Cross Validated讨论线程Reduce Classification probability threshold中的以下内容:

当你为新样本的每个类别输出一个概率时,你的练习的统计部分就结束了。选择一个阈值来将新观测值分类为1或0不再是统计的一部分。这是决策部分的内容。

除了上述“软”论点之外,还有一些情况你需要直接处理底层的概率和阈值,即在二元分类中默认阈值0.5会误导你的情况,最显著的是当你的类别不平衡时;请参见我在High AUC but bad predictions with imbalanced data中的回答(以及其中的链接)以了解此类情况的具体示例。

说实话,我对你报告的H2O的行为感到相当惊讶(我个人没有使用过),即输出的类型受到输入表示的影响;这不应该是这样的,如果确实如此,我们可能面临设计不佳的问题。例如,比较scikit-learn中的随机森林分类器,它包含两个不同的方法,predictpredict_proba,分别用于获取硬分类和底层概率(查看文档,很明显predict的输出是基于已经计算出的概率估计)。

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

这里原则上没有新的内容,除了简单阈值不再有意义之外;同样,来自scikit-learn中随机森林predict文档的以下内容:

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

也就是说,对于3个类别(0, 1, 2),你得到[p0, p1, p2]的估计(元素总和为1,符合概率规则),预测类别是概率最高的类别,例如,对于[0.12, 0.60, 0.28]的情况,类别#1是预测类别。这里有一个可复现的示例,使用的是3类iris数据集(这是针对GBM算法的R语言示例,但原理是相同的)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注