与输出连续数值的回归模型不同,分类模型的输出是类别(category)。常见分类做法是通过设定阈值(threshold),若逻辑回归的输出大于(或等于,取决于实现方式)阈值时判定为正例,否则为反例。根据输出标签的种数又可以将分类模型划分为二元分类(Binary Classification)与多分类。
分类输出结果不一定是每次都100%正确,可以通过混淆矩阵(Confusion Matrix)统计模型预测正误情况。对于二元分类模型,后者包括:True Positive、True Negative、False Positive和False Negative,常用其首字母缩写。当分类阈值固定时,利用它们可以构造一系列的分类模型的评价指标(Metrics):
- 准确率:$\text{Accuracy} =\frac{\text{correct classifications}}{\text{total classifications}}= \frac{TP+TN}{TP+TN+FP+FN}$。评估模型性能时,最好与其他指标结合使用。当数据集的各类别数量均衡时,准确率可以作为粗略的质量指标。因此,常用于衡量通用、非特定模型的性能。然而,当数据集高度不均衡,或者一种错误的代价比另一种的高时,不适用该指标。
- 召回率(Recall)或检测率:$\text{Recall (or TPR)} =\frac{\text{correctly classified actual positives}}{\text{all actual positives}}= \frac{TP}{TP+FN}$关于它的适用范围,Google作出了自相矛盾的表述。在召回分类:召回率指标中,
In an imbalanced dataset where the number of actual positives is very, very low, say 1-2 examples in total, recall is less meaningful and less useful as a metric.
在Recall中,点击图标查看分类不平衡数据集的备注:
召回率特别适合用于评估正类别很少的分类模型。
对于分类不平衡的数据集,召回率是比准确率更为有用的指标。
- 误报概率(FPR):$\text{FPR} =\frac{\text{incorrectly classified actual negatives}}{\text{all actual negatives}}= \frac{FP}{FP+TN}$在一个不均衡的数据集内,实际负例的数量假设总共有1-2个样本,则 FPR 作为评估指标没什么意义和实用性。
- 精确率(Precision):$\text{Precision} =\frac{\text{correctly classified actual positives}}{\text{everything classified as positive}}= \frac{TP}{TP+FP}$与召回率变化方向相反。在一个不均衡的数据集内,实际正类别的样本数量假设为 1-2 个,那么精确率作为指标没啥意义,实用性也没那么高。
- F1得分(F1 Score):精确率和召回率的调和平均值:$\text{F1}=2*\frac{\text{precision * recall}}{\text{precision + recall}} = \frac{2\text{TP}}{2\text{TP + FP + FN}}$可以看出,当精确率和召回率相近时,F1也与之相近;当二者差距加大时,F1接近较差的其一。用于不均衡数据集时,比准确率更好。
如果想评估在所有可能的分类阈值下模型质量,则可以使用这些指标:
-
接收者操作特征曲线 (ROC):是模型在所有阈值上的表现的可视化展示。横轴代表FPR,纵轴代表TPR,完美模型表示为点(0,1)。曲线上最接近点(0,1)的点通常代表最合适的阈值。最初用于二战雷达侦测。
- 曲线下方面积(AUC):ROC曲线下方的面积,表示如果给定一个随机选择的正类别和一个随机选择的负类别样本,模型对正样本的逻辑输出大于对负样本的输出的概率。很好地适用于大致均衡的数据集。
对于不均衡的数据集,最好用精确率-召回率曲线(PRCs)及该线下方面积来可视化模型性能。
如果每个样本只能归到一类(不一定是同一类),多分类问题可以转化为多个二元分类问题。如果每个样本的类别不是唯一的,这种问题称为多标签分类问题。
预测偏差:代表模型预测的均值与标签均值的偏差。可以标记模型或训练数据中存在的问题,还可用于线性回归。当预测偏差过大时,考虑以下问题:
- 数据中的偏差或噪声,包括训练集的非均匀采样;
- 正则化过强,意味着模型过度简化;
- 模型训练pipeline中的 bug;
- 提供给模型的特征集合不足以完成任务