模型评价标准
根据任务类型的不同,模型评价指标可被分为三类:分类评价指标,回归评价指标,排序评价指标。
1.1 分类评价指标
1.1.1 准确率(Accuracy)
A c c u r a c y = n c o r r e c t n t o t a l Accuracy=\frac{n_{correct}}{n_{total}} Accuracy=ntotalncorrect
1.1.2 平均准确率(Average Per-class Accuracy)
由于样本不平衡可能性的存在,所以先求每个类别的准确率,再进行平均。
A
v
e
r
a
g
e
P
e
r
−
c
l
a
s
s
A
c
c
u
r
a
c
y
=
∑
i
k
(
n
c
o
r
r
e
c
t
i
n
t
o
t
a
l
i
)
k
Average\ Per-class\ Accuracy=\frac{\sum_i^k\big(\frac{n_{correct}^i}{n_{total}^i}\big)}{k}
Average Per−class Accuracy=k∑ik(ntotalincorrecti)
公式中的
k
k
k表示类别数。
1.1.3 对数损失函数(Log-loss)
当分类任务中的输出不是0-1,而是实数时,即输出属于类别的概率时,可以使用对数损失函数进行结果评估。
L
o
g
−
l
o
s
s
=
1
n
∑
i
n
[
y
i
log
p
i
+
(
1
−
y
i
)
log
(
1
−
p
i
)
]
Log-loss=\frac{1}{n}\sum_i^n[y_i\log p_i+(1-y_i)\log(1-p_i)]
Log−loss=n1i∑n[yilogpi+(1−yi)log(1−pi)]
其中
n
n
n表示样本数,
y
i
y_i
yi表示第
i
i
i个样本所属真实类别0或1,
p
i
p_i
pi表示第
i
i
i个样本属于该类别的概率。
1.1.4 精确率-召回率(Precision-Recall)
精确率表示分类器分类正确的正样本数占分类器所有分类为正样本的样本数的百分比,公式如下:
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP
其中,
T
P
TP
TP表示真实类别为正且被分类为正的样本数,
T
N
TN
TN表示真实类别为负但被错误分类为正的样本数。
召回率表示分类器分类正确的正样本数占任务中所有正样本数的百分比,公式如下:
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP
其中,
F
P
FP
FP表示真实类别为正但被错误分类为负的样本数。
- F1-score:
F 1 = 2 × P × R P + R F1=\frac{2\times P\times R}{P + R} F1=P+R2×P×R - AUC(Area under the curve):
AUC即ROC曲线下的面积,TP率表示被正确分类的正样本占所有正样本的百分比 T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP,FP率表示被错误分类的负样本数占所有负样本的百分比 F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP,换句话说,TP率是正样本的正确率,FP率是负样本的错误率。(1,1)和(0,0)是极端情况,即保证正确率为1时将所有样本划分为正样本。
当使用ROC曲线对分类器进行评价时,如果对多个分类器进行比较时,如果直接使用ROC曲线很难去比较,只能通过将ROC分别画出来,然后进行肉眼比较,那么这种方法是非常不便的,因此我们需要一种定量的指标去比较,这个指标便是AUC了,即ROC曲线下的面积,面积越大,分类器的效果越好,AUC的值介于0.5到1.0之间。
1.1.5 混淆矩阵
混淆矩阵即用一个表格对分类任务中的不同情况进行记录,表格的第一列(第一行)表示样本的真实类别,表格第一行(第一列)则表示样本被预测的类别。,其余部分则是在不同情况下的样本数。2分类任务对应
2
×
2
2\times2
2×2矩阵,n分类任务对应
n
×
n
n\times n
n×n矩阵,具体见下图:
由混淆矩阵可以算出如下评价指标:
- 准确率: A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy=\frac{TP+TN}{TP+FP+TN+FN} Accuracy=TP+FP+TN+FNTP+TN
- 平均准确率: A v e r a g e P e r − c l a s s A c c u r a c y = T P T P + F P + T N T N + F N 2 Average\ Per-class\ Accuracy=\frac{\frac{TP}{TP+FP}+\frac{TN}{TN+FN}}{2} Average Per−class Accuracy=2TP+FPTP+TN+FNTN
- 精确率: P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
- 召回率: R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
- F1-score
- TPR与FPR
1.2 回归评价指标
1.2.1 均方根误差(RMSE)
R
M
S
E
=
∑
i
=
0
n
(
y
i
−
y
^
i
)
n
RMSE=\sqrt{\frac{\sum_{i=0}^n(y_i-\widehat y_i)}{n}}
RMSE=n∑i=0n(yi−y
i)
其中
y
i
y_i
yi表示样本的实际值,
y
^
i
\widehat y_i
y
i表示样本的预测值,
n
n
n表示样本数。
均方根误差的缺陷在于它对异常点非常敏感,是非鲁棒性的。
1.2.2 相对误差的分位数(MAPE)
此处选用中位数为分位数,中位数无论最大值怎么变都不会被影响,对异常点具有鲁棒性。
平均绝对百分比误差的公式为:
M
A
P
E
=
y
i
−
y
^
i
y
i
MAPE=\frac {y_i-\widehat y_i}{y_i}
MAPE=yiyi−y
i
求出所有样本的
M
A
P
E
MAPE
MAPE,然后求出这些
M
A
P
E
MAPE
MAPE的中位数。
1.2.3 “Almost correct” Predictions
先设定一个阈值,求出每个样本的相对误差,剔除大于阈值的样本;然后计算剩余样本的均方根误差或相对误差的分位数。
1.3 排序评价指标
1.3.1 精确率-召回率(Precision-Recall)
准确率:求出推荐系统推荐的top n项目中真正令用户感兴趣的项目个数占推荐项目数的百分比,将所有用户的该百分比求和再平均;
召回率:先求推荐系统推荐的top n项目中真正令用户感兴趣的项目个数占用户感兴趣的所有项目数的百分比,再将所有用户的该百分比求和再平均;
- F1-score:公式同上;
- NDCG:计算精确率与召回率时,考虑不同位置的项目具有不同的权值。
1.4 参考
机器学习模型评价(Evaluating Machine Learning Models)-主要概念与陷阱
分类 (Classification):ROC 和曲线下面积