机器学习——周志华,学习笔记
1.查准率查全率与F1
首先我们考虑一个二分类问题,可以根据真实类别与预测类别分为:真正例、假正例、真反例、假反例。我们建立如下图所示的表格:
查准率是这样定义的:
P
=
T
P
T
P
+
F
P
P = \frac{TP}{TP+FP}
P=TP+FPTP
查全率是这样定义的:
R
=
T
P
T
P
+
F
N
R = \frac{TP}{TP+FN}
R=TP+FNTP
查准率和查全率是一组相互矛盾的变量,差准率关注的是查出的正例有多少是真正的正例,是保守派;而查全率关心的是正例是不是都被查出来了,是激进派。
这里以查全率为横轴,查准率为纵轴建立一个图,如下如所示。
观察图像我们可以判断一个学习器的好坏:
- 如果一个学习器的PR曲线完全包含着另一个学习器的PR曲线,可以说前一个学习器更好。例如学习器A优于学习器C.
- 比较PR曲线包含的面积,面积越大性能越好,但是面积不容易估算
- 找平衡点BEP,就是与曲线 y = x y=x y=x的交点,越高性能越好。
- 当然最常用的还是F1度量
F 1 = 2 × P × R P + R F1 = \frac{2\times P \times R}{P+R} F1=P+R2×P×R
2.ROC与AUC
ROC全称是受试工作者特征。ROC曲线与PR曲线生成的方法类似,只是横纵坐标的轴的定义会有变化。
ROC的纵轴是“真正例率”TPR与查全率定义一样:
T
P
R
=
T
P
T
P
+
F
N
TPR = \frac{TP}{TP+FN}
TPR=TP+FNTP
横轴是假正例率FPR:
F
P
R
=
F
P
T
N
+
F
P
FPR = \frac{FP}{TN+FP}
FPR=TN+FPFP
做出ROC曲线。
根ROC曲线评判学习器:
- 如果一个学习器的曲线包含主另一个学习器的曲线,那么可以说前一个学习器性能更好
- 如果曲线出现交叉,就计算曲线包含的面即AUC。
3.代价敏感错误率和代价曲线。
在二分类问题中,出现错误分类有两种情况,就是将实际的正例错分类为反例,另一种是将实际的反例错分为正例。这两种情况在实际情况中产生的代价往往是不同的。
例如,检查一个病人是否患癌,如果病人没病,检查为阳性,那么就会产生多检查一次的麻烦;如果病人有病,却检查为阴性,那么就会错过最佳治疗时间,代价很大。
下面是二分类代价矩阵。
我们可以做出代价曲线来评估学习器的总体期望代价。
代价曲线的横轴是正例概率代价计算公式为:
P
(
+
)
c
o
s
t
=
p
×
c
o
s
t
01
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
10
P(+)cost = \frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}
P(+)cost=p×cost01+(1−p)×cost10p×cost01
其中p是样例为正例的概率。
纵轴是取值为[0,1]的归一化代价。
c
o
s
t
n
o
r
m
=
F
N
R
×
p
×
c
o
s
t
01
+
F
P
R
×
(
1
−
p
)
×
c
o
s
t
10
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
10
cost_{norm} = \frac{FNR\times p \times cost_{01} + FPR\times (1-p) \times cost_{10}}{p\times cost_{01} + (1-p)\times cost_{10}}
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
其中FPR是假反例率,
F
N
R
=
1
−
T
P
R
=
F
N
T
P
+
F
N
FNR = 1 -TPR = \frac{FN}{TP+FN}
FNR=1−TPR=TP+FNFN是假反例率。
代价曲线的绘制方法:
- ROC曲线的每一个点代表的代价平面上的一条线段,
- 这ROC曲线的一个点上的坐标是(FPR, TPR),计算出相应的FNR,
- 然后在代价平面做出一条(0,FPR)到(1,FNR)的线段。
- 将ROC曲线的每一个点转换成代价平面的一条线段,然后取所有线段的下界,围成的面积就是期望总体代价。如下图所示。