通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?
分类算法的评估指标有很多种,选择使用哪一种评估指标,应该根据实际情况来进行选择,而不能一概而定。
我们先来了解一下混淆矩阵,后面的分类评估指标其实都是在这个基础上发展而来,理解了这个,再去学习后面的评估指标就很简单了。
混淆矩阵(confusion matrix):是机器学习领域和统计分类问题中常用的可视化工具,从名字上不能看出其实它就是一个矩阵,它主要由两个维度组成实际类别和预测类别。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。之所以如此命名,是因为通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了(比如说把一个类错当成了另一个)。下面我们来看一个猫狗分类的实例
混淆矩阵
上面的表格很简洁的展示了分类模型的预测结果,一共预测了8只猫和5只狗,其中5只猫和3只狗预测正确,3只猫和2只狗预测错误。表格中的对角线元素表示预测正确,对角线之外均表示预测错误,下面我们用专业的术语来描述预测结果:
对上面的术语做一个说明帮助大家记忆和理解:
上面中的True和False表示的是样本的真实标签,Positives和Negatives表示的是模型的预测标签。
样本实际的正例数:P=TP+FN
样本实际的负例数:N=TN+FP
正确率是我们常用的分类指标,计算公式如下
正确率是指分类算法预测正确的样本在总样本中所占的比例,一般来说,正确率越大表示分类算法的效果越好
错误率是指分类算法预测错误的样本在总样本中所占的比例,计算公式如下
对于某一个实例来说,分对和分错是一个互斥事件,accuracy+error=1
召回率也被称为灵敏度(sensitivity),指分类正确的正例在正例中所占的比例
精度是精确性的度量,表示被分为正例中实际为正例所占的比例
表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力
有的时候我们需要结合多个指标来评估算法的效果,而F1-Score就是综合考虑了recall和precision两个指标,因此F1-score也被称为综合分类率。计算公式如下
ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。
PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。
不一定。例如我们想开发一个地震警报器,当地震要来临时提前发送警报让大家避险。而我们知道,实际上地震发生的次数很少,也许100次中可能只有1次地震,甚至更低,这里为了方便计算。如果此时,我们的预测器将这100次的预测结果都预测为不会发生地震,那我们的预测器的正确率有99%。
虽然,这个预测器的正确率很高,但是实际上它不会产生任何的商业价值,其实也就没任何使用价值。实际上我们需要预测正确的正是那一次的地震。
针对这种情况我们更希望是recall指标尽可能的高,而不是正确率。所以,对于分布不平衡的数据来说并不是正确率越高越好,应该根据实际需求来选择评估指标。
在现实任务中,我们只是对有限个测试样本进⾏绘制ROC图,此时只能获得有限个(假正例率,真正例率)坐标对,就⽆法获得如(a)的光滑的ROC曲线,就会获得如图(b)的近似的ROC曲线。
绘图过程如下:给定m1个正例和m2个反例,根据模型预测结果(正例的概率)对样例进⾏排序,然后把分类阈值设置为最⼤,即把所有样例都预测为反例,此时真正例率和假正例率都为0,在坐标(0, 0)处标记⼀个点,然后将分类阈值依次设置为每个样例的预测值,即依次将每个样例设置为正例,若前⼀个标记点坐标为(x, y),当前若为真正例,则对应标记点坐标为(x, y+1/m1);若当前为假正例,则对应标记点坐标为(x+1/m2, y),然后⽤线段连接相邻的点。