第9章:模型评估指标
9.1 数据集划分方法
在此评估方法中,我们假设测试样本也是从样本真实分布中独立同分布采样而得。
留出法(hold-out):将数据集划分为两个互斥的子集,一般要采用若干次随机划分、重复进行实验评估后取平均值作为评估结果。一般将大约 2 / 3 ∼ 4 / 5 2/3\sim4/5 2/3∼4/5的样本用于训练,剩余样本用于测试。
交叉验证法(cross validation):将数据集划分为 k k k个大小相似的互斥子集,每次选择 k − 1 k-1 k−1个子集作为训练集,剩余 1 1 1个作为测试集,最后取 k k k组测试结果的平均值。 k k k最常用的取值是10,此时称为10折交叉验证。
自助法(bootstrapping):对数据集 D D D进行有放回重复采样,采样m次,得到数据集 D ′ D' D′作为训练集,通过取极限可得 D D D中约有36.8%的样本未出现在 D D D中,所以可将这部分作为测试集。自助法产生的数据改变了初始的数据分布,这会引入估计偏差。
9.2 模型性能度量
针对回归问题的结果,对模型进行评估,通常有有以下几种方法:
- 均方误差MSE
- 均方根误差RMSE
- 平均绝对误差MAE
针对分类问题的结果,对模型进行评估,通常有以下几种方法:
- 错误率 / 精度(Accuracy)
- 准确率(查准率,Precision)/ 召回率(查全率,Recall)
- P-R曲线 / F1度量 / F β F_\beta Fβ度量
- ROC曲线 / AUC(最常用)
- 代价曲线
9.2.1 回归问题评估指标
名称 | 公式 |
---|---|
均方误差MSE(mean squared error) | 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 \frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 m1∑i=1m(f(xi)−yi)2 |
均方根误差RMSE(root mean squared error) | 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 \sqrt{\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2} m1∑i=1m(f(xi)−yi)2 |
平均绝对误差MAE(mean absolute error) | 1 m ∑ i = 1 m ∣ f ( x i ) − y i ∣ \frac{1}{m}\sum_{i=1}^m\vert f(x_i)-y_i\vert m1∑i=1m∣f(xi)−yi∣ |
9.2.2 分类问题评估指标
错误率 是分类错误的样本数占样本总数的比例。
精度 则是分类正确的样本数占样本总数的比例。
名称 | 公式 |
---|---|
错误率 | 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) \frac{1}{m}\sum_{i=1}^mI(f(x_i)≠y_i) m1∑i=1mI(f(xi)=yi) |
精度(Accuracy) | 1 m ∑ i = 1 m I ( f ( x i ) = y i ) \frac{1}{m}\sum_{i=1}^mI(f(x_i)=y_i) m1∑i=1mI(f(xi)=yi) |
我们将准确率记为P,召回率记为R,通过下面的混淆矩阵我们有
其中,TP(true positive),FP(false positive),FN(false negative),TN(true negative)。
准确率(查准率,Precision)是预测结果为正类的样本中实际为正类的比例。
召回率(查全率,Recall)是实际结果为正类的样本中预测为正类的比例。
F1度量是综合考虑Precision和Recall的指标。
F
β
F_\beta
Fβ度量能表达出对查准率、查全率的不同偏好,
β
>
1
\beta>1
β>1时对查全率有更大的影响,
β
<
1
\beta<1
β<1时对查准率有更大的影响。
名称 | 公式 |
---|---|
准确率(查准率,Precision) | P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP |
召回率(查全率,Recall) | R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP |
F1-score | F 1 = 2 × P × R P + R F1=\frac{2×P×R}{P+R} F1=P+R2×P×R |
Fβ-score | F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta=\frac{(1+\beta^2)×P×R}{(\beta^2×P)+R} Fβ=(β2×P)+R(1+β2)×P×R |
P-R曲线是以召回率R为横轴,准确率P为纵轴,然后根据模型的预测结果对样本进行排序,把最有可能是正样本的个体排在前面,而后面的则是模型认为最不可能为正例的样本,再按此顺序逐个把样本作为正例进行预测并计算出当前的准确率和召回率得到的曲线。
ROC曲线(Receiver Operating Characteristic)则是以假正例率FPR为横轴,真正例率TPR为纵轴。其中
F
P
R
=
F
P
T
N
+
F
P
FPR=\frac{FP}{TN+FP}
FPR=TN+FPFP
T
P
R
=
T
P
T
P
+
F
N
TPR=\frac{TP}{TP+FN}
TPR=TP+FNTP我们可以看到真正例率与召回率是一样的,那么ROC曲线图如下图所示:
AUC(Area Under ROC Curve)定义为ROC曲线下的面积,面积越大,模型性能越好:
A
U
C
=
1
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
⋅
(
y
i
+
y
i
+
1
)
AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)⋅(y_i+y_{i+1})
AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
不同类型的错误产生的代价不同,可使用非均等代价(unequal cost):
代价敏感错误率定义为:
e
=
1
m
(
∑
x
i
∈
D
+
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
01
+
∑
x
i
∈
D
−
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
10
)
e=\frac{1}{m}(\sum_{x_i\in D^+}I(f(x_i)≠y_i)×cost_{01}+\sum_{x_i\in D^-}I(f(x_i)≠y_i)×cost_{10})
e=m1(xi∈D+∑I(f(xi)=yi)×cost01+xi∈D−∑I(f(xi)=yi)×cost10)由于在非均等代价下,ROC曲线并不能反映出模型的期望总体代价,因此引入了代价曲线,其中横轴为正例概率代价,纵轴为归一化代价。
正例概率代价计算方式为:
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×cost_{01}}{p×cost_{01}+(1-p)×cost_{10}}
P(+)cost=p×cost01+(1−p)×cost10p×cost01
归一化代价计算方式为:
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×p×cost_{01}+FPR×(1-p)×cost_{10}}{p×cost_{01}+(1-p)×cost_{10}}
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10其中,
p
p
p是正类的概率。
ROC曲线上面每一点对应代价平面上的一条线段,所有线段下的面积表示了该条件下的期望总体代价: