极大似然估计
极大似然估计是一种模型参数估计的方法,它认为已经发生的事情是可能性最大的事情,因此只需让发生事情的概率取最大值来求解模型参数。假设一共有n个样本用
x
=
[
x
1
,
x
2
,
⋯
 
,
x
n
]
x=[x_1, x_2,\cdots,x_n]
x=[x1,x2,⋯,xn]表示,每个样本中涉及k个参数用
θ
=
[
θ
1
,
θ
2
,
⋯
 
,
θ
k
]
\theta=[\theta_1,\theta_2,\cdots,\theta_k]
θ=[θ1,θ2,⋯,θk]表示,经过模型我们可以得到整体这些样本发生的概率:
L
(
θ
)
=
∏
i
=
1
n
p
(
x
i
∣
θ
)
L(\theta)= \prod_{i=1}^{n}p(x_i|\theta)
L(θ)=i=1∏np(xi∣θ)
上式
L
(
θ
)
L(\theta)
L(θ)表示模型对应的似然函数,等价于在参数为
θ
\theta
θ时对应样本发生的概率。上式关于
θ
\theta
θ求导即可。但由于对多项乘积求导往往非常复杂,而对原函数取对数并不会改变原函数的单调性和极值的位置。因此在求解模型参数的时候通常用对数似然函数。
以
逻
辑
回
归
为
例
{\color{red}以逻辑回归为例}
以逻辑回归为例,假设样本
x
i
x_i
xi对应的类别为
y
i
y_i
yi,其中
y
i
∈
{
0
,
1
}
y_i\in \{0,1\}
yi∈{0,1}.
p
(
y
=
1
∣
x
)
=
1
1
+
e
−
(
w
x
+
b
)
=
π
(
x
)
p
(
y
=
0
∣
x
)
=
1
−
1
1
+
e
−
(
w
x
+
b
)
=
1
−
π
(
x
)
p(y=1|x)=\frac{1}{1+e^{-(wx+b)}}=\pi(x)\\ p(y=0|x)=1-\frac{1}{1+e^{-(wx+b)}}=1-\pi(x)
p(y=1∣x)=1+e−(wx+b)1=π(x)p(y=0∣x)=1−1+e−(wx+b)1=1−π(x)
因此似然函数可以写成:
L
(
w
,
b
)
=
∏
i
=
1
n
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
l
n
(
L
)
=
∑
i
=
1
n
y
i
l
n
(
π
(
x
i
)
)
+
(
1
−
y
i
)
l
n
(
1
−
π
(
x
i
)
)
L(w,b)=\prod_{i=1}^{n}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}\\ ln(L)=\sum_{i=1}^ny_iln(\pi(x_i ))+(1-y_i)ln(1-\pi(x_i))
L(w,b)=i=1∏n[π(xi)]yi[1−π(xi)]1−yiln(L)=i=1∑nyiln(π(xi))+(1−yi)ln(1−π(xi))
其中
l
n
(
L
)
ln(L)
ln(L)就是逻辑回归的优化函数,对其求极大值就得到w和b的估计值。
EM算法(以高斯混合模型GMM为例)
假
设
我
们
现
在
有
一
堆
身
高
数
据
,
而
且
假
定
身
高
和
人
类
种
族
无
关
,
要
求
估
计
出
一
个
身
高
模
型
?
如
何
估
计
?
{\color{red}假设我们现在有一堆身高数据,而且假定身高和人类种族无关,要求估计出一个身高模型?如何估计?}
假设我们现在有一堆身高数据,而且假定身高和人类种族无关,要求估计出一个身高模型?如何估计?
首先假设身高服从正态分布,因此得出对于所有样本的最大似然函数:
L
(
μ
,
σ
2
)
=
∏
i
=
1
n
p
(
x
i
∣
μ
,
σ
2
)
=
∏
i
=
1
n
1
2
π
σ
e
−
(
x
i
−
μ
)
2
2
σ
2
l
n
(
L
)
=
∑
i
=
1
n
l
n
(
1
2
π
σ
e
−
(
x
i
−
μ
)
2
2
σ
2
)
L(\mu,\sigma^2)=\prod_{i=1}^np(x_i|\mu,\sigma^2)=\prod_{i=1}^n\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_i-\mu)^2}{2\sigma^2}}\\ln(L)=\sum_{i=1}^nln(\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_i-\mu)^2}{2\sigma^2}})
L(μ,σ2)=i=1∏np(xi∣μ,σ2)=i=1∏n2πσ1e−2σ2(xi−μ)2ln(L)=i=1∑nln(2πσ1e−2σ2(xi−μ)2)
对参数
μ
\mu
μ和
σ
\sigma
σ求偏导为:
∂
L
∂
μ
=
∑
i
=
1
n
(
x
i
−
μ
)
σ
2
∂
L
∂
σ
=
∑
i
=
1
n
(
−
1
σ
+
(
x
i
−
μ
)
2
σ
3
)
=
∑
i
=
1
n
−
σ
2
+
(
x
i
−
μ
)
2
σ
3
\frac{\partial L}{\partial \mu}=\sum_{i=1}^n\frac{(x_i-\mu)}{\sigma^2}\\ \frac{\partial L}{\partial \sigma}=\sum_{i=1}^n(-\frac{1}{\sigma}+\frac{(x_i-\mu)^2}{\sigma^3})=\sum_{i=1}^n\frac{-\sigma^2+(x_i-\mu)^2}{\sigma^3}
∂μ∂L=i=1∑nσ2(xi−μ)∂σ∂L=i=1∑n(−σ1+σ3(xi−μ)2)=i=1∑nσ3−σ2+(xi−μ)2
让偏导数等于0,得到参数估计为:
μ
=
∑
i
=
1
n
x
i
n
σ
2
=
∑
i
=
1
n
(
x
i
−
μ
)
2
n
\mu=\frac{\sum_{i=1}^nx_i}{n} \\ \sigma^2 =\frac{\sum_{i=1}^n(x_i-\mu)^2}{n}
μ=n∑i=1nxiσ2=n∑i=1n(xi−μ)2
但是事实是身高和人类种族关系很大,而且人类有很多种族。
同
样
给
定
一
堆
身
高
数
据
,
这
时
我
们
不
知
道
每
个
身
高
属
于
哪
个
种
族
,
该
如
何
构
建
估
计
身
高
的
模
型
?
{\color{red}同样给定一堆身高数据,这时我们不知道每个身高属于哪个种族,该如何构建估计身高的模型?}
同样给定一堆身高数据,这时我们不知道每个身高属于哪个种族,该如何构建估计身高的模型?
首先假定一共有k个种族,
α
\alpha
α表示属于某一人种的比例,每个种族的身高服从正态分布,我们先构建似然函数:
L
(
α
,
μ
,
σ
)
=
∏
i
=
1
n
∑
j
=
1
k
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
l
n
(
L
)
=
∑
i
=
1
n
l
n
(
∑
j
=
1
k
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
L(\alpha,\mu,\sigma)=\prod_{i=1}^n\sum_{j=1}^k\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)\\ ln(L)=\sum_{i=1}^nln(\sum_{j=1}^k\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)
L(α,μ,σ)=i=1∏nj=1∑kαj⋅p(xi∣μj,σj2)ln(L)=i=1∑nln(j=1∑kαj⋅p(xi∣μj,σj2)
由于这个式子没有解析解,只有通过迭代的方法求解。首先假设一个关于
α
\alpha
α的一个分布
Q
Q
Q,根据Jensen不等式可得:
∑
i
=
1
n
l
n
(
∑
j
=
1
k
Q
(
α
j
)
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
Q
(
α
j
)
)
≥
∑
i
=
1
n
∑
j
=
1
k
Q
(
α
j
)
l
n
(
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
Q
(
α
j
)
)
\sum_{i=1}^nln(\sum_{j=1}^kQ(\alpha_j)\frac{\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}{Q(\alpha_j)})\ge \sum_{i=1}^n\sum_{j=1}^kQ(\alpha_j)ln(\frac{\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}{Q(\alpha_j)})
i=1∑nln(j=1∑kQ(αj)Q(αj)αj⋅p(xi∣μj,σj2))≥i=1∑nj=1∑kQ(αj)ln(Q(αj)αj⋅p(xi∣μj,σj2))
而等号成立的条件是:
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
Q
(
α
j
)
=
c
∑
j
=
1
k
Q
(
a
j
)
=
1
\frac{\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}{Q(\alpha_j)}=c \\ \sum_{j=1}^kQ(a_j)=1
Q(αj)αj⋅p(xi∣μj,σj2)=cj=1∑kQ(aj)=1
其中c为常数。因此
Q
(
α
j
)
=
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
∑
j
=
1
k
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
Q(\alpha_j)=\frac{\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}{\sum_{j=1}^k\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}
Q(αj)=∑j=1kαj⋅p(xi∣μj,σj2)αj⋅p(xi∣μj,σj2)
计算
Q
(
α
j
)
Q(\alpha_j)
Q(αj),这就是EM中的E步。带入到式中:
l
=
∑
i
=
1
n
∑
j
=
1
k
Q
(
α
j
)
l
n
(
α
j
⋅
p
(
x
i
∣
μ
j
,
σ
j
2
)
Q
(
α
j
)
)
l=\sum_{i=1}^n\sum_{j=1}^kQ(\alpha_j)ln(\frac{\alpha_j\cdot p(x_i|\mu_j,\sigma_j^2)}{Q(\alpha_j)})
l=i=1∑nj=1∑kQ(αj)ln(Q(αj)αj⋅p(xi∣μj,σj2))
分别对
α
,
μ
,
σ
\alpha,\mu,\sigma
α,μ,σ求偏导就得到对这些参数的估计,这就是EM中的M步。重复上述E和M步骤直到参数不再更新为止。
参考链接:
似然与极大似然估计
从两个例子理解EM算法
机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)
机器学习_EM算法详细推导和讲解
EM算法原理及利用EM求解GMM参数过程