机器学习常用评价指标:ACC、AUC、ROC曲线

文章目录

  • 一、混淆矩阵
  • 二、评价指标
    • 1.准确度(Accuracy)
    • 2.AUC
      • ROC曲线
      • 举例
      • 如何画ROC曲线
      • AUC的计算
      • AUC意味着什么
      • 为什么使用ROC曲线
    • 参考


一、混淆矩阵

机器学习常用评价指标:ACC、AUC、ROC曲线_第1张图片

基于样本预测值和真实值是否相符,可得到4种结果:
TP(True Positive):样本预测值与真实值相符且均为正,即真阳性
FP(False Positive):样本预测值为正而真实值为负,即假阳性
FN(False Negative):样本预测值为负而真实值为正,即假阴性
TN(True Negative):样本预测值与真实值相符且均为负,即真阴性

通俗解释:以预测值是否与真实值相符,判别真假;

二、评价指标

1.准确度(Accuracy)

A C C = T P + T N T P + F P + F N + T N ACC=\frac{TP+TN }{TP+FP+FN+TN} ACC=TP+FP+FN+TNTP+TN

2.AUC

ROC曲线

这里我们讨论的是二值分类器,ROC曲线示例图如下:
机器学习常用评价指标:ACC、AUC、ROC曲线_第2张图片
正如我们在这个ROC曲线的示例图中看到的那样,ROC曲线的横坐标为FPR(False Positive Rate), 纵坐标为TPR(True Positive Rate)
F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP
通俗解释:FPR表示负样本分错的概率;TPR表示正样本分对的概率

举例

假设我们有100个样本,其中真实的正样本90个,负样本10个;现在我们有分类器A和分类器B
分类器A的预测结果:

真实正 真实负
预测正 90 10
预测负 0 0

FPR=10/10=1; TPR=90/90=1
分类器B的预测结果:

真实正 真实负
预测正 70 5
预测负 20 5

FPR=5/10=0.5; TPR=70/90=0.78
将分类器A和分类器B的预测结果在ROC曲线表示如下
机器学习常用评价指标:ACC、AUC、ROC曲线_第3张图片

接下来我们考虑ROC曲线图中的四个点和一条线。
第一个点(0,1),即FPR(False Positive Rate)=0,TPR(True Positive Rate)=1;这是一个完美的分类器,负样本分错的概率为0,正样本分对的概率为1,即所有的样本预测值与真实值相符。
第二个点(1,0),即FPR(False Positive Rate)=1,TPR(True Positive Rate)=0;
这是一个最糟糕的分类器,负样本分错的概率为1,正样本分对的概率为0,即所有的样本预测值与真实值都不相符。
第三个点(0,0),即FPR(False Positive Rate)=0,TPR(True Positive Rate)=0;
负样本分错的概率为0,正样本分对的概率为0,即所有的样本预测值均为负。
第四个点(1,1),即FPR(False Positive Rate)=1,TPR(True Positive Rate)=1;
负样本分错的概率为1,正样本分对的概率为1,即所有的样本预测值均为正
经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好
考虑ROC曲线图中的虚线y=x上的点。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器的结果,例如(0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本,另外一半的样本为负样本。

如何画ROC曲线

对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR;而要得到一个曲线,我们实际上需要一系列的FPR和TPR的值,这又是如何得到的呢?
我们可以利用sigmoid函数计算样本预测输出为正的概率,然后根据设置不同的threshold,来获得多组FPR和TPR的值
假如我们利用sigmoid函数,已经得到了所有样本输出为正的概率,现在的问题是如何改变threshold,我们可以将所有样本输出为正的概率由大到小排序;下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本输出正样本的概率

机器学习常用评价指标:ACC、AUC、ROC曲线_第4张图片
接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本输出正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。
例如:对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。
此时,FPR=1/10=0.1;TPR=3/10=0.3
依次类似,每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:
机器学习常用评价指标:ACC、AUC、ROC曲线_第5张图片
当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。

AUC的计算

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

AUC意味着什么

那么AUC值的含义是什么呢?根据(Fawcett, 2006),AUC的值的含义是: > The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.
通俗解释:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

为什么使用ROC曲线

既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:
机器学习常用评价指标:ACC、AUC、ROC曲线_第6张图片
在上图中,(a)和©为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,©和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

参考

1.https://blog.csdn.net/qq_40006058/article/details/89432773
2.https://blog.csdn.net/u013385925/article/details/80385873
3.https://my.oschina.net/liangtee/blog/340317

你可能感兴趣的:(推荐系统经典模型,机器学习)