模型评估与模型选择
训练误差与测试误差
给予损失函数的训练误差(training error)和模型的测试误差(test error)是学习方法的评估标准。注意:统计学习方法具体采用的损失函数未必是评估时采用的损失函数。当然,让两者一致是比较理想的。
训练误差是模型
Y
=
f
^
(
X
)
Y=\hat{f}(X)
Y=f^(X)关于训练集数据集的平均损失:
R
e
m
p
(
f
^
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
^
(
x
i
)
)
R_{emp}(\hat{f})= \frac{1}{N}\sum_{i=1}^{N}L(y_{i},\hat{f}(x_{i}))
Remp(f^)=N1i=1∑NL(yi,f^(xi))
N是训练样本容量。
测试误差是模型
Y
=
f
^
(
X
)
Y=\hat{f}(X)
Y=f^(X)关于测试集数据集的平均损失:
e
t
e
s
t
(
f
^
)
=
1
N
′
∑
i
=
1
N
′
L
(
y
i
,
f
^
(
x
i
)
)
e_{test}(\hat{f})= \frac{1}{{N}'}\sum_{i=1}^{{N}'}L(y_{i},\hat{f}(x_{i}))
etest(f^)=N′1i=1∑N′L(yi,f^(xi))
N’是测试样本容量。
当损失函数是0-1损失时,测试误差就变成了常见的测试数据集上的误差率(error rate):
e
t
e
s
t
=
1
N
′
∑
i
=
1
N
′
I
(
y
i
≠
f
^
(
x
i
)
)
e_{test}= \frac{1}{{N}'}\sum_{i=1}^{{N}'}I(y_{i}\neq \hat{f}(x_{i}))
etest=N′1i=1∑N′I(yi=f^(xi))
准确率(accuracy):
r
t
e
s
t
=
1
N
′
∑
i
=
1
N
′
I
(
y
i
=
f
^
(
x
i
)
)
r_{test}= \frac{1}{{N}'}\sum_{i=1}^{{N}'}I(y_{i}= \hat{f}(x_{i}))
rtest=N′1i=1∑N′I(yi=f^(xi))
学习方法对位置数据的预测能力称为泛化能力。
过拟合与模型选择
过拟合是指学习室选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测的很差的现象。
选择复杂度适当的模型,防止过拟合。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OymCygvA-1578636821036)(en-resource://database/396:1)]
两种常用的模型选择方法:正则化与交叉验证
正则化与交叉验证
正则化
结构风险最小化策略的实现,在经验风险上加一个正则化项或罚项。
正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。
m
i
n
f
ϵ
F
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
+
λ
J
(
f
)
\underset{f\epsilon F}{min}\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))+\lambda J(f)
fϵFminN1i=1∑NL(yi,f(xi))+λJ(f)
第一项是经验风险,第二项是正则化项。
λ
⩾
0
\lambda\geqslant0
λ⩾0 为调整两者之间的关系系数。
L2正则化
正则化项J(f)可以是参数向量的L2范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
2
∥
w
∥
2
L(w)=\frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}\left \| w \right \|^2
L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∥w∥2
∥
w
∥
2
\left\| w \right \|^2
∥w∥2就是L2范数表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式。让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0。L1范数让W等于0。
L1正则化
正则化项J(f)可以是参数向量的L1范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
2
∥
w
∥
1
L(w)=\frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}\left \| w \right \| _ 1
L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∥w∥1
∥
w
∥
2
\left\| w \right \|^2
∥w∥2就是L1范数表示某个向量中所有元素绝对值之和。
正则化理解
极大似然函数的理解:模型训练就是在已知样本分布的情况下,反推最有可能导致这样结果的参数值。https://blog.csdn.net/qq_39355550/article/details/81809467
损失函数、正则化与最大似然的关系
整个最优化问题可以看做是一个最大后验估计,其中正则化项对应后验估计中的先验信息(从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代),损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计。https://www.cnblogs.com/bingjianing/p/9182798.html
最大后验估计:
a
r
g
m
a
x
θ
p
(
θ
∣
x
)
=
a
r
g
m
a
x
θ
p
(
x
∣
θ
)
p
(
θ
)
p
(
x
)
=
a
r
g
m
a
x
θ
p
(
x
∣
θ
)
p
(
θ
)
arg max_{\theta }p(\theta |x)=argmax_{\theta }\frac{p(x|\theta )p(\theta )}{p(x)}=argmax_{\theta }p(x|\theta )p(\theta )
argmaxθp(θ∣x)=argmaxθp(x)p(x∣θ)p(θ)=argmaxθp(x∣θ)p(θ)
所以,可以估计参数
θ
\theta
θ :
θ
M
A
P
=
a
r
g
m
a
x
θ
(
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
)
)
p
(
θ
)
\theta _{MAP}=argmax_{\theta }(\prod_{i=1}^{m}p(y^{(i)}|x^{(i)}))p(\theta )
θMAP=argmaxθ(i=1∏mp(y(i)∣x(i)))p(θ)
假设1:w参数服从高斯分布
假设
ϵ
i
∼
N
(
0
,
σ
2
)
,
w
i
∼
N
(
0
,
τ
2
)
\epsilon_i \sim N(0,\sigma ^2),w_i \sim N(0,\tau ^2)
ϵi∼N(0,σ2),wi∼N(0,τ2)
a
r
g
m
a
x
w
L
(
w
)
=
l
n
∏
i
=
1
n
1
σ
2
π
e
−
1
2
(
y
i
−
x
i
w
T
σ
)
2
⋅
∏
j
=
1
d
1
τ
2
π
e
−
1
2
(
w
j
τ
)
2
argmax_wL(w)=ln\prod_{i=1}^{n}\frac{1}{\sigma \sqrt{2\pi }}e^{-\frac{1}{2}(\frac{y_i-x_iw^T}{\sigma })^2}\cdot \prod_{j=1}^{d}\frac{1}{\tau \sqrt{2\pi }}e^{-\frac{1}{2}(\frac{w_j}{\tau })^2}
argmaxwL(w)=lni=1∏nσ2π1e−21(σyi−xiwT)2⋅j=1∏dτ2π1e−21(τwj)2
=
l
n
1
σ
2
π
e
∑
i
=
1
n
−
1
2
(
y
i
−
x
1
w
T
σ
)
2
⋅
1
τ
2
π
e
−
1
2
∑
j
=
0
d
(
w
i
τ
)
2
=ln\frac{1}{\sigma \sqrt{2\pi }}e^{\sum_{i=1}^{n}-\frac{1}{2}(\frac{y_i-x_1w^T}{\sigma })^2}\cdot \frac{1}{\tau \sqrt{2\pi }}e^{-\frac{1}{2}\sum_{j=0}^{d}(\frac{w_i }{\tau})^2}
=lnσ2π1e∑i=1n−21(σyi−x1wT)2⋅τ2π1e−21∑j=0d(τwi)2
=
−
1
2
σ
2
∑
i
=
1
n
(
y
i
−
x
i
w
T
)
2
−
1
2
τ
2
∑
i
=
1
n
w
j
2
−
n
l
n
σ
2
π
−
d
l
n
τ
2
π
=-\frac{1}{2\sigma ^2}\sum_{i=1}^{n}(y_i-x_iw^T)^2-\frac{1}{2\tau^2}\sum_{i=1}^{n}w_j^2-nln\sigma \sqrt{2\pi }-dln\tau \sqrt{2\pi }
=−2σ21i=1∑n(yi−xiwT)2−2τ21i=1∑nwj2−nlnσ2π−dlnτ2π
⇔
a
r
g
m
i
n
w
f
(
w
)
=
∑
i
=
1
n
(
y
i
−
x
i
w
)
2
+
λ
∑
j
=
1
d
w
j
2
\Leftrightarrow argmin_wf(w)=\sum_{i=1}^{n}(y_i-x_iw)^2+\lambda \sum_{j=1}^{d}w_j^2
⇔argminwf(w)=i=1∑n(yi−xiw)2+λj=1∑dwj2
=
∥
y
−
X
w
T
∥
2
2
+
λ
∥
w
∥
2
2
=\left \| y-Xw^T \right \|_ 2^2+\lambda \left \| w \right \|_ 2^2
=∥∥y−XwT∥∥22+λ∥w∥22
即L2正则化。
假设2:w参数服从拉普拉斯分布
假设
ϵ
i
∼
N
(
0
,
σ
2
)
,
w
i
∼
L
a
p
l
a
c
e
(
0
,
b
)
\epsilon_i \sim N(0,\sigma ^2),w_i \sim Laplace(0,b)
ϵi∼N(0,σ2),wi∼Laplace(0,b)
a
r
g
m
a
x
w
L
(
w
)
=
l
n
∏
i
=
1
n
1
σ
2
π
e
−
1
2
(
y
i
−
x
i
w
T
σ
)
2
⋅
∏
j
=
1
d
1
2
b
e
−
(
w
j
b
)
argmax_wL(w)=ln\prod_{i=1}^{n}\frac{1}{\sigma \sqrt{2\pi }}e^{-\frac{1}{2}(\frac{y_i-x_iw^T}{\sigma })^2}\cdot \prod_{j=1}^{d}\frac{1}{2b}e^{-(\frac{w_j}{b })}
argmaxwL(w)=lni=1∏nσ2π1e−21(σyi−xiwT)2⋅j=1∏d2b1e−(bwj)
=
l
n
1
σ
2
π
e
∑
i
=
1
n
−
1
2
(
y
i
−
x
1
w
T
σ
)
2
⋅
1
2
b
e
−
1
2
∑
j
=
0
d
(
w
i
b
)
=ln\frac{1}{\sigma \sqrt{2\pi }}e^{\sum_{i=1}^{n}-\frac{1}{2}(\frac{y_i-x_1w^T}{\sigma })^2}\cdot \frac{1}{2b}e^{-\frac{1}{2}\sum_{j=0}^{d}(\frac{w_i }{b})}
=lnσ2π1e∑i=1n−21(σyi−x1wT)2⋅2b1e−21∑j=0d(bwi)
=
−
1
2
σ
2
∑
i
=
1
n
(
y
i
−
x
i
w
T
)
2
−
1
2
b
2
∑
i
=
1
n
w
j
2
−
n
l
n
σ
2
π
−
d
⋅
2
b
=-\frac{1}{2\sigma ^2}\sum_{i=1}^{n}(y_i-x_iw^T)^2-\frac{1}{2b^2}\sum_{i=1}^{n}w_j^2-nln\sigma \sqrt{2\pi }-d·2b
=−2σ21i=1∑n(yi−xiwT)2−2b21i=1∑nwj2−nlnσ2π−d⋅2b
⇔
a
r
g
m
i
n
w
f
(
w
)
=
∑
i
=
1
n
(
y
i
−
x
i
w
)
2
+
λ
∑
j
=
1
d
∣
w
j
∣
\Leftrightarrow argmin_wf(w)=\sum_{i=1}^{n}(y_i-x_iw)^2+\lambda \sum_{j=1}^{d}|w_j|
⇔argminwf(w)=i=1∑n(yi−xiw)2+λj=1∑d∣wj∣
=
∥
y
−
X
w
T
∥
2
2
+
λ
∥
w
∥
1
=\left \| y-Xw^T \right \|_ 2^2+\lambda \left \| w \right \|_ 1
=∥∥y−XwT∥∥22+λ∥w∥1
即L1正则化。
交叉验证
样本充足时划分为训练集,验证集,测试集。训练集用来训练,验证集用来模型选择,测试集用来最终对学习方法评估。样本不充足时,可以采用交叉验证的方法。
交叉验证的基本思想是重复的使用数据,把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复的训练、测试及模型选择。
1、简单的交叉验证
70%数据为训练集,30%为测试集。选出测试误差最小的模型。
2、S折交叉验证(S-fold cross validation)
方法:随机的将数据集且分为S个互不相交,大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下子集测试模型;将S个子集分为S-1和1一共有S中选择,将S中可能重复进行;最后选出S次测评中平均测试误差最小的模型。
3、留一交叉验证(leave-one-out cross validation)
S折交叉验证的特殊情况S=N(N是给定数据集容量)称为留一交叉验证。这种方法往往在缺乏数据的情况下使用。