机器学习—分类模型的评价指标

1.准确率

准确率是指在分类中,用模型对测试集进行分类,分类正确的样本数占总数的比例:

$accuracy=\frac {n_{correct}}{n_{total}} $

sklearny库中提供了一个专门对模型进行评估的包metrics,该包可以满足一般的模型评估需求。其中提供了准确率计算函数,函数原型为sklearn.metrics.accuracy_score(y_true,y_pred,normalize=True,sample_weight=None)。其中,normalize默认值为True,返回正确分类的比例,如果设为False,则返回正确分类的样本数。

2.混淆矩阵

混淆矩阵是对分类的结果进行详细描述的矩阵,对于二分类则是一个2×2的矩阵,对于n分类则是n×n的矩阵。

 

 

假设一批数据样本,对太的标签值为0和1,其中1表示正样本,0表示负样本,经过测试后,标签为1且预测为正样本的数量为2742,标签为1但预测为负样本的数量为20129;标签为0且预测为负样本的数量为216066,标签为0但预测为正样本的数量为13649。

这批数据的分类结果建立混淆矩阵,准确率:

$accuracy= \frac {TP+FN}{TP+FP+FN+TN}= \frac {216066+2742}{216066+20129+13649+2742}$

 

1)真正率TPR:分类正确的正样本个数占整个正样本个数的比例:

𝑇𝑃𝑅 =𝑇𝑃/(𝑇𝑃+𝐹𝑁)

2)假负率:分类错误的正样本的个数占正样本的个数的比例:

𝐹𝑁𝑅=𝐹𝑁/(𝑇𝑃+𝐹𝑁)

3)假正率FPR:分类错误的负样本个数占整个负样本个数的比例:

𝐹𝑃𝑅=𝐹𝑃/(𝐹𝑃+𝑇𝑁)

4)真负率:分类正确的负样本的个数占负样本的个数的比例:

𝑇𝑁𝑅=𝑇𝑁/(𝐹𝑃+𝑇𝑁)

3.平均准确率

平均准确率的全称为:按类平均准确率,即计算每个类别的准确率,然后再计算它们的平均值。
在上面的数据示例中,预测准确率约为0.866。从混淆矩阵可以看到0样本数为229715(216066+13649),1样本数22871(20129+2742),可见0样本数量远大于1样本数量,此时准确率指标就要受到0样本更大的影响。如果直接把所有样本都预测为0标签,那么准确率为229715/(229715+22871)≈0.91,高于模型给出的准确率。因此,单纯采用准确率指标并不合理。
而平均准确率为:0.530236356498。如果全部预测为0标签,那么对于0样本来说准确率为1,对于1样本来说准确率为0,则平均准确率为0.5,低于随机森林模型预测的平均准确率。

 4.精确率-召回率

精确率-召回率包含两个评价指标,一般同时使用。
精确率是指分类器分类正确(错误)的正样本的个数占该分类器所有分类为正(负)样本个数的比例。
召回率是指分类器分类正确(错误)的正样本个数占所有的正(负)样本个数的比例。
精确率是从预测的角度来看的,即预测为正(负)的样本中,预测成功的比例。召回率是从样本的角度来看的,即标签为正(负)的样本中,被成功预测的比例。准确率也是从样本的角度来看的,即所有样本中,正确预测的比例,即准确率是不分类别的。
在上面的数据示例中,𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛0=216066/(216066+20129)≈0.91,𝑟𝑒𝑐𝑎𝑙𝑙0=216066/(216066+13649)≈0.94。

5. 𝑭𝟏−𝐬𝐜𝐨𝐫𝐞

精确率与召回率实际上是一对矛盾的值,有时候单独采用一个值难以全面衡量算法,𝐹1−score试图将两者结合起来作为一个指标来衡量算法。𝐹1−score为精确率与召回率的调和平均值,即:

𝐹1=(2×𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛×𝑟𝑒𝑐𝑎𝑙𝑙)/(𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑟𝑒𝑐𝑎𝑙𝑙)

6. AUC(Area under the Curve)

ROC是以假正率FPR为横坐标,以真正率TPR为纵坐标的一条曲线,FPR和TPR的取值范围都是[0,1]

从概率论的角度来看,模型关于每个样本的预测都存在一个概率值,好的模型就是要将原本为正类的模型判定为正的概率尽量大,而原本为负类的模型判定为正的概率尽量小。

在实际的数据集中,经常会出现类别不平衡(class imbalance)现象,即负样本比正样本少很多(或者相反),而且测试数据集中的正负样本的分布也可能随时间发生变化。在优惠券核销的例子中,正负样本数量差距很大,但是ROC曲线并不受影响,AUC值会保持比较稳定。

如何来计算AUC值呢?首先分类模型要能给出每个样本的预测概率,如决策树算法和随机森林算法不仅可以输出分类类别,还要能输出分类的概率。然后,统计出每个概率值的正负样本数量,得到样本概率分布。
根据样本概率分布,将阈值从1取到0,由得到的FPR和TPR值对作点画出ROC曲线,计算该曲线下的面积即为AUC值。

 

 

 

 

posted @ 2022-10-21 10:50  老袁1  阅读(485)  评论(0编辑  收藏  举报