为了判断模型的优劣以及是否过拟合,观察模型在测试集上的误差(泛化误差),需要尽可能使训练集和测试集中的额样本互斥,可以采用以下方法从数据集 D D D中产生训练集 S S S和测试集 T T T
评估方法
- 留出法
将数据集拆分为S,T, S ∩ T = ∅ , S ∪ T = D S \cap T=\varnothing,\ S\cup T=D S∩T=∅, S∪T=D - 交叉验证法
将数据集 D D D拆分为 k k k份,每次选择其中1份作为测试集 T T T,其余为训练集 S S S,通过 k k k次训练取在 T T T上的平均值(回归),投票法(分类) - 自助法
不改变数据集 D D D中的样本量 m m m,期望训练集 S S S中数据样本与 D D D一样。则从原始数据集 D D D中又放回的抽取 m m m个样本得到训练集 S S S,因此 T = D / S T = D/\ S T=D/ S。
未被抽取的样本的概率为:
l i m m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 lim_{m\to \infty}(1-\frac{1}{m})^{m}=\frac{1}{e}\approx 0.368 limm→∞(1−m1)m=e1≈0.368
未在训练集中出现样本用于测试也称为包外估计
性能度量
1. 回归模型
回归模型包括线性回归,多元线性回归以及非线性回归(径向基样条回归),常采用均方误差表示模型损失和优劣:
E
(
y
,
y
^
)
=
1
N
∑
i
=
1
N
∥
y
−
y
^
∥
2
E(y,\hat{y}) = \frac{1}{N}\sum_{i=1}^{N}\Vert y-\hat{y}\Vert^{2}
E(y,y^)=N1i=1∑N∥y−y^∥2
其中,
y
y
y表示真实值,
y
^
\hat{y}
y^表示预测值。
2. 分类模型
分类模型包括逻辑回归、决策树、支持向量机、KNN(K近邻)。
错误率与精度
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
E(f;D) = \frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_{i})\ne y_{i})
E(f;D)=m1i=1∑mI(f(xi)=yi)
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
=
1
−
E
(
f
;
D
)
acc(f;D) = \frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_{i})=y_{i}) = 1-E(f;D)
acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D)
首先建立混淆矩阵(真为True,假为False,正例:Positive,反例:Negtive),即
真实值 | 预测值 | |
1 | 0 | |
1 | TP | FN |
0 | FP | TN |
查准率(Precision),查全率(Recall),P-R曲线
P
=
T
P
T
P
+
F
P
,
R
=
T
P
T
P
+
F
N
,
P = \frac{TP}{TP+FP},\ R = \frac{TP}{TP+FN},
P=TP+FPTP, R=TP+FNTP,
其中,
y
y
y轴:查准率P 表示预测为1的有多少真实为1
x
x
x轴:查全率R 表示真实标签为1 的有多少被预测为1
查准率和查全率是一对矛盾的变量,当查准率高时,即只选择有把握的,那么查全率就偏低;当查全率较高时,计算情况是将所有样本均预测为真,R为1,但是查准率就较低了
根据学习器预测,将所有样本按照顺序排列,即预测为1的概率越高,样本就在越前面,然后逐个添加样本并将其作为正例进行预测,计算当前的P,R值,可建立P,R曲线。
当一条曲线A包裹住另外一条曲线B,表面A对应学习器的效果更好,
当曲线A,B有交点时,采用“平衡点”(BEP)进行取值,即当P=R时,取具有较大值的曲线对应学习器。
- F1
F 1 = 2 1 P + 1 R F1=\frac{2}{\frac{1}{P}+\frac{1}{R}} F1=P1+R12
即查准率和查全率的调和平均值
ROC
y
y
y轴:真正例率
T
P
R
TPR
TPR(true positive rate):实际为正样本预测成正样本的概率
T
P
R
=
T
P
T
P
+
F
N
=
T
P
P
TPR = \frac{TP}{TP+FN}=\frac{TP}{P}
TPR=TP+FNTP=PTP
x
x
x轴:假正例率
F
P
R
FPR
FPR(false positive rate)实际为负样本预测成正样本的概率
F
P
R
=
F
P
F
P
+
T
N
=
F
P
N
FPR = \frac{FP}{FP+TN}=\frac{FP}{N}
FPR=FP+TNFP=NFP
其中,
P
,
N
P,N
P,N分别表示真实的正样本个数和真实的负样本个数
ROC曲线的实现:根据学习器预测对所有样本进行预测,并排序,预测为真的概率越大越靠近前面,然后将每个样本作为正例进行预测,逐步计算当前点的
T
P
R
,
F
P
R
TPR,\ FPR
TPR, FPR,将所有点按顺序连接起来则得到ROC曲线
可以发现:
- 真正率和假正率这两个指标跟正负样本的比例是无关的
- 所以当样本比例失衡的情况下,准确率不如真正率、假正率这两个指标好用
- 当测试集中的正负样本分布发生变化了,ROC曲线可以保持不变
ROC,AUC和P-R曲线的区别:
当出现类别不均衡现象,即正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
AUC
AUC值即为ROC曲线与坐标轴的面积,这个面积的数值不会大于1。
又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。
AUC就是:随机抽出一对样本 ( 正样本 i , 负样本 j ) ,然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本概率 p r e d i pred_{i} predi>大于负样本概率 p r e d j pred_{j} predj的概率,即正例排在负例前面的概率
使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
- 代价敏感错误率
当预测错误所造成的代价不同时,需要赋予错误预测不同的代价
E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) c o s t 10 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) c o s t 01 ) E(f;D;cost) = \frac{1}{m}(\sum_{x_{i}\in D^{+}}\mathbb{I}(f(x_{i})\ne y_{i})cost_{10}+\sum_{x_{i}\in D^{-}}\mathbb{I}(f(x_{i})\ne y_{i})cost_{01}) E(f;D;cost)=m1(xi∈D+∑I(f(xi)=yi)cost10+xi∈D−∑I(f(xi)=yi)cost01)
更多关于AUC,ROC可见: ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】
偏差与方差
泛化误差
E
(
f
;
D
)
=
b
i
a
s
2
(
x
)
+
v
a
r
(
x
)
+
ε
2
E(f;D)=bias^{2}(x)+var(x)+\varepsilon^{2}
E(f;D)=bias2(x)+var(x)+ε2
其中,
f
(
x
;
D
)
f(x;D)
f(x;D)为训练集上学的模型
f
f
f在测试集
x
x
x上的预测输出。
期望为
f
ˉ
(
x
)
=
E
D
[
f
(
x
;
D
)
]
\bar{f}(x)=\mathbb{E}_{D}[f(x;D)]
fˉ(x)=ED[f(x;D)],
偏差:
b
i
a
s
2
=
(
f
ˉ
(
x
)
−
y
)
bias^{2} = (\bar{f}(x) - y)
bias2=(fˉ(x)−y),即预测值与真实值之间的误差
方差:
v
a
r
(
x
)
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
var(x) = \mathbb{E}_{D}[(f(x;D)-\bar{f}(x))^{2}]
var(x)=ED[(f(x;D)−fˉ(x))2]
噪声:
ε
2
=
E
D
[
(
y
D
−
y
)
2
]
\varepsilon^{2}=\mathbb{E}_{D}[(y_{D}-y)^{2}]
ε2=ED[(yD−y)2],即真实数据与数据集上的噪声之间的均方误差