有没有办法为 Ensemble 硬投票分类器绘制 ROC 曲线?

数据挖掘 机器学习 集成建模 文本分类
2022-01-27 19:00:36

我正在研究一个多类文本分类问题并为文本分类执行集成学习。我选择硬投票作为集成技术。我试图为我的集成方法绘制 ROC 曲线,但它没有通过显示无法为硬投票集成方法绘制 ROC 曲线的错误来工作。所以我的问题是有什么可能的方法可以在 python 中为我的硬投票集成分类器绘制 ROC 曲线。

2个回答

对于 ROC 曲线,您需要模型生成测试点的排序(按属于正类的可能性排序)。几种方法:

  1. 硬投票分类器通常只输出最终的类预测。这是一个命令,几乎所有的关系。这将产生两条直线段的 ROC 曲线,从正方形的角到代表模型特异性和灵敏度的单个点。不是最丰富的信息,但它就在那里。

  2. 虽然您可能使用多数票来产生最终的类别预测,但您也可以稍微不同地解释它:通过平均来自基本模型的投票(作为二进制)来产生概率分数。最终的类别预测与将此分数设为 0.5 的阈值相同。所以现在你至少有更少的联系,你可以生成一个看起来更平滑的 ROC 曲线。如果您有很多基本模型,这将最有效,事实上这几乎正是您在构建随机森林时所做的。

  3. 如果您的基本模型带有概率分数,那么对于每个阈值,您可以从所有基本模型中获取分类,并让这些投票产生类。改变该阈值会产生一条与任何基本模型的 ROC 曲线一样平滑的 ROC 曲线。问题在于,一个阈值是否对所有基本模型都代表相同的事物:您需要对所有基本模型进行良好校准,才能真正做到这一点。您还会失去对为每个基本模型设置不同阈值的潜在影响的洞察力。

可能会迟到,但对此的一种替代方法实际上是任何不返回概率的分类器,例如SVM使用Platt 缩放等渗回归的校准

这样,您将拥有一个实际返回概率的分类器,即您将能够计算 ROC 曲线

在此处输入图像描述

参考:

https://mmuratarat.github.io/2019-10-12/probabilistic-output-of-svm#:~:text=SVMs%20don't%20output%20probabilities,the%20output%20to%20class%20probabilities.&text =在%20the%20binary%20case%2C%20the,validation%20on%20the%20training%20data