一个算法的好坏需要有一个标准去评价,也是我们所有工作成果最后展示时最关键直观的方式。搞懂诸如ROC、AUC、精确率、召回率等常用的机器学习指标为我们后续数据科学之路、文献阅读、
人工智能之路打下坚实基础。
一、回归任务
回归和分类的联系与区别:输入变量与输出变量均为连续变量的预测问题是回归问题;输出变量为有限个离散变量的预测问题为分类问题;输入变量与输出变量均为变量序列的预测问题为标注问题。——摘自李航《统计学习方法》
总的来说也就是定量还是定性的问题。
回归任务的评价指标衡量的是模型预测数值和标签提供数值之间的差距。对于评价指标本身的优劣并不好做判断,所以大多数情况需要根据实际任务选取合适的或者多个指标做具体分析。
常用的指标如下:
1.MAE(Mean Absolute Error)平均绝对误差
M
A
E
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
MAE(y, \hat y) = \frac{1}{n} \sum_{i=1}^{n} \left| y_i - \hat y_i \right|
MAE(y,y^)=n1i=1∑n∣yi−y^i∣
对残差绝对值求平均
2.MSE(Mean Squared Error)均方误差
M
S
E
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
∣
∣
y
i
−
y
^
i
∣
∣
2
2
MSE \left( y, \hat y \right) = \frac{1}{n} \sum _{i=1}^{n} \left|\left| y_i - \hat y_i \right|\right|_{2}^{2}
MSE(y,y^)=n1i=1∑n∣∣yi−y^i∣∣22
误差的平方的期望
3.RMES(Root Mean Squared Error)均方根误差
M
S
E
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
∣
∣
y
i
−
y
^
i
∣
∣
2
2
MSE \left( y, \hat y \right) = \sqrt{\frac{1}{n} \sum _{i=1}^{n} \left|\left| y_i - \hat y_i \right|\right|_{2}^{2}}
MSE(y,y^)=n1i=1∑n∣∣yi−y^i∣∣22
对均方误差MSE开平方
二、分类任务
1.TP,TN,FN,FP
- TP(True Positive)真正例:被模型预测为正的正样本;
- FP(False Positive)假正例:被模型预测为正的负样本;
- FN(False Negative)假负例:被模型预测为负的正样本;
- TN(True Negative)真负例:被模型预测为负的负样本。
T开头的说明分类是正确的。
2.ACC(Accuracy)精确度
在精确度中,ACC是最直觉的一种方式:
a c c = r i g h t a l l acc = \frac{right}{all} acc=allright
在所有样本中预测正确的与全体样本的比值,很直观也很容易想到,但是特别受样本不均衡和样本数量的影响,比如在训练或者测试过程中经常人为的划分故障(负样本)和正常数据(正样本)的数量,有可能故障数据过多或者正常数据太多。
3.Precision准确率
在所有判断为正例的例子中,真正的正例有多少,又被称为查准率:
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
precision = \frac{TP}{TP + FP}
precision=TP+FPTP
4.Recall召回率
在样本中的所有真正的正样本里,有多少比率是预测对了,又被称为查全率:
r
e
c
a
l
l
=
T
P
T
P
+
F
N
recall = \frac{TP}{TP + FN}
recall=TP+FNTP
Tradeoff 会让准确率和召回率顾此失彼。
Precision和Recall是两个很容易混淆的概念。通过这样一个场景来区分:现在有一批需要检测的零件,如果知道标签,那么这一批零件的实际标签为合格(正样本)和不合格(负样本)。现在根据我们之前训练出来的机器学习算法对这一批零件进行分类,分类结果也有两种,即合格和不合格。如果我们关注分类结果为合格的样本,要计算分类结果为合格的样本中真正合格的指标就是Precision准确率。公式如上。
如果我们关注真正的,即实际的标签。换句话说,虽然机器学习已经筛选出来了合格的零件,但是理论上还有一部分标签为合格的零件被遗漏了,我们需要将这些被遗漏的正样本(标签为合格的零件)捡回来,那么这个行为就叫做找回。即召回率表示正样本预测正确的样本数与所有标签为正样本的数量的比值。
5.F1-Score(Precision和Recall的综合平均[调和平均数])
F 1 = 2 1 p r e c i s i o n + 1 r e c a l l F_1 = \frac {2} {\frac{1}{precision} + \frac{1}{recall}} F1=precision1+recall12
一般的:
F β = ( 1 + β 2 ) p r e c i s i o n ⋅ r e c a l l β 2 ⋅ p r e c i s i o n + r e c a l l F_\beta =\left( 1 + \beta^2 \right) \frac {precision \cdot recall} {\beta^2 \cdot precision + recall} Fβ=(1+β2)β2⋅precision+recallprecision⋅recall
这是F-Score分数的一般表达式,当 β = 1 \beta=1 β=1时称为F1分数。
6.P-R曲线
即上面提到的tradeoff曲线。若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。
这里可以知道的是,P(精确率)与R(召回率)是此消彼长的,也就是说,一个高一个就会低。所有对于一个综合的评价指标来说,可以很直觉的想到,将两个参数做加权调和平均数。这样就成为了F1。
7.ROC(Receiver Operating Characteristic Cuver)受试者工作特征曲线
对于某个二分类分类器来说,输出结果标签(0还是1)往往取决于输出的概率以及预定的概率阈值,比如常见的阈值就是0.5,大于0.5的认为是正样本,小于0.5的认为是负样本。如果增大这个阈值,预测错误(针对正样本而言,即指预测是正样本但是预测错误,下同)的概率就会降低但是随之而来的就是预测正确的概率也降低;如果减小这个阈值,那么预测正确的概率会升高但是同时预测错误的概率也会升高。实际上,这种阈值的选取也一定程度上反映了分类器的分类能力。我们当然希望无论选取多大的阈值,分类都能尽可能地正确,也就是希望该分类器的分类能力越强越好,一定程度上可以理解成一种鲁棒能力
在测试样本中正负样本分布不一样的,ROC曲线可以保持不变。曲线图如下:
ROC这个优势的来自于灵敏度/真阳率(TPR,specificity or true negative ratesensitivity, recall, hit rate, or true positive rate)和特异度/真负率(TNR,specificity or true negative rate)这两个评价标准,本质上对应的分别是正样本的召回率和负样本的召回率:
T
P
R
=
T
P
T
P
+
F
N
TPR = \frac {TP} {TP + FN}
TPR=TP+FNTP
T N R = T N T N + F P TNR = \frac {TN} {TN + FP} TNR=TN+FPTN
计算ROC除了上面两个指标外,还有假负率和假正率。但是这两个指标的计算很简单。假负率 = (1-灵敏度);假正率=(1-特异度)
可以理解为,如果一个验证的数据是不均衡的,那么这个在分类的时候,准确率会考虑到不均衡的所有数据。但是如果是灵敏度和特异度,它只会考虑到正例或者负例,不考虑整体的数据分布。
两个模型用这个指标做评价的时候,如果一个模型A可以包裹住另一个模型B,那么这个模型A就优于模型B。如果A和B两个模型有交叉,那么这个就看它们曲线下的面积大了,面积大的模型性能更优。
8.AUC指标
8.1 AUC指标的定义
- AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好;
- AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器;
- 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值;
- AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值;
- AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
8.2 AUC值的物理意义
假设分类器的输出是样本属于正类的socre(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。
8.3 AUC值的计算
- 第一种方法:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积之和,计算的精度与阈值的精度有关;
- 第二种方法:根据AUC的物理意义,我们计算正样本score大于负样本的score的概率。取NM(N为正样本数,M为负样本数)个二元组,比较score,最后得到AUC。时间复杂度为O(NM);
- 第三种方法:与第二种方法相似,直接计算正样本score大于负样本的score的概率。我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n(n=N+M),其次为n-1。那么对于正样本中rank最大的样本(rank_max),有M-1个其他正样本比他score小,那么就有(rank_max-1)-(M-1)个负样本比他score小。其次为(rank_second-1)-(M-2)。最后我们得到正样本大于负样本的概率为:
∑
所
有
正
样
本
r
a
n
k
−
M
(
M
+
1
)
2
M
⋅
N
\frac {\sum _{所有正样本}rank-\frac{M \left(M+1 \right)} {2}} {M \cdot N}
M⋅N∑所有正样本rank−2M(M+1)
时间复杂度为O(N+M)。