赞
踩
之前在看李航的《统计学习方法》,思考的同时打算对于其中一些问题做一些总结和记录,希望以后再看的时候能够有更深入的理解。
我们知道,机器学习方法一般可以概括为三部分:模型(model)、策略(strategy)、算法(algorithm)。
其中,模型表示我们要从假设空间中所给的函数集合中学习它们的条件概率分布或者是决策函数。对于监督学习而言,其定义就是从有限的给定数据集中学习模型,而这些数据是独立同分布产生的。因此,之所以学习条件概率分布或是决策函数,是在基本假设存在的基础上进行的。
在构建好模型的基础上,我们需要选择出能够最好的表示所给数据集分布的模型,这就是策略。一般来说,选取最优模型需要考虑损失函数与风险函数。损失函数也叫代价函数,即loss function 或 cost function,是度量一次预测的错误程度;而风险函数则是损失函数的期望。损失函数的形式有很多种,其中就包括似然函数,这就引出了我们所要说的,关于模型的参数估计方法这一问题。
另外,由于机器学习中的许多问题都可以转化为最优化问题来求解,而这些最优化问题又没有显式的解析解(很难用解析的方法直接求解),故需要用数值计算的方法来求解,这些计算方法就是算法。
以上是题外话,下面来说一说参数估计方法。
统计学中的参数估计是指根据部分样本来估计总体分布中未知参数的过程:
按估计形式,可分为点估计和区间估计;
按构造估计量的方法,可分为矩估计、最小二乘估计、极大似然估计、贝叶斯估计等。
这里,我们具体讨论两种机器学习中典型的、常用的参数估计方法,即极大似然估计法和贝叶斯估计法。
Maximum Likelihood Estimation,即MLE,也译作最大似然估计(翻译不重要)。
首先,要知道什么是“极大似然”。极大似然的基本思想是:一个随机试验如有若干个可能的结果A、B、C、… ,一次试验中若出现结果A,则认为实验条件对A的出现有利,也即该实验条件下A出现的概率P(A)较大。而极大似然估计就是要找到A出现概率最大值所对应的实验条件。
那么,用数学语言描述一下极大似然估计:
对于
m
m
m个样本的数据集
X
=
{
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
}
X = \left\{ {{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}} \right\}
X={x(1),x(2),...,x(m)},是独立地由未知的真实数据生成分布
p
d
a
t
a
(
x
)
{p_{data}}\left( x \right)
pdata(x)生成的;令
θ
\theta
θ是一族由
p
 
m
o
d
 
e
l
(
x
;
θ
)
{p_{\bmod el}}\left( {x;\theta } \right)
pmodel(x;θ)在相同空间上确定的概率分布,那么极大似然估计就是求出最大的
θ
\theta
θ值,从而近似地估计出真实分布,可以表示为:
θ
M
L
=
arg
max
θ
p
 
m
o
d
 
e
l
(
X
;
θ
)
=
arg
max
θ
∏
i
=
1
m
p
 
m
o
d
 
e
l
(
x
(
i
)
;
θ
)
θ
M
L
=
arg
max
θ
∑
i
=
1
m
log
p
 
m
o
d
 
e
l
(
x
(
i
)
;
θ
)
{\theta _{ML}} = \mathop {\arg \max }\limits_\theta \sum\limits_{i = 1}^m {\log {p_{\bmod el}}\left( {{x^{\left( i \right)}};\theta } \right)}
θML=θargmaxi=1∑mlogpmodel(x(i);θ) 进一步,考虑缩放代价函数时
arg
max
\arg \max
argmax不变,那么可以对上式除以
m
m
m,从而得到和训练数据经验分布
p
^
d
a
t
a
{\hat p_{data}}
p^data相关的期望作为准则:
θ
M
L
=
arg
max
θ
E
x
∼
p
^
d
a
t
a
log
p
 
m
o
d
 
e
l
(
x
;
θ
)
{\theta _{ML}} = \mathop {\arg \max }\limits_\theta {{\rm E}_{x\sim{{\hat p}_{data}}}}\log {p_{\bmod el}}\left( {x;\theta } \right)
θML=θargmaxEx∼p^datalogpmodel(x;θ)
有一种说法认为极大似然估计可以看做是最小化
K
L
KL
KL散度,或者说是最小化分布间的交叉熵。为什么这么说?先看
K
L
KL
KL散度的定义:
K
L
KL
KL散度一般用来度量两个分布之间的差异。具体到这里来说,就是最小化训练集上经验分布
p
^
d
a
t
a
{\hat p_{data}}
p^data和模型分布之间的差异(因为真实分布
p
d
a
t
a
{p_{data}}
pdata未知,所以只能和经验分布来匹配),即:
D
K
L
(
p
^
d
a
t
a
∥
p
 
m
o
d
 
e
l
)
=
E
x
∼
p
^
d
a
t
a
[
log
p
^
d
a
t
a
(
x
)
−
log
p
 
m
o
d
 
e
l
(
x
)
]
{D_{KL}}\left( {{{\hat p}_{data}}\left\| {{p_{\bmod el}}} \right.} \right) = {{\rm E}_{x \sim {{\hat p}_{data}}}}\left[ {\log {{\hat p}_{data}}\left( x \right) - \log {p_{\bmod el}}\left( x \right)} \right]
DKL(p^data∥pmodel)=Ex∼p^data[logp^data(x)−logpmodel(x)] 由于等号右边的前一项只和原始数据生成过程有关,和模型无关,因此意味着在最小化
K
L
KL
KL散度时可以只考虑最小化等号右边的后一项,那么这就和极大似然估计的表示一样了。
下面简单总结极大似然估计法的求解过程 :
(1)根据所求目标模型写出似然函数;
(2)对似然函数取对数并整理;
(3)对似然对数求导;
(4)解似然方程,得到估计参数的值;
Bayesian Estimation,即利用贝叶斯定理结合先验概率及新的证据(一般指数据的似然函数),得到新的概率。
一般来说,极大似然估计归于频率派,认为参数是一个定值;而贝叶斯派则认为参数服从某种概率分布(即考虑所有可能的 θ \theta θ),这也是贝叶斯估计与极大似然估计的区别之一。
具体的数学描述如下:
对于
m
m
m个样本的数据集
X
=
{
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
}
X = \left\{ {{x^{\left( 1\right)}},{x^{\left( 2\right)}},...,{x^{\left( m \right)}}} \right\}
X={x(1),x(2),...,x(m)},通过贝叶斯规则结合数据似然
p
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
∣
θ
)
p\left( {{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}\left| \theta \right.} \right)
p(x(1),x(2),...,x(m)∣θ)(似然函数可参照极大似然估计法中对似然函数的介绍)及先验,得到对于
θ
\theta
θ的后验概率:
p
(
θ
∣
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
)
=
p
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
∣
θ
)
p
(
θ
)
p
(
X
)
p\left( {\left. \theta \right|{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}} \right) = \frac{{p\left( {{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}\left| \theta \right.} \right)p\left( \theta \right)}}{{p\left( X \right)}}
p(θ∣x(1),x(2),...,x(m))=p(X)p(x(1),x(2),...,x(m)∣θ)p(θ) 这就是贝叶斯估计法对参数
θ
\theta
θ的估计结果。
在贝叶斯估计的常用情景下,先验开始是相对均匀的分布或者是高熵的高斯分布,这样做是因为观测数据通常会使后验的熵下降,并集中在参数的几个可能性很高的值。
同样地,下面简单梳理一下贝叶斯估计的求解过程:
(1)确定参数
θ
\theta
θ的先验分布
p
(
θ
)
p\left( \theta \right)
p(θ);
(2)由数据集求出其联合概率分布,即似然函数
p
(
X
∣
θ
)
p\left( {X\left| \theta \right.} \right)
p(X∣θ);
(3)由贝叶斯公式求出
θ
\theta
θ的后验概率分布
p
(
θ
∣
X
)
p\left( {\theta \left| X \right.} \right)
p(θ∣X);
(4)求出
θ
\theta
θ的贝叶斯估计值
θ
^
=
∫
Θ
θ
p
(
θ
∣
X
)
d
θ
\hat \theta = \int\limits_\Theta {\theta {\kern 1pt} p\left( {\theta \left| X \right.} \right)d\theta }
θ^=Θ∫θp(θ∣X)dθ。(
Θ
\Theta
Θ表示对应的参数空间)
(1) 前面提到过的,这里再说明一下:极大似然估计预测时使用的是
θ
\theta
θ的点估计,而贝叶斯估计使用的是
θ
\theta
θ的全分布估计。比如,在观测到
m
m
m个样本后,下一个数据样本的预测分布为:
p
(
x
(
m
+
1
)
∣
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
)
=
∫
p
(
x
(
m
+
1
)
∣
θ
)
p
(
θ
∣
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
)
d
θ
p\left( {{x^{\left( {m + 1} \right)}}\left| {{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}} \right.} \right) = \int {p\left( {{x^{\left( {m + 1} \right)}}\left| \theta \right.} \right)p\left( {\theta \left| {{x^{\left( 1 \right)}},{x^{\left( 2 \right)}},...,{x^{\left( m \right)}}} \right.} \right)d\theta }
p(x(m+1)∣∣∣x(1),x(2),...,x(m))=∫p(x(m+1)∣θ)p(θ∣∣∣x(1),x(2),...,x(m))dθ 这里每个具有正概率密度的
θ
\theta
θ值都有助于下一个样本的预测,其贡献由相应的后验概率密度加权;同时,对于
m
m
m个样本预测的不确定性也会包含在之后的预测中。
(2) 和极大似然估计不同,贝叶斯估计需要“已知”参数 θ \theta θ的先验分布,这是因为先验能够影响概率质量密度朝着参数空间中偏好先验的区域偏移。实践中,先验通常表现为偏好更简单或更光滑的模型。
(3) 当训练数据很有限时,贝叶斯估计通常泛化性更好;但是当训练样本很大时,贝叶斯方法通常会有很大的计算代价。而极大似然估计会向参数的真实值方向收敛(这要求真实分布 p d a t a {p_{data}} pdata必须在模型分布族 p   m o d   e l ( ⋅ ; θ ) {p_{\bmod el}}\left( { \cdot {\kern 1pt} {\kern 1pt} ;\theta } \right) pmodel(⋅;θ)中,且真实分布 p d a t a {p_{data}} pdata必须刚好对应一个 θ \theta θ值)。
Maximum A Posteriori,即MAP,也称最大后验点估计。
那么什么是MAP呢?原则上,我们应该用参数 θ \theta θ的完整贝叶斯后验分布进行预测,这就是贝叶斯估计。但是单点估计常常也是需要的,这是因为通常贝叶斯后验的计算对于大多数有意义的模型来说是困难的。这个时候就考虑用点估计求得一个近似解。由此,结合贝叶斯估计的优点,提出了最大后验点估计的方法。
MAP估计选择后验概率最大的点作为对于参数
θ
\theta
θ的估计值,即:
θ
M
A
P
=
arg
max
θ
p
(
θ
∣
x
)
=
arg
max
θ
log
p
(
x
∣
θ
)
+
log
p
(
θ
)
{\theta _{MAP}} = \mathop {\arg \max }\limits_\theta p\left( {\theta \left| x \right.} \right) = \mathop {\arg \max }\limits_\theta \log p\left( {x\left| \theta \right.} \right) + \log p\left( \theta \right)
θMAP=θargmaxp(θ∣x)=θargmaxlogp(x∣θ)+logp(θ)
MAP的优点是利用了来自先验的信息,这个附加信息有助于减少估计的方差(相比于ML估计),但增大了偏差。
另外,加入正则化的极大似然估计能够降低样本数目较少时发生过拟合的可能,这可以看做贝叶斯推断的MAP近似,即当正则化项对应于先验
p
(
θ
)
p\left( \theta \right)
p(θ)时。当然,不是所有的正则化项都对应于MAP贝叶斯推断。
下面,以朴素贝叶斯分类为例,简单说明极大似然估计和贝叶斯估计的计算方法和过程。
首先,简述朴素贝叶斯法:
朴素贝叶斯法是一种学习模型和分类的方法。对于给定的训练数据集,基于特征条件独立假设学习输入和输出的联合概率分布,再对给定的输入利用贝叶斯定理求出后验概率最大的输出。
朴素贝叶斯法对条件概率分布做了如下的条件独立假设:(
c
k
{c_k}
ck为类别)
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
.
.
.
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
P\left( {Y = {c_k}\left| {X = x} \right.} \right) = \frac{{P\left( {X = x\left| {Y = {c_k}} \right.} \right)P\left( {Y = {c_k}} \right)}}{{\sum\nolimits_k {P\left( {X = x\left| {Y = {c_k}} \right.} \right)P\left( {Y = {c_k}} \right)} }}
P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck) 由上两式可得朴素贝叶斯分类器:
y
=
f
(
x
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y = f\left( x \right) = \mathop {\arg \max }\limits_{{c_k}} \frac{{P\left( {Y = {c_k}} \right)\prod\nolimits_j {P\left( {{X^{\left( j \right)}} = {x^{\left( j \right)}}\left| {Y = {c_k}} \right.} \right)} }}{{\sum\nolimits_k {P\left( {Y = {c_k}} \right)\prod\nolimits_j {P\left( {{X^{\left( j \right)}} = {x^{\left( j \right)}}\left| {Y = {c_k}} \right.} \right)} } }}
y=f(x)=ckargmax∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck) 由于分母对所有
c
k
{c_k}
ck都相同,则可以简化为:
y
=
f
(
x
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y = f\left( x \right) = \mathop {\arg \max }\limits_{{c_k}} P\left( {Y = {c_k}} \right)\prod\nolimits_j {P\left( {{X^{\left( j \right)}} = {x^{\left( j \right)}}\left| {Y = {c_k}} \right.} \right)}
y=f(x)=ckargmaxP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
以下分别用极大似然估计和贝叶斯估计计算朴素贝叶斯法中的概率。
(1) 极大似然估计:
先验概率的极大似然估计:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
,
k
=
1
,
2
,
.
.
.
,
K
P\left( {Y = {c_k}} \right) = \frac{{\sum\limits_{i = 1}^N {I\left( {{y_i} = {c_k}} \right)} }}{N}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} k = 1,2,...,K
P(Y=ck)=Ni=1∑NI(yi=ck),k=1,2,...,K 条件概率的极大似然估计:
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
∑
i
=
1
N
I
(
y
i
=
c
k
)
,
j
=
1.2
,
.
.
.
,
n
;
l
=
1
,
2
,
.
.
.
,
S
;
k
=
1
,
2
,
.
.
.
,
K
P\left( {{X^{\left( j \right)}} = {a_{jl}}\left| {Y = {c_k}} \right.} \right) = \frac{{\sum\limits_{i = 1}^N {I\left( {x_i^{\left( j \right)} = {a_{jl}}{\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {y_i} = {c_k}} \right)} }}{{\sum\limits_{i = 1}^N {I\left( {{y_i} = {c_k}} \right)} }}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} j = 1.2,...,n{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ;{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} l = 1,2,...,S{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ;{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} k = 1,2,...,K
P(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck),j=1.2,...,n;l=1,2,...,S;k=1,2,...,K 其中,设第
j
j
j个特征
x
(
j
)
{x^{\left( j \right)}}
x(j)可能的取值集合为
{
a
j
1
,
a
j
2
,
.
.
.
,
a
j
S
j
}
\left\{ {{a_{j1}},{a_{j2}},...,{a_{j{S_j}}}} \right\}
{aj1,aj2,...,ajSj};
式中,
x
(
j
)
{x^{\left( j \right)}}
x(j)是第
i
i
i个样本的第
j
j
j个特征;
a
j
l
{a_{jl}}
ajl是第
j
j
j个特征可能取的第
l
l
l个值;
I
I
I为指示函数。
(2) 贝叶斯估计:
先验概率的贝叶斯估计:
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
{P_\lambda }\left( {Y = c{}_k} \right) = \frac{{\sum\limits_{i = 1}^N {I\left( {{y_i} = {c_k}} \right)} + \lambda }}{{N + K\lambda }}
Pλ(Y=ck)=N+Kλi=1∑NI(yi=ck)+λ 条件概率的贝叶斯估计:
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
{P_\lambda }\left( {{X^{\left( j \right)}} = {a_{jl}}\left| {Y = {c_k}} \right.} \right) = \frac{{\sum\limits_{i = 1}^N {I\left( {x_i^{\left( j \right)} = {a_{jl}},{y_i} = {c_k}} \right)} + \lambda }}{{\sum\limits_{i = 1}^N {I\left( {{y_i} = {c_k}} \right)} + {S_j}\lambda }}
Pλ(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)+Sjλi=1∑NI(xi(j)=ajl,yi=ck)+λ 式中,
λ
≥
0
\lambda \ge 0
λ≥0等价于在随机变量的各个取值的频数上赋予一个正数
λ
\lambda
λ;
λ
=
0
\lambda = 0
λ=0时,就是极大似然估计;
λ
=
1
\lambda = 1
λ=1时,称为拉普拉斯平滑。
显然,对于任何
l
=
1
,
2
,
.
.
.
,
S
j
,
k
=
1
,
2
,
.
.
.
,
K
l = 1,2,...,{S_j}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} k = 1,2,...,K
l=1,2,...,Sj,k=1,2,...,K,有:
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
>
0
{P_\lambda }\left( {{X^{\left( j \right)}} = {a_{jl}}\left| {Y = {c_k}} \right.} \right) > 0
Pλ(X(j)=ajl∣Y=ck)>0
∑
l
=
1
S
j
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
1
\sum\limits_{l = 1}^{{S_j}} {P\left( {{X^{\left( j \right)}} = {a_{jl}}\left| {Y = {c_k}} \right.} \right)} = 1
l=1∑SjP(X(j)=ajl∣Y=ck)=1
本文简单分析和总结了机器学习中的参数估计方法,包括极大似然估计、贝叶斯估计以及最大后验估计。
一般来说,极大似然估计是机器学习中的首选估计方法。当样本数目小到会发生过拟合时,正则化策略如权重衰减可用于获得训练数据有限时方差较小的极大似然有偏版本。
另外,如果能够知道参数的先验,那么可以考虑最大后验估计。相比于极大似然估计来说,先验有助于减少MAP的方差,但会增加偏差。因此,如何选择相应的估计方法,还需要具体问题具体分析。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。