有同学做了个多分类的预测模型,结局有三个类别,做的模型包括多分类逻辑回归、随机森林和决策树,多分类逻辑回归是用ROC曲线并报告AUC作为模型评估的,后面两种模型报告了混淆矩阵,审稿人就提出要统一模型评估指标。那么肯定是统一成ROC了,刚好借这个机会给大家讲讲ROC在多分类问题情形下的具体使用和做法。
ROC 曲线回顾
ROC 曲线(Receiver Operating Characteristic Curve):展示分类模型的真阳性率(TPR) 和 假阳性率(FPR)的关系。
- 真阳性率 (TPR):模型正确分类正样本的比例。
- 假阳性率 (FPR):模型错误地把负样本判为正样本的比例。
其中的逻辑就是分类问题是要看概率阈值进行类别划分的,取不同的概率阈值,真阳性和假阳性率是不一样的。ROC曲线就是在所有可能的阈值下,绘制 TPR(纵轴) 对 FPR(横轴)的曲线。
而AUC(Area Under the Curve)就是ROC 曲线下的面积,反映模型的整体分类能力。AUC = 1,说明模型完美分类;AUC = 0.5,相当于随机猜测。
多分类 ROC 的挑战
但是在多分类问题中,模型输出的不是“正/负”,而是多个类别(如 A、B、C)。与二分类不同,多分类任务中有多个类别,ROC 就无法直接绘制了。这个时候就需要变一下,我们常用两种方法将多分类任务转化为多个二分类问题:
- One-vs-Rest (OvR):针对每个类别,将其视为“正类”,其他类别视为“负类”,分别绘制 ROC 曲线。
- One-vs-One (OvO):对每两个类别分别计算 ROC 曲线。
举个例子: 假设我们有 3 个类别:苹果(A)、香蕉(B)、橙子(C)。
- OvR 方法:针对“苹果 vs. 非苹果”、“香蕉 vs. 非香蕉”、“橙子 vs. 非橙子”,分别绘制 ROC。
- OvO 方法:只考虑两两类别,如“苹果 vs. 香蕉”、“苹果 vs. 橙子”、“香蕉 vs. 橙子”。
我们具体来看一下两种方法。
方法 1:One-vs-Rest (OvR)
每个类别都当作“正类”,其余类别当作“负类”,逐一绘制 ROC 曲线。比如结局有 3 个类别:苹果(A)、香蕉(B)、橙子(C)