前言
对于《统计学习方法》中遇到的一些问题,以及机器学习中的一些自己没有理解透彻的问题,希望通过梳理总结能够有更深入的理解。
在上一章最开始我们已经概括了统计学习方法的三要素,即模型、策略、算法,这里就不再详述了。
本文讨论总结了如下几个概念:损失函数与风险函数、经验风险最小化与结构风险最小化、欠拟合与过拟合、正则化、生成模型与判别模型等。这些都是机器学习中的常见问题,这里仅做一个梳理,不能保证非常全面,不足之处烦请指正。
文章目录
1. 损失函数与风险函数
(1) 损失函数
损失函数(Loss Function),也称代价函数(Cost Function),是用来度量预测的错误程度的函数,是预测值 f ( X ) f\left( X \right) f(X)和实际值 Y Y Y的非负实值函数,记作 L ( Y , f ( X ) ) L\left( {Y,f\left( X \right)} \right) L(Y,f(X))。
常用的损失函数如下:
0-1损失函数: L ( Y , f ( X ) ) = { 0 , Y ≠ f ( X ) 1 , Y = f ( X ) L\left( {Y,f\left( X \right)} \right) = \left\{ \begin{array}{l} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Y \ne f\left( X \right)\\ 1{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Y = f\left( X \right) \end{array} \right. L(Y,f(X))={0,Y̸=f(X)1,Y=f(X)
平方损失函数: L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L\left( {Y,f\left( X \right)} \right) = {\left( {Y - f\left( X \right)} \right)^2} L(Y,f(X))=(Y−f(X))2
绝对损失函数: L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L\left( {Y,f\left( X \right)} \right) = \left| {Y - f\left( X \right)} \right| L(Y,f(X))=∣Y−f(X)∣
对数或对数似然损失函数: L ( Y , P ( Y ∣ X ) ) = − log P ( Y ∣ X ) L\left( {Y,P\left( {Y\left| X \right.} \right)} \right) = - \log P\left( {Y\left| X \right.} \right) L(Y,P(Y∣X))=−logP(Y∣X)
(2) 风险函数
风险函数(Risk Function),也称期望损失(Excepted Loss),用来表示损失函数的期望。具体的说,就是表示理论上模型
f
(
X
)
f\left( X \right)
f(X)关于联合概率分布
P
(
X
,
Y
)
P\left( {X,Y} \right)
P(X,Y)的平均意义下的损失,即:
R
exp
(
f
)
=
E
P
[
L
(
Y
,
f
(
X
)
)
]
=
∫
X
×
Υ
L
(
y
,
f
(
x
)
)
P
(
x
,
y
)
d
x
d
y
{R_{\exp }}\left( f \right) = {E_P}\left[ {L\left( {Y,f\left( X \right)} \right)} \right] = \int_{{\rm X} \times \Upsilon } {L\left( {y,f\left( x \right)} \right)P\left( {x,y} \right)dxdy}
Rexp(f)=EP[L(Y,f(X))]=∫X×ΥL(y,f(x))P(x,y)dxdy然而,一般情况下样本的联合概率分布是未知的(如果已知就可以直接求出条件概率分布了),学习的目标则是选择期望风险最小的模型,这是矛盾的。
那么,如何解决这一问题呢?
这里,考虑模型
f
(
X
)
f\left( X \right)
f(X)关于
N
N
N个样本的训练数据集的平均损失,即经验风险(Empirical Risk)或经验损失(Empirical Loss):
R
e
m
p
(
f
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
{R_{emp}}\left( f \right) = \frac{1}{N}\sum\limits_{i = 1}^N {L\left( {{y_i},f\left( {{x_i}} \right)} \right)}
Remp(f)=N1i=1∑NL(yi,f(xi))可以看到,期望风险
R
exp
(
f
)
{R_{\exp }}\left( f \right)
Rexp(f)是模型关于联合分布的期望损失,经验风险
R
e
m
p
(
f
)
{R_{emp}}\left( f \right)
Remp(f)是模型关于训练集的平均损失。
由大数定律知,当样本容量 N N N趋于无穷时,经验风险趋于期望风险。那么,似乎就可以用经验风险估计期望风险了。但是,实际上训练样本数目都是有限的,甚至有时候样本数目很小,那么这样估计就会有很大偏差。因此,需要对经验风险进行一定的矫正,这就关系到监督学习的两个基本策略:经验风险最小化和结构风险最小化。
注:
这里简单说一下大数定律(辛钦大数定律):对于相互独立同分布的
N
N
N个样本,及任意的
ε
>
0
\varepsilon > 0
ε>0,
有
lim
P
{
∣
1
N
∑
i
=
1
N
x
i
−
E
(
x
i
)
∣
<
ε
}
=
1
\lim P\left\{ {\left| {\frac{1}{N}\sum\limits_{i = 1}^N {{x_i}} - {\rm E}\left( {{x_i}} \right)} \right| < \varepsilon } \right\} = 1
limP{∣∣∣∣N1i=1∑Nxi−E(xi)∣∣∣∣<ε}=1。
2. 经验风险最小化与结构风险最小化
(1) 经验风险最小化
Empirical Risk Minimization,记作ERM。
ERM策略认为,经验风险最小的模型是最优模型。
当样本容量足够大时,ERM确实能取得很好的学习效果,比如极大似然估计就是ERM的一个例子(参照上一章内容)。
当模型是条件概率分布、损失函数是对数损失函数时,ERM等价于极大似然估计。
但是,当样本容量很小时,ERM的学习效果就不太好,很容易“过拟合”。
(2) 结构风险最小化
Structural Risk Minimization,记作SRM。
SRM是为了防止过拟合而提出的策略,等价于正则化。
结构风险是在经验风险上加上表示模型复杂度的正则化项或惩罚项,即:
R
S
R
M
(
f
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
+
λ
J
(
f
)
{R_{SRM}}\left( f \right) = \frac{1}{N}\sum\limits_{i = 1}^N {L\left( {{y_i},f\left( {{x_i}} \right)} \right)} + \lambda J\left( f \right)
RSRM(f)=N1i=1∑NL(yi,f(xi))+λJ(f)其中
J
(
f
)
J\left( f \right)
J(f)为模型复杂度,是定义在假设空间上的泛函,模型
f
f
f越复杂,
J
(
f
)
J\left( f \right)
J(f)就越大,即复杂度表示了对复杂模型的惩罚。
SRM需要经验风险和模型复杂度同时最小化,比如最大后验估计就是SRM的一个例子(同样参考上一章内容)。
当模型是条件概率分布、损失函数是对数损失函数、模型复杂度有模型先验概率表示时,SRM等价于MAP。
3. 欠拟合与过拟合
对于一个模型而言,我们希望在训练的时候能够获得较小的训练误差,同时测试的时候能够使测试误差与训练误差的偏差尽可能小。那么,这就涉及到机器学习的两个基本概念:欠拟合和过拟合,即underfitting和overfitting。
(1) 欠拟合
什么是欠拟合?欠拟合是指模型不能在训练集上获得足够低的误差。
简单地说,就是模型训练都没有做好,就更不用说测试误差了。
(2) 过拟合
那么什么是过拟合呢?过拟合是指训练误差和测试误差之间的偏差太大了。
简单地说,就是模型训练误差很小,甚至于把不合适的样本(包括噪点)都作为有用样本进行训练,那么模型虽然对训练集拟合很好,但泛化性很差,在测试集上就会出现较大的误差。
(3) 如何解决欠拟合和过拟合呢?
一般来说,模型容量过小易出现欠拟合,过大则易出现过拟合。
那么什么是模型容量呢?和样本容量不同,通俗地说,模型容量是指其拟合各种函数的能力。换句话说,我们可以将学习算法选择为解决方案的函数集,这样通过改变输入特征的数目和加入这些特征对应的参数,从而改变了模型的容量。当然容量不仅取决于模型的选择,还有很多其他方法,这里暂时不做讨论了(其实是还没研究过)。
相对于欠拟合,过拟合大概是机器学习中更容易遇到也更重要的问题。一味追求提高对训练集的预测能力(即小误差),使所选模型复杂度过大、参数过多,从而产生过拟合。那么,要解决过拟合问题,可以考虑以下常用方法:
a.重新整理数据,尽可能去掉噪声数据;
b.增大训练数据量,过小的训练集容易出现过拟合;
c.采用dropout方法,一般用于神经网络训练中,简单地说就是每层以一定概率选择保留的神经元(即对应的参数),降低神经网络的复杂度;
d.正则化。
4. 正则化
前面说过,结构风险最小化(SRM)等价于正则化。其实正则化就是模型选择的典型方法,具体来说就是给目标函数(一般是损失函数)加上一个正则项或惩罚项,从而达到降低模型复杂度、提高模型泛化能力的作用。
正则项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。常用的正则项为
L
p
{L_p}
Lp范数,包括
L
1
{L_1}
L1范数、
L
2
{L_2}
L2范数等。
这里顺便总结一下常用
L
p
{L_p}
Lp范数的意义和作用:
L
0
{L_0}
L0范数:表示向量
X
X
X中非零元素的个数,但是
L
0
{L_0}
L0范数很难写成一个好的数学表达式,很难优化求解,因此实际上是一个NP难问题;
L
1
{L_1}
L1范数:表示向量
X
X
X中非零元素的绝对值之和,也称为稀疏规则算子,可以实现特征稀疏从而去掉无用特征,实际上是
L
0
{L_0}
L0范数的最优凸近似;
L
2
{L_2}
L2范数:表示向量
X
X
X中各元素的平方和开根的结果,多用于防止过拟合、提高模型泛化能力;
L
∞
{L_\infty }
L∞范数:表示向量
X
X
X中元素的最大值。
5. 生成模型与判别模型
生成模型和判别模型是监督学习中的两类模型,一般用于解决不同类型的问题。
(1) 生成模型
由训练数据学习样本的联合概率分布 P ( X , Y ) P\left( {X,Y} \right) P(X,Y)并求出相应的条件概率分布 P ( Y ∣ X ) P\left( {Y\left| X \right.} \right) P(Y∣X)作为预测,这样的模型称为生成模型。
生成模型表示了给定输入产生输出的生成关系(即联合分布 P ( X , Y ) P\left( {X,Y} \right) P(X,Y))。
典型方法有朴素贝叶斯法、混合高斯模型和隐马尔可夫模型。
生成模型的优点:
a.可以还原出联合概率分布
P
(
X
,
Y
)
P\left( {X,Y} \right)
P(X,Y),而判别模型不能;
b.学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;
c.当存在隐变量时,生成模型仍然可以学习(比如混合高斯模型就是加入隐变量的生成方法),而判别模型不能。
生成模型的缺点:
a.联合分布的确能够提供更多的信息,但同样需要更多的样本和更多的计算;
b.如果只是对样本进行分类,那么生成模型计算得到的关于类条件概率的许多信息就用不到了,浪费了计算资源;
c.实践中判别模型效果更好。
(2) 判别模型
由训练数据集学习条件概率分布 P ( Y ∣ X ) P\left( {Y\left| X \right.} \right) P(Y∣X)或者决策函数 f ( X ) f\left( X \right) f(X)作为预测,这样的模型称为判别模型。
判别模型表示了对于给定的输入 X X X,应该预测得到什么样的输出 Y Y Y。
典型方法有:K-近邻、感知机、决策树、logistic回归、最大熵、支持向量机、提升方法和条件随机场等。
判别模型的优点:
a.可以直接学习条件概率分布
P
(
Y
∣
X
)
P\left( {Y\left| X \right.} \right)
P(Y∣X)或者决策函数
f
(
X
)
f\left( X \right)
f(X),那么就是直接面向预测,往往学习准确率更高;
b.由于直接学习的
P
(
Y
∣
X
)
P\left( {Y\left| X \right.} \right)
P(Y∣X)或
f
(
X
)
f\left( X \right)
f(X),可以对数据进行各种程度上的抽象、定义特征并使用这些特征,因此可以简化学习问题;
c.需要比生成模型更少的样本,节省了计算资源。
判别模型的缺点:
即生成模型的优点。
6. 小结
本章主要梳理了机器学习中的几个基本概念,可能有些地方说的不是很清楚,见谅。另外,生成模型和判别模型只是进行了列举,具体的模型构造过程和推导过程这里就不再详述了,感兴趣的朋友可以自行搜索相关内容。如果有时间,后面也许我会写一些相关的模型的介绍。当然,一切随缘,哈哈哈!