机器学习之ROC曲线

在机器学习中评价分类模型时经常会用到ROC曲线。
要学习ROC曲线首先得知道什么是TPR,什么是FPR。
TPR的英文全称为:True Positive Rate
FPR的英文全称为:False Positive Rate
中文解释为:
TPR(真正例率):真实值是正例,且预测为正例的比例
FPR(假正例率):真实值为负例,而预测为正例的比例
怎么感觉有些绕口令啊?
OK,看下图:
机器学习之ROC曲线_01.png
根据上图图示我们可以看到,真实的情况和预测的情况把整体分成了4个部分:
A部分:真实为正例,预测为正例
B部分:真实为正例,预测为负例
C部分:真实为负例,预测为正例
D部分:真实为负例,预测为负例

TPR = #(A) / #(A) + #(B)
FPR = #© / #© + #(D)

问:什么是正例,什么是负例?
这个是你自己设定的,比如说我们定义是美女就是正例,是如花就是负例
于是上文就变成了:
机器学习之ROC曲线_02.png

ROC曲线就是以TPR为Y轴,以FPR为X轴,然后以一个对不同的预测值进行分类.
当取不同阈值时会得到不同的TPR和FPR,对应于ROC曲线上的一个点。
那么ROC曲线就反映了FPR与TPR之间动态关系的情况。
通俗地来说,即在TPR随着FPR递增的情况下,谁增长得更快,快多少的问题。
TPR增长得越快,曲线越往上曲,反映了模型的分类性能就越好。
当正负样本不平衡时,这种模型评价方式比起一般的精确度评价方式 的好处尤其显著。

问:阈值到底是什么?是一个固定的值吗?比如说美女的比例
阈值不是一个固定的值,它是你随意指定的。先不要纠结于阈值是什么,下文看家ROC曲线是怎么画的你就知道它是什么了(其实什么都不是)

画ROC
下面举个例子吧:
公司来了10个同事,全都是姑娘,但是美不美不知道。早已磨刀霍霍的兄弟们开始八卦:到底有几位美女
同事A:有9位美女
同事B:有8位美女
同事C:有7位美女
同事D:有3位不美女
同事E:有2位不美女
同事F:有1位不美女
机器学习之ROC曲线_03.png
于是我们得到下面的概率矩阵:

分类概率
美女(正例)0.9
美女(正例)0.8
美女(正例)0.7
不是美女(负例)0.3
不是美女(负例)0.2
不是美女(负例)0.1

ROC曲线的X轴和Y轴取值范围都是[0,1],现在我们开始画图——根据从大到小遍历预测值,把当前的预测值当做阈值,计算FPR和TPR。

step1:选择阈值最大,即为1,正例中和反例中都没有预测值大于等于1的,所以FPR=TPR=0。

step2:根据上表,选择阈值为0.9,正例中有1个样本的预测值大于等于1,反例中有0个,所以,TPR=1/3,FPR=0。

step3:根据上表,选择阈值为0.8,正例中有2个样本的预测值大于等于1,反例中有0个,所以,TPR=2/3,FPR=0。

step4:根据上表,选择阈值为0.7,正例中有3个样本的预测值大于等于1,反例中有0个,所以,TPR=1,FPR=0。

step5:根据上表,选择阈值为0.3,正例中有3个样本的预测值大于等于1,反例中有1个,所以,TPR=1,FPR=1/3。

step6:根据上表,选择阈值为0.2,正例中有3个样本的预测值大于等于1,反例中有2个,所以,TPR=1,FPR=2/3。

step7:根据上表,选择阈值为0.1,正例中有3个样本的预测值大于等于1,反例中有3个,所以,TPR=1,FPR=1。

综上,我们得到下表

TPRFPR
01/3
02/3
01
1/31
2/31
11

描点连线,画图如下:
机器学习之ROC曲线_04.png

OK明白了吗?在这里阈值是随意设的,设一个阈值以后会得到一组TPR和FPR;然后换个阈值再得到另外一组TPR和FPR,然后描点成线。
当然这里只是取了一种最特殊的情况。真实情况一般是这样的:
机器学习之ROC曲线_05.png

其中:
(0,0)表示:FPR=0,TPR=0。没有负样本预测错误(也就是负样本全部预测正确),正样本全部预测错误。这说明把全部样本都预测为了负样本。

(1,1)表示:FPR=1,TPR=1。负样本全部预测错误,正样本全部预测正确。这说明把全部样本都预测为了正样本。

(0,1)表示:FPR=0,TPR=1。负样本全部预测正确,正样本全部预测正确。这个模型很完美。

(1,0) 表示:FPR=1,TPR=0。负样本全部预测错误,正样本全部预测错误。这个模型太烂了。

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值