机器学习 扬帆起航003-02ROC与AUC详解

如有问题欢迎交流

1.ROC与AUC评价

前面对ROC和AUC简单有了了解,只知道了他是用来评价学习器优劣的指标,这里来更详细记录下具体意义和求法。

在这里插入图片描述

图中曲线为ROC曲线,曲线下的面积的具体数值为AUC指标。

α越接近α0,分类器性能越好,当ROC曲线降到红线以下时,说明用这个分类器分,我还不如瞎分(瞎分二分类按正确率0.5算的话)

学习器A
评价
学习器B
ROC指标
如果A与B的ROC曲线无交点
如果A与B的ROC曲线有交点
AUC值大的性能好
能完全覆盖另一个的性能好

2.AUC值求取案例(理解原理)

样例x5x2x7x4x1x6x3x8x9
y_true-+--+-++-
P(+)0.90.80.70.60.50.40.30.20.1

P(+):预测为+的概率

PS:使用这个表时,需要按照概率首先将样例重新排列。

求解:

第一次:

-+--+-++-
1测---------

TPR=0/4=0 FPR=0/5=0 (公式自行查询)

第二次:

-+--+-++-
2测+--------

TPR=0/4=0 FPR=1/5=0.2

循环…直到测试全为+的时候停

第n次:

-+--+-++-
n测+++++++++

TPR=4/4=1 FPR=5/5=1

根据以上TPR和FPR分别作为xy轴 画图得到:

在这里插入图片描述

具体面积的值就是AUC啦。

3.四种求AUC方法

3.1 定义法

类似求定积分,将阴影面积拆成一个一个的长方形,求每一块的面积,然后求和。

3.2 排序损失法

AUC是样本预测的排序质量的一种判断标准,因此与排序误差紧密联系。比如给了m+个正例和m-个负例,D+D-分别表示正反例集合,那么排造成的Loss为:
l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I I ( f ( x + ) < f ( x − ) ) + 1 2 I I ( f ( x + ) = f ( x − ) ) ) l^{rank}=\frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}(II(f(x^+)<f(x^-))+\frac{1}{2}II(f(x^+)=f(x^-))) lrank=m+m1x+D+xD(II(f(x+)<f(x))+21II(f(x+)=f(x)))
乍一看,看不懂,说人话就是,看这个表:

样例x5x2x7x4x1x6x3x8x9
y_true-+--+-++-
P(+)0.90.80.70.60.50.40.30.20.1

+:x2,x1,x3,x8 四个

-:x5,x7,x4,x6,x9 五个

第一次取x2和x5 => 0.9>0.8 => 记罚分 1.0

第二次取x2和x7 => 0.8<0.7 => 记罚分 0.0

第三次取x2和x4…

记录4*5=20次罚分求和/20得到Loss值。

最后:
A U C = 1 − l r a n k AUC = 1-l^{rank} AUC=1lrank

3.3 排序收益法

和排序损失法对应,不过不是记录罚分,而是计算收益,最后的公式为
l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I I ( f ( x + ) > f ( x − ) ) + 1 2 I I ( f ( x + ) = f ( x − ) ) ) l^{rank}=\frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}(II(f(x^+)>f(x^-))+\frac{1}{2}II(f(x^+)=f(x^-))) lrank=m+m1x+D+xD(II(f(x+)>f(x))+21II(f(x+)=f(x)))

A U C = l r a n k AUC = l^{rank} AUC=lrank

3.4 排序法

理解了上面几个方法,这个就直接看公式理解吧:
A U C = ∑ i = 1 n 0 r i − n 0 ( n 0 + 1 ) / 2 n 0 n 1 AUC=\frac{\sum_{i=1}^{n_0}{r_i-n_0(n_0+1)/2}}{n_0n_1} AUC=n0n1i=1n0rin0(n0+1)/2
n0,n1分别为负例正例样本个数。

ri表示按照概率大到小排序后第r个位置。

还不懂的话,直接看个例子吧:

IDLabelP(+|x)rank
X4+0.81
X2-0.42
X3+0.33
X1-0.14

A U C = 2 + 4 − 2 ∗ ( 2 + 1 ) / 2 2 ∗ 2 = 3 4 = 0.75 AUC=\frac{2+4-2*(2+1)/2}{2*2}=\frac{3}{4}=0.75 AUC=222+42(2+1)/2=43=0.75

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值