高斯判别分析(Gaussian Discriminant analysis,GDA),与之前的线性回归和Logistic
回归从方法上讲有很大的不同,GDA是一种生成学习算法(Generative Learning Algorithms),而之前的属于判别学习算法(Discriminative Learning Algorithms)。(不能简单以名字做判断,毕竟逻辑回归是分类模型,高斯判别模型属于生成学习模型)了解更多:判别模型和生成模型
机器学习模型从概率的角度来看就是最大化
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X) 的条件概率,判别模型的思想是直接最大化这个概率(Fisher
线性判别,线性感知机),生成模型则是通过贝叶斯模型最大后验概率
m
a
x
P
(
Y
∣
X
)
=
P
(
X
∣
Y
)
P
(
Y
)
P
(
X
)
∼
m
a
x
P
(
X
∣
Y
)
P
(
Y
)
maxP{(Y|X)}=\frac{P(X|Y)P(Y)}{P(X)}\sim maxP(X|Y)P(Y)
maxP(Y∣X)=P(X)P(X∣Y)P(Y)∼maxP(X∣Y)P(Y),其中
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y) 可以看作是从标签生成数据,
P
(
Y
)
P(Y)
P(Y) 则是标签的先验概率。通俗的讲,判别模型是通过训练样本训练出一个模型,再用测试点
x
x
x 带入这个模型,最后算出
x
x
x 的可能类别;而生成学习模型是通过训练样本训练出各个类别的多个模型,再将预测点
x
x
x 分别代入不同类别的模型中,进而判断
x
x
x 到底属于哪个类别(一般就看代入后哪个模型的概率大就认为
x
x
x 是哪一类,当然也有例外)。
在Andrew Ng大神的CS229 Lecture notes中有一个例子:假设我们要对大象和狗分类,回归模型和感知机模型是在两类数据之间找到一个decision boundary
,通过这个decision boundary
来区分大象和狗。高斯判别分析提供了另外一种思路:首先我们观察大象,对大象建立一个模型来描述他的特点;在观察狗,并建立相应的模型来描述狗。当一个新的狗或者象过来时,我们首先带入象模型和狗模型,最后决定新来的的动物的类别。
这是一种软分类的思路,所谓软分类就是我们对一个样本决定它的类别时有一个可信度的概念,比方说当数据位于decision boundary
附近的时候,我们将数据硬分为0或者1类(在这里是象和狗类)有时是不合理的,因为这是类别的不确定性更大。
这一部分涉及的数学知识,请先阅读:高斯分布的极大似然估计、多维高斯分布 和 矩阵求导(三)-- 一阶微分法
1 高斯判别分析模型的假设函数
高斯判别分析的基本假设是我们得到的数据是独立同分布的(IID),虽然在实际中这种假设很难达到,但有时候拥有了好的假设可以得到较好的结果。
D
a
t
a
:
{
(
x
i
,
y
i
)
}
i
=
1
N
x
i
∈
R
p
y
i
∈
{
0
,
1
}
(1-1)
Data:\{(\pmb{x}_i,y_i)\}^N_{i=1} \quad \pmb{x}_i \in \mathbb R^p \quad y_i \in \{0, 1\} \tag{1-1}
Data:{(xxxi,yi)}i=1Nxxxi∈Rpyi∈{0,1}(1-1)
可以按
y
y
y 的取值分为两类数据,并按照以下两个集合来表示
C
1
=
{
x
i
∣
y
i
=
1
,
i
=
1
,
2
,
⋯
,
N
}
C
2
=
{
x
i
∣
y
i
=
0
,
i
=
1
,
2
,
⋯
,
N
}
∣
C
1
∣
=
N
1
,
∣
C
2
∣
=
N
2
,
N
1
+
N
2
=
N
(1-2)
C_{1}=\left \{\boldsymbol{x}_{i}|y_{i}=1,i=1,2,\cdots ,N\right \}\\ C_{2}=\left \{\boldsymbol{x}_{i}|y_{i}=0,i=1,2,\cdots ,N\right \}\\ |C_{1}|=N_{1},|C_{2}|=N_{2},N_{1}+N_{2}=N \tag{1-2}
C1={xi∣yi=1,i=1,2,⋯,N}C2={xi∣yi=0,i=1,2,⋯,N}∣C1∣=N1,∣C2∣=N2,N1+N2=N(1-2)
由于
y
i
∈
{
0
,
1
}
y_i\in\{0, 1\}
yi∈{0,1},因此可认为
y
∼
B
e
r
n
o
u
l
l
i
(
ϕ
)
y\sim Bernoulli(\phi)
y∼Bernoulli(ϕ)
⇒
y
1
0
P
ϕ
1
−
ϕ
(1-3)
\Rightarrow \begin{array}{c|cc} {y} &{1} &{0}\\ \hline {P}&{\phi}&{1-\phi} \end{array} \tag{1-3}
⇒yP1ϕ01−ϕ(1-3)
因此
P
(
y
)
=
ϕ
y
(
1
−
ϕ
)
1
−
y
P(y)=\phi^y(1-\phi)^{1-y}
P(y)=ϕy(1−ϕ)1−y
接下来假设
P
(
x
∣
y
)
P(\pmb{x}|y)
P(xxx∣y) 服从高斯分布:
x
∣
(
y
=
1
)
∼
N
(
μ
1
,
Σ
)
x
∣
(
y
=
0
)
∼
N
(
μ
0
,
Σ
)
(1-4)
\pmb{x}|(y=1)\sim{N}(\pmb{\mu}_1,\pmb{\Sigma})\\ \pmb{x}|(y=0)\sim{N}(\pmb{\mu}_0,\pmb{\Sigma}) \tag{1-4}
xxx∣(y=1)∼N(μμμ1,ΣΣΣ)xxx∣(y=0)∼N(μμμ0,ΣΣΣ)(1-4)
更为直观的描述为:
P
(
x
∣
y
=
0
)
=
1
(
2
π
)
p
2
∣
Σ
∣
1
2
e
−
1
2
(
x
−
μ
0
)
T
Σ
−
1
(
x
−
μ
0
)
P
(
x
∣
y
=
1
)
=
1
(
2
π
)
p
2
∣
Σ
∣
1
2
e
−
1
2
(
x
−
μ
1
)
T
Σ
−
1
(
x
−
μ
1
)
(1-5)
\begin{aligned}P(\pmb{x}|y=0) &=\dfrac{1}{(2\pi)^{\frac{p}{2}}\vert \boldsymbol{\Sigma} \vert ^{\frac{1}{2}}}e^{-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu}_0)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_0)}\\ P(\pmb{x}|y=1)&=\dfrac{1}{(2\pi)^{\frac{p}{2}}\vert \boldsymbol{\Sigma} \vert ^{\frac{1}{2}}}e^{-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu}_1)^T \boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_1)}\end{aligned} \tag{1-5}
P(xxx∣y=0)P(xxx∣y=1)=(2π)2p∣Σ∣211e−21(x−μ0)TΣ−1(x−μ0)=(2π)2p∣Σ∣211e−21(x−μ1)TΣ−1(x−μ1)(1-5)
上述模型中的未知参数为 ϕ 、 Σ 、 μ 0 和 μ 1 \phi、\pmb{\Sigma}、\pmb{\mu}_0和\pmb{\mu}_1 ϕ、ΣΣΣ、μμμ0和μμμ1,假设函数为 P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) P(y|\pmb{x})=\dfrac{P(\pmb{x}|y)P(y)}{P(\pmb{x})} P(y∣xxx)=P(xxx)P(xxx∣y)P(y) 分别计算 P ( x ∣ y = 0 ) P ( y = 0 ) 和 P ( x ∣ y = 1 ) P ( y = 1 ) P(\pmb{x}|y=0)P(y=0)和P(\pmb{x}|y=1)P(y=1) P(xxx∣y=0)P(y=0)和P(xxx∣y=1)P(y=1) 的概率,概率大者为样本数据所属类别。
2 高斯判别分析模型的损失函数
已知样本数据含有参数的概率分布,由最大似然估计法可以推导高斯判别分析模型的损失函数为
L
(
ϕ
,
μ
0
,
μ
1
,
Σ
)
=
l
n
∏
i
=
1
N
P
(
x
i
,
y
i
;
ϕ
,
μ
0
,
μ
1
,
Σ
)
=
l
n
∏
i
=
1
N
P
(
x
i
∣
y
i
;
μ
0
,
μ
1
,
Σ
)
P
(
y
i
;
ϕ
)
=
∑
i
=
1
N
l
n
P
(
x
i
∣
y
i
;
μ
0
,
μ
1
,
Σ
)
+
∑
i
=
1
N
l
n
P
(
y
i
;
ϕ
)
=
∑
i
=
1
N
l
n
(
P
(
x
i
∣
y
i
=
1
;
μ
1
,
Σ
)
y
i
⋅
P
(
x
i
∣
y
i
=
0
;
μ
0
,
Σ
)
1
−
y
i
)
+
∑
i
=
1
N
l
n
P
(
y
i
;
ϕ
)
=
∑
i
=
1
N
y
i
l
n
P
(
x
i
∣
y
i
=
1
;
μ
1
,
Σ
)
⏟
①
+
∑
i
=
1
N
(
1
−
y
i
)
l
n
P
(
x
i
∣
y
i
=
0
;
μ
0
,
Σ
)
⏟
②
+
∑
i
=
1
N
l
n
P
(
y
i
;
ϕ
)
⏟
③
(2-1)
\begin{aligned} L(\phi,\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\boldsymbol{\Sigma}) &= ln\prod\limits_{i=1}^{N}P(\boldsymbol{x}_{i},y_{i};\phi,\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\boldsymbol{\Sigma})\\ &=ln\prod\limits_{i=1}^{N}P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\boldsymbol{\Sigma})P(y_{i};\phi)\\ &=\sum\limits_{i=1}^{N}ln P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\boldsymbol{\Sigma}) + \sum\limits_{i=1}^{N}ln P(y_{i};\phi)\\ &=\sum\limits_{i=1}^{N}ln \left(P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma})^{y_{i}} \cdot P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma})^{1-y_{i}}\right)+ \sum\limits_{i=1}^{N}ln P(y_{i};\phi)\\ &=\underset{①}{\underbrace{\sum\limits_{i=1}^{N}y_{i}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma})}}+\underset{②}{\underbrace{\sum\limits_{i=1}^{N}(1-y_{i})ln P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma})}} + \underset{③}{\underbrace{\sum\limits_{i=1}^{N}ln P(y_{i};\phi)}}\\ \end{aligned} \tag{2-1}
L(ϕ,μ0,μ1,Σ)=lni=1∏NP(xi,yi;ϕ,μ0,μ1,Σ)=lni=1∏NP(xi∣yi;μ0,μ1,Σ)P(yi;ϕ)=i=1∑NlnP(xi∣yi;μ0,μ1,Σ)+i=1∑NlnP(yi;ϕ)=i=1∑Nln(P(xi∣yi=1;μ1,Σ)yi⋅P(xi∣yi=0;μ0,Σ)1−yi)+i=1∑NlnP(yi;ϕ)=①
i=1∑NyilnP(xi∣yi=1;μ1,Σ)+②
i=1∑N(1−yi)lnP(xi∣yi=0;μ0,Σ)+③
i=1∑NlnP(yi;ϕ)(2-1)
- 求解
ϕ
\phi
ϕ
ϕ \phi ϕ 只存在于③式中,因此求解 ϕ \phi ϕ 只需要看③式即可,即:
∑ i = 1 N l n P ( y i ; ϕ ) = ∑ i = 1 N l n ϕ y i ( 1 − ϕ ) 1 − y i = ∑ i = 1 N [ y i l n ϕ + ( 1 − y i ) l n ( 1 − ϕ ) ] (2-2) \sum\limits_{i=1}^{N}ln P(y_{i};\phi) = \sum\limits_{i=1}^{N}ln \phi^{y_i}(1-\phi)^{1-y_i} \\ =\sum\limits_{i=1}^{N}[y_i ln \phi + (1-y_i) ln(1-\phi)]\tag{2-2} i=1∑NlnP(yi;ϕ)=i=1∑Nlnϕyi(1−ϕ)1−yi=i=1∑N[yilnϕ+(1−yi)ln(1−ϕ)](2-2)
对
ϕ
\phi
ϕ 求偏导,并令其等于0,可得:
∂
L
(
ϕ
,
μ
0
,
μ
1
,
Σ
)
∂
ϕ
=
∑
i
=
1
N
[
y
i
1
ϕ
−
(
1
−
y
i
)
1
1
−
ϕ
]
=
0
⇒
∑
i
=
1
N
[
y
i
(
1
−
ϕ
)
−
(
1
−
y
i
)
ϕ
]
=
0
⇒
∑
i
=
1
N
(
y
i
−
ϕ
)
=
0
⇒
∑
i
=
1
N
y
i
−
N
ϕ
=
0
ϕ
^
=
1
N
∑
i
=
1
N
y
i
=
N
1
N
(2-3)
\frac{ \partial L(\phi,\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\boldsymbol{\Sigma})}{\partial \phi} =\sum _{i=1}^{N}[y_{i}\frac{1}{\phi}-(1-y_{i})\frac{1}{1-\phi }]=0\\ \Rightarrow \sum _{i=1}^{N}[y_{i}(1-\phi)-(1-y_{i})\phi ]=0\\ \Rightarrow \sum _{i=1}^{N}(y_{i}-\phi)=0\\ \Rightarrow \sum _{i=1}^{N}y_{i}-N\phi=0\\ \hat{\phi}=\frac{1}{N}\sum _{i=1}^{N}y_{i}=\frac{N_{1}}{N} \tag{2-3}
∂ϕ∂L(ϕ,μ0,μ1,Σ)=i=1∑N[yiϕ1−(1−yi)1−ϕ1]=0⇒i=1∑N[yi(1−ϕ)−(1−yi)ϕ]=0⇒i=1∑N(yi−ϕ)=0⇒i=1∑Nyi−Nϕ=0ϕ^=N1i=1∑Nyi=NN1(2-3)
- 求解
μ
1
、
μ
0
\pmb{\mu}_1、\pmb{\mu}_0
μμμ1、μμμ0
μ 1 \pmb{\mu}_1 μμμ1 只存在于①式中,因此求解 μ 1 \pmb{\mu}_1 μμμ1 只需要看①式即可:
∑ i = 1 N y i l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) \sum\limits_{i=1}^{N}y_{i}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma}) i=1∑NyilnP(xi∣yi=1;μ1,Σ)
Δ = ∑ i = 1 N y i l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) = ∑ i = 1 N y i l n ( 1 ( 2 π ) p 2 ∣ Σ ∣ 1 2 exp ( − 1 2 ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) ) ) \begin{aligned} \Delta&=\sum\limits_{i=1}^{N}y_{i}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma})\\ &=\sum_{i=1}^N y_i ln ({1\over(2\pi)^{p\over2}{\vert \boldsymbol{\Sigma}\vert}^{1\over2}} \exp(-{1\over 2}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu}_1))) \end{aligned} Δ=i=1∑NyilnP(xi∣yi=1;μ1,Σ)=i=1∑Nyiln((2π)2p∣Σ∣211exp(−21(xi−μ1)TΣ−1(xi−μ1)))
μ 1 ^ = a r g m a x μ 1 Δ = a r g m a x μ 1 ∑ i = 1 N y i l n ( 1 ( 2 π ) p 2 ∣ Σ ∣ 1 2 exp ( − 1 2 ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) ) ) ⇒ a r g m a x μ 1 ∑ i = 1 N y i ( − 1 2 ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) ) = a r g m a x μ 1 − 1 2 ∑ i = 1 N y i ( x i T Σ − 1 − μ 1 T Σ − 1 ) ( x i − μ 1 ) = a r g m a x μ 1 − 1 2 ∑ 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 ) (2-4) \begin{aligned} \hat {\boldsymbol{\mu}_1}&=arg \underset {\boldsymbol{\mu}_1}{max}\ \Delta\\ &=arg \underset {\boldsymbol{\mu}_1}{max}\ \sum_{i=1}^N y_i ln ({1\over(2\pi)^{p\over2}{\vert \boldsymbol{\Sigma}\vert}^{1\over2}} \exp(-{1\over 2}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)))\\ & \Rightarrow arg \underset {\boldsymbol{\mu}_1}{max}\ \sum_{i=1}^N y_i(-{1\over 2}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)) \\&= arg \underset {\boldsymbol{\mu}_1}{max}\ -{1\over 2}\sum_{i=1}^N y_i(\boldsymbol{x}_i^T\boldsymbol{\Sigma}^{-1}-\boldsymbol{\mu}_1^T\boldsymbol{\Sigma}^{-1})(\boldsymbol{x}_i-\boldsymbol{\mu}_1) \\ &= arg \underset {\boldsymbol{\mu}_1}{max}\ -{1\over 2}\sum\limits_{i=1}^N(y_i\boldsymbol{x}_i^T\boldsymbol{\Sigma}^{-1}\boldsymbol{x}_i-2y_i\boldsymbol{\mu}_1^T\boldsymbol{\Sigma}^{-1}\boldsymbol{x}_i+y_i\boldsymbol{\mu}_1^T\boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_1)\end{aligned} \tag{2-4} μ1^=argμ1max Δ=argμ1max i=1∑Nyiln((2π)2p∣Σ∣211exp(−21(xi−μ1)TΣ−1(xi−μ1)))⇒argμ1max i=1∑Nyi(−21(xi−μ1)TΣ−1(xi−μ1))=argμ1max −21i=1∑Nyi(xiTΣ−1−μ1TΣ−1)(xi−μ1)=argμ1max −21i=1∑N(yixiTΣ−1xi−2yiμ1TΣ−1xi+yiμ1TΣ−1μ1)(2-4)
∂
Δ
∂
μ
1
=
0
−
1
2
∑
i
=
1
N
[
−
2
y
i
Σ
−
1
x
i
+
2
y
i
Σ
−
1
μ
1
)
=
0
⇒
∑
i
=
1
N
y
i
Σ
−
1
(
x
i
−
μ
1
)
=
0
⇒
∑
i
=
1
N
y
i
(
x
i
−
μ
1
)
=
0
⇒
μ
^
1
=
∑
i
=
1
N
y
i
x
i
∑
i
=
1
N
y
i
μ
^
1
=
1
N
1
∑
i
=
1
N
1
x
i
(2-5)
\begin{aligned} {\partial \Delta \over \partial \boldsymbol{\mu}_1}&=0\\ -{1\over2}\sum_{i=1}^N [-2y_i \boldsymbol{\Sigma}^{-1}\boldsymbol{x}_i+ 2y_i \boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_1)&=0\\ \Rightarrow \sum_{i=1}^N y_i \boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu}_1)&=0\\ \Rightarrow\sum_{i=1}^N y_i (\boldsymbol{x}_i-\boldsymbol{\mu}_1)&=0\\ \Rightarrow \hat{\boldsymbol{\mu}}_1&={\displaystyle\sum_{i=1}^N y_i\boldsymbol{x}_i\over \displaystyle\sum_{i=1}^N y_i}\\ \hat{\boldsymbol{\mu}}_1&={1\over N_1}\sum_{i=1}^{N_1}\boldsymbol{x}_i \end{aligned} \tag{2-5}
∂μ1∂Δ−21i=1∑N[−2yiΣ−1xi+2yiΣ−1μ1)⇒i=1∑NyiΣ−1(xi−μ1)⇒i=1∑Nyi(xi−μ1)⇒μ^1μ^1=0=0=0=0=i=1∑Nyii=1∑Nyixi=N11i=1∑N1xi(2-5)
由于
y
i
∈
{
0
,
1
}
y_i\in\{0,1\}
yi∈{0,1} 因此只有 时
y
i
=
1
y_i=1
yi=1 才被相加,所以
x
i
\pmb{x}_i
xxxi 和
∑
i
=
1
N
y
i
x
i
=
∑
i
=
1
N
1
x
i
\sum_{i=1}^N y_i\pmb{x}_i=\sum_{i=1}^{N_1}\pmb{x}_i
∑i=1Nyixxxi=∑i=1N1xxxi 为
μ
1
\pmb{\mu}_1
μμμ1 中的
y
=
1
y=1
y=1 的
x
\pmb{x}
xxx 期望,正是
C
1
C_1
C1 集合中
x
\pmb{x}
xxx 的均值(无偏估计)
同理,
μ
0
=
1
N
2
∑
i
=
1
N
2
x
i
(2-6)
\pmb{\mu}_0={1\over N_2}\sum_{i=1}^{N_2}\pmb{x}_i \tag{2-6}
μμμ0=N21i=1∑N2xxxi(2-6)
- 求解
Σ
\pmb{\Sigma}
ΣΣΣ
Υ = ∑ i = 1 N y i l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) + ∑ i = 1 N ( 1 − y i ) l n P ( x i ∣ y i = 0 ; μ 0 , Σ ) (2-7) \begin{aligned}\Upsilon&=\sum\limits_{i=1}^{N}y_{i}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma}) + \sum\limits_{i=1}^{N}(1-y_{i})ln P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma}) \end{aligned} \tag{2-7} Υ=i=1∑NyilnP(xi∣yi=1;μ1,Σ)+i=1∑N(1−yi)lnP(xi∣yi=0;μ0,Σ)(2-7)
由于 y i y_i yi 非1即0,因此 ∑ i = 1 N y i l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) = ∑ i = 1 N 1 l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) \sum\limits_{i=1}^{N}y_{i}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma})= \sum\limits_{i=1}^{N_1}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma}) i=1∑NyilnP(xi∣yi=1;μ1,Σ)=i=1∑N1lnP(xi∣yi=1;μ1,Σ),同理, ∑ i = 1 N ( 1 − y i ) l n P ( x i ∣ y i = 0 ; μ 0 , Σ ) = ∑ i = 1 N 2 l n P ( x i ∣ y i = 0 ; μ 0 , Σ ) \sum\limits_{i=1}^{N}(1-y_{i})ln P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma})= \sum\limits_{i=1}^{N_2}ln P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma}) i=1∑N(1−yi)lnP(xi∣yi=0;μ0,Σ)=i=1∑N2lnP(xi∣yi=0;μ0,Σ),则
Υ = = ∑ i = 1 N 1 l n P ( x i ∣ y i = 1 ; μ 1 , Σ ) + ∑ i = 1 N 2 l n P ( x i ∣ y i = 0 ; μ 0 , Σ ) (2-8) \Upsilon== \sum\limits_{i=1}^{N_1}ln P(\boldsymbol{x}_{i}|y_{i}=1;\boldsymbol{\mu}_1,\boldsymbol{\Sigma})+\sum\limits_{i=1}^{N_2}ln P(\boldsymbol{x}_{i}|y_{i}=0;\boldsymbol{\mu}_0,\boldsymbol{\Sigma})\tag{2-8} Υ==i=1∑N1lnP(xi∣yi=1;μ1,Σ)+i=1∑N2lnP(xi∣yi=0;μ0,Σ)(2-8)
先来计算 ∑ i = 1 N l n P ( x i ∣ y i ; μ , Σ ) \sum\limits_{i=1}^{N}ln P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu},\boldsymbol{\Sigma}) i=1∑NlnP(xi∣yi;μ,Σ)
∑
i
=
1
N
l
n
P
(
x
i
∣
y
i
;
μ
,
Σ
)
=
∑
i
=
1
N
l
n
[
1
(
2
π
)
p
2
∣
Σ
∣
1
2
e
−
1
2
(
x
−
μ
0
)
T
Σ
−
1
(
x
−
μ
0
)
]
=
∑
i
=
1
N
[
l
n
(
1
(
2
π
)
p
2
)
+
l
n
∣
Σ
∣
−
1
2
−
1
2
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
]
(2-9)
\begin{aligned}\sum\limits_{i=1}^{N}ln P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu},\boldsymbol{\Sigma}) &=\sum\limits_{i=1}^{N}ln [\dfrac{1}{(2\pi)^{\frac{p}{2}}\vert \boldsymbol{\Sigma} \vert ^{\frac{1}{2}}}e^{-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu}_0)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_0)}]\\ &= \sum_{i=1}^{N} [ln ({1\over (2\pi)^{p\over 2}})+ln \vert\boldsymbol{\Sigma} \vert^{-{1\over 2}}-{1\over 2}(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})] \end{aligned} \tag{2-9}
i=1∑NlnP(xi∣yi;μ,Σ)=i=1∑Nln[(2π)2p∣Σ∣211e−21(x−μ0)TΣ−1(x−μ0)]=i=1∑N[ln((2π)2p1)+ln∣Σ∣−21−21(xi−μ)TΣ−1(xi−μ)](2-9)
令常数项
∑
i
=
1
N
l
n
(
1
(
2
π
)
p
2
)
=
C
\sum_{i=1}^{N} ln ({1\over (2\pi)^{p\over 2}}) = C
∑i=1Nln((2π)2p1)=C
∑ i = 1 N l n P ( x i ∣ y i ; μ , Σ ) = C + ∑ i = 1 N [ − 1 2 l n ∣ Σ ∣ − 1 2 ( x i − μ ) T Σ − 1 ( x i − μ ) ] = − 1 2 N l n ∣ Σ ∣ − 1 2 ∑ i = 1 N ( x i − μ ) T Σ − 1 ( x i − μ ) + C (2-10) \begin{aligned} \sum\limits_{i=1}^{N}ln P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu},\boldsymbol{\Sigma}) &=C +\sum^N_{i=1}[-{1\over 2}ln {\vert \boldsymbol{\Sigma} \vert}-{1\over 2}(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})]\\ &=-{1\over 2}N ln {\vert \boldsymbol{\Sigma} \vert}-{1\over 2}\sum^N_{i=1}(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})+C \end{aligned}\tag{2-10} i=1∑NlnP(xi∣yi;μ,Σ)=C+i=1∑N[−21ln∣Σ∣−21(xi−μ)TΣ−1(xi−μ)]=−21Nln∣Σ∣−21i=1∑N(xi−μ)TΣ−1(xi−μ)+C(2-10)
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})
(xi−μ)TΣ−1(xi−μ) 是
1
×
p
p
×
p
p
×
1
1\times p \ \ \ \ p\times p\ \ \ \ p\times 1
1×p p×p p×1,因此结果为一实数,由矩阵迹的性质可得:
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
=
t
r
[
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
]
(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})=tr[(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})]
(xi−μ)TΣ−1(xi−μ)=tr[(xi−μ)TΣ−1(xi−μ)],接下来使用迹的交换性质可得:
t
r
[
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
]
=
t
r
[
(
x
i
−
μ
)
(
x
i
−
μ
)
T
Σ
−
1
]
t
r
[
∑
i
=
1
N
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
]
=
t
r
[
∑
i
=
1
N
(
x
i
−
μ
)
(
x
i
−
μ
)
T
Σ
−
1
]
(2-11)
tr[(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})] = tr[(\boldsymbol{x}_i-\boldsymbol{\mu})(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}]\\ tr[\sum^N_{i=1}(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu})] = tr[\sum^N_{i=1}(\boldsymbol{x}_i-\boldsymbol{\mu})(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}] \tag{2-11}
tr[(xi−μ)TΣ−1(xi−μ)]=tr[(xi−μ)(xi−μ)TΣ−1]tr[i=1∑N(xi−μ)TΣ−1(xi−μ)]=tr[i=1∑N(xi−μ)(xi−μ)TΣ−1](2-11)
由于协方差矩阵
S
=
∑
i
=
1
N
(
x
i
−
μ
)
(
x
i
−
μ
)
T
N
\pmb{S}=\dfrac{\sum^N_{i=1}(\boldsymbol{x}_i-\boldsymbol{\mu})(\boldsymbol{x}_i-\boldsymbol{\mu})^T}{N}
SSS=N∑i=1N(xi−μ)(xi−μ)T,因此
∑
i
=
1
N
(
x
i
−
μ
)
T
Σ
−
1
(
x
i
−
μ
)
=
t
r
(
N
S
Σ
−
1
)
=
N
t
r
(
S
Σ
−
1
)
(2-12)
\sum^N_{i=1}(\boldsymbol{x}_i-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}_i-\boldsymbol{\mu}) = tr(N\boldsymbol{S\Sigma}^{-1})=Ntr(\boldsymbol{S\Sigma}^{-1})\tag{2-12}
i=1∑N(xi−μ)TΣ−1(xi−μ)=tr(NSΣ−1)=Ntr(SΣ−1)(2-12)
代入式子(2-10)可得
∑
i
=
1
N
l
n
P
(
x
i
∣
y
i
;
μ
,
Σ
)
=
−
1
2
N
l
n
∣
Σ
∣
−
1
2
N
t
r
(
S
Σ
−
1
)
+
C
(2-13)
\begin{aligned} \sum\limits_{i=1}^{N}ln P(\boldsymbol{x}_{i}|y_{i};\boldsymbol{\mu},\boldsymbol{\Sigma}) =-{1\over 2}N ln {\vert \boldsymbol{\Sigma} \vert} -{1\over 2}Ntr(\boldsymbol{S\Sigma}^{-1}) +C \end{aligned}\tag{2-13}
i=1∑NlnP(xi∣yi;μ,Σ)=−21Nln∣Σ∣−21Ntr(SΣ−1)+C(2-13)
将此式带入
Υ
\Upsilon
Υ 可得:
Υ
=
−
1
2
N
1
l
n
∣
Σ
∣
−
1
2
N
1
t
r
(
S
1
Σ
−
1
)
−
1
2
N
2
l
n
∣
Σ
∣
−
1
2
N
2
t
r
(
S
2
Σ
−
1
)
+
C
^
=
−
1
2
[
N
l
n
∣
Σ
∣
+
N
1
t
r
(
S
1
Σ
−
1
)
+
N
2
t
r
(
S
2
Σ
−
1
)
]
+
C
^
(2-14)
\begin{aligned}\Upsilon &= -{1\over 2}N_1 ln {\vert \boldsymbol{\Sigma} \vert} -{1\over 2}N_1tr(\boldsymbol{S_1\Sigma}^{-1}) -{1\over 2}N_2 ln {\vert \boldsymbol{\Sigma} \vert} -{1\over 2}N_2tr(\boldsymbol{S_2\Sigma}^{-1}) +\hat{C}\\ &=-{1\over 2}[N ln {\vert \boldsymbol{\Sigma} \vert}+N_1tr(\boldsymbol{S_1\Sigma}^{-1})+N_2tr(\boldsymbol{S_2\Sigma}^{-1})]+\hat{C}\end{aligned}\tag{2-14}
Υ=−21N1ln∣Σ∣−21N1tr(S1Σ−1)−21N2ln∣Σ∣−21N2tr(S2Σ−1)+C^=−21[Nln∣Σ∣+N1tr(S1Σ−1)+N2tr(S2Σ−1)]+C^(2-14)
对
Υ
\Upsilon
Υ 求偏导可得:
∂
Υ
∂
Σ
=
−
1
2
[
N
1
∣
Σ
∣
∣
Σ
∣
Σ
−
1
+
N
1
∂
t
r
(
Σ
−
1
S
1
)
∂
Σ
+
N
2
∂
t
r
(
Σ
−
1
S
2
)
∂
Σ
]
=
−
1
2
[
N
Σ
−
1
+
N
1
S
1
T
(
−
1
)
Σ
−
2
+
N
2
S
2
T
(
−
1
)
Σ
−
2
]
=
−
1
2
(
N
Σ
−
1
−
N
1
S
1
T
Σ
−
2
−
N
2
S
2
T
Σ
−
2
)
(2-15)
\begin{aligned} \dfrac{\partial \Upsilon}{\partial \boldsymbol{\Sigma}} &=-\dfrac{1}{2}[N\dfrac{1}{|\boldsymbol{\Sigma} |}|\boldsymbol{\Sigma} |\boldsymbol{\Sigma}^{-1}+N_{1}\dfrac{\partial tr(\boldsymbol{\Sigma} ^{-1}\boldsymbol{S}_{1})}{\partial \boldsymbol{\Sigma}}+N_{2}\dfrac{\partial tr(\boldsymbol{\Sigma} ^{-1}\boldsymbol{S}_{2})}{\partial \boldsymbol{\Sigma}}]\\ &=-\dfrac{1}{2}[N\boldsymbol{\Sigma}^{-1}+N_{1}\boldsymbol{S}_{1}^{T}(-1)\boldsymbol{\Sigma} ^{-2}+N_{2}\boldsymbol{S}_{2}^{T}(-1)\boldsymbol{\Sigma} ^{-2}]\\ &=-\dfrac{1}{2}(N\boldsymbol{\Sigma}^{-1}-N_{1}\boldsymbol{S}_{1}^{T}\boldsymbol{\Sigma} ^{-2}-N_{2}\boldsymbol{S}_{2}^{T}\boldsymbol{\Sigma} ^{-2}) \end{aligned} \tag{2-15}
∂Σ∂Υ=−21[N∣Σ∣1∣Σ∣Σ−1+N1∂Σ∂tr(Σ−1S1)+N2∂Σ∂tr(Σ−1S2)]=−21[NΣ−1+N1S1T(−1)Σ−2+N2S2T(−1)Σ−2]=−21(NΣ−1−N1S1TΣ−2−N2S2TΣ−2)(2-15)
令
∂
Υ
∂
Σ
=
0
\dfrac{\partial \Upsilon}{\partial \boldsymbol{\Sigma}}=0
∂Σ∂Υ=0,可得
N
Σ
−
1
−
N
1
S
1
T
Σ
−
2
−
N
2
S
2
T
Σ
−
2
=
0
Σ
^
=
N
1
S
1
+
N
2
S
2
N
(2-16)
N\boldsymbol{\Sigma}^{-1}-N_{1}\boldsymbol{S}_{1}^{T}\boldsymbol{\Sigma} ^{-2}-N_{2}\boldsymbol{S}_{2}^{T}\boldsymbol{\Sigma} ^{-2}=0 \\ \hat{\boldsymbol{\Sigma}} = \dfrac{N_{1}\boldsymbol{S}_{1}+N_{2}\boldsymbol{S}_{2}}{N} \tag{2-16}
NΣ−1−N1S1TΣ−2−N2S2TΣ−2=0Σ^=NN1S1+N2S2(2-16)
通过上述公式,所有的未知参数都已经估计出来了,当需要判断一个新样本 x i \boldsymbol{x}_i xi 时,可分别求出 P ( x ∣ y = 0 ) P ( y = 0 ) 和 P ( x ∣ y = 1 ) P ( y = 1 ) P(\pmb{x}|y=0)P(y=0)和P(\pmb{x}|y=1)P(y=1) P(xxx∣y=0)P(y=0)和P(xxx∣y=1)P(y=1) 的概率,概率大者为样本数据所属类别。
3 代码实现
这里以Breast-Cancer
数据集为例,来实现高斯判别分析,对此数据集的详细介绍,请参考:机器学习实践-针对Breast-Cancer数据集,下面代码部分主要参考:daipuweiai ——高斯判别分析(GDA)Python代码
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
import matplotlib as mpl
import matplotlib.pyplot as plt
class GDA:
def __init__(self,train_data,train_label):
"""
这是GDA算法构造函数
:param train_data: 训练数据
:param train_label: 训练数据标签
"""
self.Train_Data = train_data
self.Train_Label = train_label
self.postive_num = 0 # 正样本个数
self.negetive_num = 0 # 负样本个数
postive_data = [] # 正样本数组
negetive_data = [] # 负样本数组
for (data,label) in zip(self.Train_Data,self.Train_Label):
if label == 1: # 正样本
self.postive_num += 1
postive_data.append(list(data))
else: # 负样本
self.negetive_num += 1
negetive_data.append(list(data))
# 计算正负样本的二项分布的概率
row,col = np.shape(train_data)
self.postive = self.postive_num*1.0/row # 正样本的二项分布概率
self.negetive = 1-self.postive # 负样本的二项分布概率
# 计算正负样本的高斯分布的均值向量
postive_data = np.array(postive_data)
negetive_data = np.array(negetive_data)
postive_data_sum = np.sum(postive_data, 0)
negetive_data_sum = np.sum(negetive_data, 0)
self.mu_positive = postive_data_sum*1.0/self.postive_num # 正样本的高斯分布的均值向量
self.mu_negetive = negetive_data_sum*1.0/self.negetive_num # 负样本的高斯分布的均值向量
# 计算高斯分布的协方差矩阵
positive_deta = postive_data-self.mu_positive
negetive_deta = negetive_data-self.mu_negetive
self.sigma = []
for deta in positive_deta:
deta = deta.reshape(1,col)
ans = deta.T.dot(deta)
self.sigma.append(ans)
for deta in negetive_deta:
deta = deta.reshape(1,col)
ans = deta.T.dot(deta)
self.sigma.append(ans)
self.sigma = np.array(self.sigma)
#print(np.shape(self.sigma))
self.sigma = np.sum(self.sigma,0)
self.sigma = self.sigma/row
self.mu_positive = self.mu_positive.reshape(1,col)
self.mu_negetive = self.mu_negetive.reshape(1,col)
def Gaussian(self, x, mean, cov):
"""
这是自定义的高斯分布概率密度函数
:param x: 输入数据
:param mean: 均值向量
:param cov: 协方差矩阵
:return: x的概率
"""
dim = np.shape(cov)[0]
# cov的行列式为零时的措施
covdet = np.linalg.det(cov + np.eye(dim) * 0.001)
covinv = np.linalg.inv(cov + np.eye(dim) * 0.001)
xdiff = (x - mean).reshape((1, dim))
# 概率密度
prob = 1.0 / (np.power(np.power(2 * np.pi, dim) * np.abs(covdet), 0.5)) * \
np.exp(-0.5 * xdiff.dot(covinv).dot(xdiff.T))[0][0]
return prob
def predict(self,test_data):
predict_label = []
for data in test_data:
positive_pro = self.Gaussian(data,self.mu_positive,self.sigma)
negetive_pro = self.Gaussian(data,self.mu_negetive,self.sigma)
if positive_pro >= negetive_pro:
predict_label.append(1)
else:
predict_label.append(0)
return predict_label
def run_main():
"""
这是主函数
"""
# 导入乳腺癌数据
breast_cancer = load_breast_cancer()
data = np.array(breast_cancer.data)
label = np.array(breast_cancer.target)
data = MinMaxScaler().fit_transform(data)
# 解决画图是的中文乱码问题
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
# 分割训练集与测试集
train_data,test_data,train_label,test_label = train_test_split(data,label,test_size=1/4)
# 数据可视化
plt.scatter(test_data[:,0],test_data[:,1],c = test_label)
plt.title("乳腺癌数据集显示")
plt.show()
# GDA结果
gda = GDA(train_data,train_label)
test_predict = gda.predict(test_data)
print("GDA的正确率为:",accuracy_score(test_label,test_predict))
# 数据可视化
plt.scatter(test_data[:,0],test_data[:,1],c = test_predict)
plt.title("GDA分类结果显示")
plt.show()
# Logistic回归结果
lr = LogisticRegression()
lr.fit(train_data,train_label)
test_predict = lr.predict(test_data)
print("Logistic回归的正确率为:",accuracy_score(test_label,test_predict))
# 数据可视化
plt.scatter(test_data[:,0],test_data[:,1],c = test_predict)
plt.title("Logistic回归分类结果显示")
plt.show()
if __name__ == '__main__':
run_main()
输出结果为:
GDA的正确率为: 0.972027972027972
Logistic回归的正确率为: 0.958041958041958
4 总结
4.1 高斯判别模型与逻辑回归比较
高斯判别模型的假设是 P ( X ∣ Y ) P(X|Y) P(X∣Y) 服从高斯分布, P ( Y ) P(Y) P(Y) 服从伯努利分布;逻辑回归的概率解释中可以看出它的假设是 P ( Y ∣ X ; θ ) P(Y|X; \theta) P(Y∣X;θ)服从伯努利分布。
假如我们将
p
(
y
=
1
∣
x
;
ϕ
,
μ
0
,
μ
1
,
Σ
)
p(y=1|x;\phi,\mu_{0},\mu_{1},\Sigma)
p(y=1∣x;ϕ,μ0,μ1,Σ) 视作关于
x
x
x 的函数,该函数可以表示成logistic
回归形式:
P
(
y
=
1
∣
x
;
ϕ
,
μ
0
,
μ
1
,
Σ
)
=
1
1
+
e
x
p
(
−
θ
T
x
)
P(y=1|\pmb{x};\phi,\pmb{\mu}_{0},\pmb{\mu}_{1},\pmb{\Sigma})=\dfrac{1}{1+exp(-\pmb{\theta}^{T}\pmb{x})}
P(y=1∣xxx;ϕ,μμμ0,μμμ1,ΣΣΣ)=1+exp(−θθθTxxx)1
其中,
θ
\pmb{\theta}
θθθ 可以用以
ϕ
,
μ
0
,
μ
1
,
Σ
\phi,\pmb{\mu}_{0},\pmb{\mu}_{1},\pmb{\Sigma}
ϕ,μμμ0,μμμ1,ΣΣΣ 为变量的函数表示。
如果 P ( X ∣ Y ) P(X|Y) P(X∣Y) 服从高斯分布,那么, P ( Y ∣ X ) P(Y|X) P(Y∣X) 就可以表示成逻辑回归函数形式;相反,如果 P ( Y ∣ X ) P(Y|X) P(Y∣X) 可表示成逻辑回归函数形式,并不代表 P ( X ∣ Y ) P(X|Y) P(X∣Y) 服从高斯分布。这意味着高斯判别模型比逻辑回归需要更加严格的模型假设,当然,如果高斯模型的假设是正确的,那么,高斯判别模型具有更高的拟合度。基于以上原因,在实践中使用逻辑回归比使用高斯判别模型更普遍。
综上,我们可以发现高斯判别模型的假设强于Logistic
模型,也就是说逻辑回归模型的鲁棒性更强。这就表示在数据量足够大时,更倾向于选择Logistic
回归模型。而在数据量较小,且
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y) 服从一个高斯分布非常合理时,选择高斯判别分析模型更适合。
以上就是GDA的思路和实现方式,此模型只能应用于监督学习中,并且数据的分布必须大致是高斯分布的,对于一些奇怪的形状,可能并没有好的分类结果。
参考
- 机器学习实现与分析之五(高斯判别分析):https://www.cnblogs.com/jcchen1987/p/4424436.html
- 判别模型和生成模型:http://blog.sciencenet.cn/blog-248173-227964.html
- 监督学习GDA 高斯判别分析:https://www.cnblogs.com/taokongcn/p/4117413.html
- 机器学习笔记(五)-高斯判别分析:https://blog.csdn.net/weixin_42555080/article/details/89508850
- 斯坦福机器学习笔记(三)—— 高斯判别分析:https://blog.csdn.net/qq_30091945/article/details/81503187
- 【机器学习】高斯判别分析:https://mp.weixin.qq.com/s?__biz=Mzg3OTAyMjcyMw