文章目录
偏斜类
正类和负类的比例失衡,比如存在99%的正类和1%的负类,当算法的输出恒为1时,此时的错误率也只有1%。在这种情况下,并不能够很好地估计模型的泛化能力。
评估指标
定义
- TP(True Positive),表示模型预测为正样本,实际上为正样本。
- FP(False Positive),表示模型预测为正样本,实际上为负样本。
- FN(False Negative),表示模型预测为负样本,实际上为正样本
- TN(True Negative),表示模型预测为负样本,实际上为负样本。
准确率(Accuracy)
准确率表示模型预测正确的正样本和负样本占所有样本的比例。公式为
a
c
c
=
T
P
+
T
N
T
P
+
F
P
+
F
N
+
T
N
acc=\frac{TP+TN}{TP+FP+FN+TN}
acc=TP+FP+FN+TNTP+TN
当不同类别的样本比例非常不均匀时,占比大的类别往往成为影响准确率的主要因素。
精确率(Precision)
精确率表示模型预测正确的正样本占所有预测正样本的比例。公式为 p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP
召回率(Recall)
召回率表示模型预测正确的正样本占所有实际正样本的比例。公式为
r
e
c
a
l
l
=
T
P
T
P
+
F
N
recall=\frac{TP}{TP+FN}
recall=TP+FNTP
精确率和召回率是一对矛盾统一的指标,当我们提高分类阈值时,精确率往往会上升,但是会因为阈值过高而漏掉很多没有把握的正样本,导致召回率降低。
PR曲线
可以使用PR曲线来比较精确率和召回率。在PR曲线中,横轴是召回率,纵轴是精确率,整条PR曲线通过将阈值从高到低移动形成,如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者。
F 1 F_1 F1Score(F score)
F1 score是精确率和召回率的调和平均值,定义 F 1 = 2 P R P + R F_1=2\frac{PR}{P+R} F1=2P+RPR,当精确率接近0,或者召回率接近0时,都会得到一个很低的F值。当精确率为1,召回率也为1时,F值为1。因此F值可以用来为我们选择一个较好的临界值。
平均绝对误差MAE
MAE是绝对误差的平均值,能够反映预测值误差的真实情况,公式如下
M
A
E
=
1
n
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
MAE=\frac{1}{n}\sum_{i=1}^n|y_i-\hat y_i|
MAE=n1i=1∑n∣yi−y^i∣
平方根误差RMSE
RMSE是观测值与真值偏差的平方和与观测次数n比值的平方根,用来衡量观测值同真值之间的偏差,公式如下
R
M
S
E
=
1
n
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^n(y_i-\hat y_i)^2}
RMSE=n1i=1∑n(yi−y^i)2
一般情况下RMSE能够很好地反映回归模型预测值与真实值的偏离程度,但如果存在个别偏离程度非常大的离群点,即使数量很少,也会使RMSE指标变得很差。可以考虑把这些离群点过滤掉,或者在建模的时候把离群点的机制建模进去,或者是使用下面提到的MAPE指标。
平均绝对百分比误差MAPE
相比RMSE,MAPE把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
M
A
P
E
=
∑
i
=
1
n
∣
y
i
−
y
^
i
y
i
∣
×
100
n
MAPE=\sum_{i=1}^n|\frac{y_i-\hat y_i}{y_i}|\times \frac{100}{n}
MAPE=i=1∑n∣yiyi−y^i∣×n100
ROC曲线
ROC曲线的横坐标为假阳性率FPR,纵坐标为真阳性率TPR,其计算公式如下:
F
P
R
=
F
P
N
FPR=\frac{FP}{N}
FPR=NFP
T
P
R
=
T
P
P
TPR=\frac{TP}{P}
TPR=PTP
ROC曲线通过不断移动区分正负预测结果的阈值来生成,从正无穷点开始,模型将全部样本预测为负例,FPR和TPR为0,此时对应的坐标是
(
0
,
0
)
(0,0)
(0,0)。截断点逐渐调整到最低得分,每个截断点对应一个FPR和TPR,连接这些点得到ROC曲线。
得到ROC曲线后,我们用ROC曲线下的面积大小来衡量模型性能。这个值被称为AUC,计算AUC只需要沿着ROC横轴做积分就可以了。
ROC和PR的区别
**在正负样本的分布发生变化的情况下,ROC曲线基本不变,PR曲线一般会发生剧烈变化。**这个特点使ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。因此ROC也能够适应偏斜类带来的问题,适用的场景更多。
如果希望更多看到模型在特定数据集上的表现,PR曲线则能够更直观地反映其性能。
分类阈值
通常我们将模型预测输出大于等于0.5的预测为正样本,小于0.5的预测为负样本。假设我们的模型是在预测病人是否患癌症
如果我们想要较高的精确率,可以将阈值调高,保证我们的模型能够较为准确地找出患癌的人,并且不会将没患癌症的人识别为患癌,但是相对的,此时的召回率会更低。
如果我们想要较高的精确率,可以将阈值调低,保证我们能够找出更多实际患病的人,但是此时被误判为患癌的正常人可能更多,也就是精确率会下降。
总结
在模型预测恒为0的情况下,精确率和召回率都为0,因此能够说明此时模型的表现并不是很好。对样本失衡的情况,利用召回率和精确率,能够较好地评估模型的好与坏。同时利用F值,我们可以挑选出合适的临界值来使得模型表现更好。