机器学习之模型评估指标学习笔记

前段时间工作中发现自己对模型评估指标中的AUC有点忘了,因此打算重新看一下然后写个博客记录一下。

混淆矩阵和查全率,查准率

首先简单介绍一下混淆矩阵,查全率(也叫做召回率,recall)和查准率(也叫做精确率,precesion)。
在进行模型评估的时候,单单使用准确率accuracy(预测正确样本数/总样本数)有时候并不能很好的对模型进行评估。比如,在对日活或月活用户预测其购买商品概率并将比较有可能购买的用户找出来给销售打电话的时候,由于在实际样本集合中,可能购买的用户(即正样本)的人数会比较少,比如100个日活用户中只有5个用户会购买,这时候如果仅仅是追求准确率的话,那么简单粗暴的把阈值设的很高,使所有用户都预测为负样本(即不购买的用户),此时的准确率为95%,但是这种结果却不是我们想要的。此时召回率或精确率可能是比较好的评估指标。
在介绍召回率和精确率之前,首先了解一下混淆矩阵。
在二分类问题中,我们可以将样本根据实际类别和模型预测类别的组合划分为真正例(true positive),假正例(false position),真反例(true negative)以及假反例(false negative),其个数分别即为TP,FP,TN,FN。于是就可以写出如下混淆矩阵:

预测为正例 预测为反例
实际为正例 TP FN
实际为反例 FP TN

由上述混淆矩阵就可以得出召回率和精确率 r e c a l l = T P T P + F N 召回率(recall)=\frac{TP}{TP+FN} p r e c i s i o n = T P T P + F P 精确率(precision)=\frac{TP}{TP+FP} 在上述例子中,如果简单粗暴的将所有例子都判定为反例,那么其准确率或许可以达到95%,但是召回率和精确率就都是0%了。但是,当我们把阈值设的很低,将所有样本都预测为正样本的时候,此时召回率达到100%,但是精确率却只有5%,当我们仅仅取最有把握的预测样本最为正例的时候,此时精确率高了,但召回率有不理想了。
因此,在模型得出预测结果之后,阈值怎么设对模型最终的评估结果很有影响。那么,是否有这样一种模型的评估指标,不论阈值怎么设都跟指标的最终结果无关呢?AUC就是这样的评估指标。

ROC曲线和AUC

在上述的例子中,实际上只要在模型的预测结果中,所有的正样本的预测结果都大于负样本的预测结果,那么我们总是能够找到一个阈值,使得不论是准确率,召回率还是精确率都是100%。此时也就是要求预测结果的排序质量很好,即所有的正样本都排在前面,所有的负样本都排在后面。 AUC,正是考虑样本预测的排序质量。
在介绍AUC之前,首先了解一下ROC曲线。
当我们用一个模型对所有样本做出预测之后,将所有样本按照预测概率进行排序。首先我们将阈值设置为最大,即将所有的样本均预测为反例,计算真正例率(TPR)和假正例率(FPR) T P R = T P T P + F N TPR=\frac{TP}{TP+FN} F P R = F P T N + F P FPR=\frac{FP}{TN+FP} 于是得到 ( T P R 1 , F P R 1 ) (TPR_{1}, FPR_{1}) 。然后将阈值从大到小依次设置为每一个样本的预测值,并计算 ( T P R i , F P R i ) (TPR_{i}, FPR_{i}) 。最终得到一组数对 ( T P R I , F P R I ) (TPR_{I}, FPR_{I}) 。然后,将得到的这一系列数对绘制在以真正例率为纵轴,假正例率为横轴的坐标系中,得到
在这里插入图片描述
当ROC这条曲线下所包含的面积越大,就表示模型预测出来的结果排序质量越高,而ROC这条曲线下所包含的面积,就是AUC值。因此,我们可以使用AUC值来刻画模型预测的排序质量。
除了上述案例之外,推荐场景也是比较看重AUC指标。比如,当我们拿到一个用户的用户画像之后,推测出用户喜好什么,更愿意买什么,在我们的仓库中可能有1000个商品都可以推荐给这个用户,但是我们有不能把1000个商品都推荐给用户,这样用户眼睛都看花掉。因此我们需要挑选排序中用户最优可能购买的10件商品推荐给用户,如果这10件不行,那就换下一个10件。在这种场景下,对预测结果的排序质量就比较高了,因此对AUC值也就比较看重。

猜你喜欢

转载自blog.csdn.net/bingo_csdn_/article/details/89787968