经典机器学习算法:高斯判别分析GDA
作者:互联网
高斯判别分析介绍
高斯判别分析 GDA
GDA:Guassian Discrimant Analysis
高斯判别分析属于两分类、软分类、概率生成模型
GDA模型
生成模型中,我们需要对联合概率分布进行建模,然后采用 MAP 来获得参数的最佳值。两分类的情况,我们采用的假设:
对于两类样本,其服从伯努利分布,而对每个类中的样本,假定都服从高斯分布
- y ∼ B e r n o u l l i ( ϕ ) y\sim Bernoulli(\phi) y∼Bernoulli(ϕ)
- x ∣ y = 1 ∼ N ( μ 1 , Σ ) {x|y=1}\sim\mathcal{N}(\mu_1,\Sigma) x∣y=1∼N(μ1,Σ)
- x ∣ y = 0 ∼ N ( μ 0 , Σ ) x|y=0\sim\mathcal{N}(\mu_0,\Sigma) x∣y=0∼N(μ0,Σ)
这样,根据训练样本,估计出先验概率以及高斯分布的均值和协方差矩阵(注意这里两类内部高斯分布的协方差矩阵相同),即可通过如下贝叶斯公式求出一个新样本分别属于两类的概率,进而可实现对该样本的分类。
p
(
Y
∣
X
)
=
p
(
X
∣
Y
)
p
(
Y
)
p
(
X
)
p(Y|X) = \frac {p(X|Y)p(Y)}{p(X)}
p(Y∣X)=p(X)p(X∣Y)p(Y)
arg max
Y
p
(
Y
∣
X
)
=
arg max
Y
p
(
X
∣
Y
)
p
(
Y
)
p
(
X
)
=
arg max
Y
p
(
X
∣
Y
)
p
(
Y
)
\argmax_Y p(Y|X) = \argmax_Y \frac{p(X|Y)p(Y)}{p(X)} = \argmax_Y {p(X|Y)p(Y)}
Yargmaxp(Y∣X)=Yargmaxp(X)p(X∣Y)p(Y)=Yargmaxp(X∣Y)p(Y)
模型求解
- 确定参数的先验分布以及似然函数
- 确定参数的后验分布函数
- 将后验分布函数转换为对数函数
- 求对数函数的最大值(求导,解方程)
具体计算
那么独立全同的数据集最大后验概率可以表示为:
a
r
g
m
a
x
ϕ
,
μ
0
,
μ
1
,
Σ
log
p
(
X
∣
Y
)
p
(
Y
)
=
a
r
g
m
a
x
ϕ
,
μ
0
,
μ
1
,
Σ
∑
i
=
1
N
(
log
p
(
x
i
∣
y
i
)
+
log
p
(
y
i
)
)
=
a
r
g
m
a
x
ϕ
,
μ
0
,
μ
1
,
Σ
∑
i
=
1
N
(
(
1
−
y
i
)
log
N
(
μ
0
,
Σ
)
+
y
i
log
N
(
μ
1
,
Σ
)
+
y
i
log
ϕ
+
(
1
−
y
i
)
log
(
1
−
ϕ
)
)
\begin{aligned} \mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\log p(X|Y)p(Y)&=\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma} \sum\limits_{i=1}^N (\log p(x_i|y_i)+\log p(y_i))\\ \\ &=\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)+y_i\log\phi+(1-y_i)\log(1-\phi)) \end{aligned}
argmaxϕ,μ0,μ1,Σlogp(X∣Y)p(Y)=argmaxϕ,μ0,μ1,Σi=1∑N(logp(xi∣yi)+logp(yi))=argmaxϕ,μ0,μ1,Σi=1∑N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)+yilogϕ+(1−yi)log(1−ϕ))
求解四个主要参数: ϕ , μ 0 , μ 1 , Σ {\phi,\mu_0,\mu_1,\Sigma} ϕ,μ0,μ1,Σ
-
首先对 ϕ \phi ϕ 进行求解,将式子对 ϕ \phi ϕ 求偏导:
∑ i = 1 N y i ϕ + y i − 1 1 − ϕ = 0 ⟹ ϕ = ∑ i = 1 N y i N = N 1 N \begin{aligned}\sum\limits_{i=1}^N\frac{y_i}{\phi}+\frac{y_i-1}{1-\phi}=0\\ \Longrightarrow\phi=\frac{\sum\limits_{i=1}^Ny_i}{N}=\frac{N_1}{N} \end{aligned} i=1∑Nϕyi+1−ϕyi−1=0⟹ϕ=Ni=1∑Nyi=NN1 -
然后求解 μ 1 \mu_1 μ1:
μ 1 ^ = a r g m a x μ 1 ∑ i = 1 N y i log N ( μ 1 , Σ ) = a r g m i n μ 1 ∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) \begin{aligned}\hat{\mu_1}&=\mathop{argmax}_{\mu_1}\sum\limits_{i=1}^Ny_i\log\mathcal{N}(\mu_1,\Sigma)\\ &=\mathop{argmin}_{\mu_1}\sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1) \end{aligned} μ1^=argmaxμ1i=1∑NyilogN(μ1,Σ)=argminμ1i=1∑Nyi(xi−μ1)TΣ−1(xi−μ1)
由于:
∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) = ∑ i = 1 N y i x i T Σ − 1 x i − 2 y i μ 1 T Σ − 1 x i + y i μ 1 T Σ − 1 μ 1 \sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1)=\sum\limits_{i=1}^Ny_ix_i^T\Sigma^{-1}x_i-2y_i\mu_1^T\Sigma^{-1}x_i+y_i\mu_1^T\Sigma^{-1}\mu_1 i=1∑Nyi(xi−μ1)TΣ−1(xi−μ1)=i=1∑NyixiTΣ−1xi−2yiμ1TΣ−1xi+yiμ1TΣ−1μ1求微分左边乘以 Σ \Sigma Σ 可以得到:
∑ i = 1 N − 2 y i Σ − 1 x i + 2 y i Σ − 1 μ 1 = 0 ⟹ μ 1 = ∑ i = 1 N y i x i ∑ i = 1 N y i = ∑ i = 1 N y i x i N 1 \begin{aligned}\sum\limits_{i=1}^N-2y_i\Sigma^{-1}x_i+2y_i\Sigma^{-1}\mu_1=0\\ \Longrightarrow\mu_1=\frac{\sum\limits_{i=1}^Ny_ix_i}{\sum\limits_{i=1}^Ny_i}=\frac{\sum\limits_{i=1}^Ny_ix_i}{N_1} \end{aligned} i=1∑N−2yiΣ−1xi+2yiΣ−1μ1=0⟹μ1=i=1∑Nyii=1∑Nyixi=N1i=1∑Nyixi -
求解 μ 0 \mu_0 μ0,由于正反例是对称的,所以:
μ 0 = ∑ i = 1 N ( 1 − y i ) x i N 0 \mu_0=\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0} μ0=N0i=1∑N(1−yi)xi -
最为困难的是求解 Σ \Sigma Σ,我们的模型假设对正反例采用相同的协方差矩阵,当然从上面的求解中我们可以看到,即使采用不同的矩阵也不会影响之前的三个参数。首先我们有:
∑ i = 1 N log N ( μ , Σ ) = ∑ i = 1 N log ( 1 ( 2 π ) p / 2 ∣ Σ ∣ 1 / 2 ) + ( − 1 2 ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) ( x i − μ ) T Σ − 1 ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 N T r a c e ( S Σ − 1 ) \begin{aligned} \sum\limits_{i=1}^N\log\mathcal{N}(\mu,\Sigma)&=\sum\limits_{i=1}^N\log(\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}})+(-\frac{1}{2}(x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)(x_i-\mu)^T\Sigma^{-1})\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}NTrace(S\Sigma^{-1}) \end{aligned} i=1∑NlogN(μ,Σ)=i=1∑Nlog((2π)p/2∣Σ∣1/21)+(−21(xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)(xi−μ)TΣ−1)=Const−21Nlog∣Σ∣−21NTrace(SΣ−1)
在这个表达式中,我们在标量上加入迹从而可以交换矩阵的顺序,对于包含绝对值和迹的表达式的导数,我们有:
∂ ∂ A ( ∣ A ∣ ) = ∣ A ∣ A − 1 ∂ ∂ A T r a c e ( A B ) = B T \begin{aligned} \frac{\partial}{\partial A}(|A|)&=|A|A^{-1}\\ \frac{\partial}{\partial A}Trace(AB)&=B^T \end{aligned} ∂A∂(∣A∣)∂A∂Trace(AB)=∣A∣A−1=BT
因此:
[ ∑ i = 1 N ( ( 1 − y i ) log N ( μ 0 , Σ ) + y i log N ( μ 1 , Σ ) ] ′ = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 N 1 T r a c e ( S 1 Σ − 1 ) − 1 2 N 2 T r a c e ( S 2 Σ − 1 ) \begin{aligned}[\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)]' \\=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}N_1Trace(S_1\Sigma^{-1})-\frac{1}{2}N_2Trace(S_2\Sigma^{-1}) \end{aligned} [i=1∑N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)]′=Const−21Nlog∣Σ∣−21N1Trace(S1Σ−1)−21N2Trace(S2Σ−1)
其中, S 1 , S 2 S_1,S_2 S1,S2 分别为两个类数据内部的协方差矩阵,于是:
N Σ − 1 − N 1 S 1 T Σ − 2 − N 2 S 2 T Σ − 2 = 0 ⟹ Σ = N 1 S 1 + N 2 S 2 N \begin{aligned}N\Sigma^{-1}-N_1S_1^T\Sigma^{-2}-N_2S_2^T\Sigma^{-2}=0 \\\Longrightarrow\Sigma=\frac{N_1S_1+N_2S_2}{N} \end{aligned} NΣ−1−N1S1TΣ−2−N2S2TΣ−2=0⟹Σ=NN1S1+N2S2
这里应用了类协方差矩阵的对称性。
于是我们就利用最大后验的方法求得了我们模型假设里面的所有参数,根据模型,可以得到联合分布,也就可以得到用于推断的条件分布了。
标签:yi,frac,log,判别分析,mu,GDA,aligned,Sigma,高斯 来源: https://blog.csdn.net/weixin_43999137/article/details/108127556