【温故而知新】高斯判别分析(Gaussian Discriminant Analysis)

给定数据集D=\left \{(x_i,y_i)_{i=1}^N,x_i \in \mathbb{R}^p, y_i \in \{0, 1\} \right \}

概率判别模型是直接去求P(y|x),如下:

                \hat{y}=\arg \max_{y\in\{ 0,1 \}}P(y|x)

高斯判别分析是一种概率生成模型,这里我们需要最大化后验概率估计,对于二分类,高斯判别分析并不是直接去求P(y=0|x)P(y=1|x)的值,而是去比较P(y=0|x)P(y=1|x)的大小关系,而是对联合概率进行建模;由贝叶斯公式可知,

               P(y|x)=\frac{P(x|y) \cdot P(y)}{P(x)} \propto P(x|y) \cdot P(y)=P(x,y)

此处,yP(x)无关,所以P(y|x)正比于P(x|y) \cdot P(y),其中,P(y|x)是posterior,P(x|y)是likehood,P(y)是piror。

GDA假设:

              y \sim Bernouni(\varnothing )

             x|y=1 \sim N(\mu_1, \sigma )

             x|y=0 \sim N(\mu_2, \sigma )

由于y服从伯努利分布,所以P(y)=\varnothing ^y(1 -\varnothing) ^{1-y},而 P(x|y)=P(x|y=1)P(x|y=0)=N(\mu_1, \sigma)^yN(\mu_2, \sigma)^{1-y},  这里先不将高斯分布的概率密度函数展开写。

likehood: L(\theta)=\log \prod_{i=1}^{N}P(x_i,y_i)

                        =\sum_{i=1}^{N} \log \left \{P(x_i|y_i)P(y_i) \right \}

                        =\sum_{i=1}^{N} \left \{\log P(x_i|y_i)+ \log P(y_i) \right \}

                        =\sum_{i=1}^{N} \left \{\log \left (N(\mu_1, \sigma)^{y_i}N(\mu_2, \sigma)^{1- y_i} \right )+ \log \varnothing ^{y_i} (1 - \varnothing) ^{1-y_i} \right \}

                        =\sum_{i=1}^{N} \left \{\log N(\mu_1, \sigma)^{y_i} + \log N(\mu_2, \sigma)^{1- y_i} + \log \varnothing ^{y_i} (1 - \varnothing) ^{1-y_i} \right \}

为方便求解,记:

                      l_1=\sum_{i=1}^{N}\log N(\mu_1, \sigma)^{y_i}l_2=\sum_{i=1}^{N}\log N(\mu_2, \sigma)^{1-y_i}l_3=\sum_{i=1}^{N} \log \varnothing ^{y_i} (1 - \varnothing) ^{1-y_i}

 

求解\varnothing

                       l_3=\sum_{i=1}^{N} \log \varnothing ^{y_i} (1 - \varnothing) ^{1-y_i}=\sum_{i=1}^{N} \left \{ y_i\log \varnothing + (1-y_i)\log (1 -\varnothing) \right \}

                       \frac{\partial l_3}{\partial \varnothing }=\sum_{i=1}^{N}y_i\frac{1}{\varnothing}+(1-y_i)\frac{1}{1-\varnothing}\cdot (-1)

                              =\sum_{i=1}^{N}y_i\frac{1}{\varnothing}-(1-y_i)\frac{1}{1-\varnothing}

\frac{\partial l_3}{\partial \varnothing }=0,可得

                       \sum_{i=1}^{N}y_i\frac{1}{\varnothing}-(1-y_i)\frac{1}{1-\varnothing}=0

                       \sum_{i=1}^{N}y_i(1- \varnothing)-(1-y_i)\varnothing =0

                       \sum_{i=1}^{N}y_i- y_i \varnothing- \varnothing + y_i\varnothing =0

                        \sum_{i=1}^{N} \left (y_i - \varnothing \right ) =0

                        \sum_{i=1}^{N} \left y_i - N\varnothing \right =0

                         \hat{ \varnothing }= \frac{1}{N} \sum_{i=1}^{N} y_i =\frac{N_1}{N}, 在这里\sum_{i=1}^{N}y_i=N_1N_1y_i=1的样本个数

求解\mu_1,

l_1=\sum_{i=1}^{N}\log N(\mu_1, \sigma)^{y_i}=\sum_{i=1}^{N}y_i \log \frac{1}{(2\pi)^{p/2} \left | \sigma \right |^{1/2}} exp \left \{ -\frac{1}{2}(x_i-\mu_1)^T\sigma^{-1}(x_i-\mu_1) \right \}

                                       =\sum_{i=1}^{N}y_i \left \{ -\frac{1}{2}(x_i-\mu_1)^T\sigma^{-1}(x_i-\mu_1) \right \}

                                       =-\frac{1}{2}\sum_{i=1}^{N}y_i \left ( x_i^T\sigma^{-1}x_i - x_i^T\sigma^{-1}\mu_1 - \mu_1^T\sigma^{-1}x_i + \mu_1^T\sigma^{-1}\mu_1 \right ), 这里x_i的维度为p*1, \sigma^{-1}的维度为p*p,\mu_1的维度为p*1, 所以x_i^T\sigma^{-1}\mu_1\mu_1^T\sigma^{-1}x_i^T均为实数,所以x_i^T\sigma^{-1}\mu_1=\mu_1^T\sigma^{-1}x_i^T

                                       =-\frac{1}{2}\sum_{i=1}^{N}y_i \left ( x_i^T\sigma^{-1}x_i - 2\mu_1^T\sigma^{-1}x_i + \mu_1^T\sigma^{-1}\mu_1 \right ), 这里x_i^T\sigma^{-1}x_i,\mu_1^T\sigma^{-1}x_i均为实数\mathbb{R}

                 \frac{\partial l1}{\partial \mu_1}=-\frac{1}{2}\sum_{i=1}^{N}y_i \left( -2 \sigma^{-1}x_i+2\sigma^{-1}\mu_1 \right )

                         =\sum_{i=1}^{N}y_i \left(\sigma^{-1}x_i - \sigma^{-1}\mu_1 \right )

\frac{\partial l1}{\partial \mu_1}=0,可得

                         \sum_{i=1}^{N}y_i \left(\sigma^{-1}x_i - \sigma^{-1}\mu_1 \right )=0

                         \sum_{i=1}^{N}y_i \left(x_i - \mu_1 \right )=0 上面式子同时乘以\sigma

                         \mu_1\sum_{i=1}^{N}y_i=\sum_{i=1}^{N}y_ix_i

                         \mu_1 = \frac{\sum_{i=1}^{N}y_ix_i}{\sum_{i=1}^{N}y_i}=\frac{\sum_{i=1}^{N}y_ix_i}{N_1}

 

这里我们将y=1记为C_1类,y=0记为C_2类,则

x_{c_1}=\{x_i |y_i=1 \},    x_{c_2}=\{ x_i|y_i=0 \},

 \left | x_{c1} \right | = N_1,    \left | x_{c2} \right | = N_2,    N_1+N_2 = N

\sigma:

                  \hat{\sigma}=\arg \max_{\sigma} \left \{ \log N(\mu_1, \sigma)^{yi} + \log N(\mu+2, \sigma)^{1-y_i} \right \}

                 l1+l2=\sum_{x_i\in c_1}\logN(\mu_1, \sigma)+\sum_{x_i\in c_2}\logN(\mu_2, \sigma)

因为\sum_{i=1}^{N} \log N(\mu, \sigma)=\sum_{i=1}^{N} \log \frac{1}{(2\pi)^{p/2}+|\sigma|^{1/2}}exp \left \{ -\frac{1}{2}(x-\mu)^T\sigma^{-1}(x-\mu) \right \}

                                  =\sum_{i=1}^{N} \left \{ \log \frac{1}{(2\pi)^{p/2}} + \log \sigma^{-1/2} \right \}+ \left \{ -\frac{1}{2}(x-\mu)^T\sigma^{-1}(x-\mu) \right \}

                                  =\sum_{i=1}^{N} \left \{ C-\frac{1}{2}\log |\sigma| \right \}-\frac{1}{2}(x-\mu)^T\sigma^{-1}(x-\mu)

                                  =C-\frac{1}{2}N \log |\sigma|-\frac{1}{2}(x-\mu)^T\sigma^{-1}(x-\mu)

           \sum_{i=1}^{N}tr\left \[ (x_i-\mu)^T\sigma^{-1}(x-\mu) \right \],                根据tr(ABC)=tr(CAB),可得

           =\sum_{i=1}^{N}tr\left \[ (x-\mu) (x_i-\mu)^T\sigma^{-1} \right \]

           =tr\left \[ \sum_{i=1}^{N} (x-\mu) (x_i-\mu)^T\sigma^{-1} \right \]

           =tr\left \[ \sum_{i=1}^{N} (x-\mu) (x_i-\mu)^T\sigma^{-1} \right \],        在这里\sum_{i=1}^{N} (x-\mu) (x_i-\mu)^T=NS

           =N\cdot tr(S\sigma^{-1})

所以 l1+l2=\sum_{x_i\in c_1}\logN(\mu_1, \sigma)+\sum_{x_i\in c_2}\logN(\mu_2, \sigma)

                     =-\frac{1}{2}N_1 \log |\sigma| - \frac{1}{2}N_1tr(S_1\sigma^{-1})+C-\frac{1}{2}N_2 \log |\sigma| - \frac{1}{2}N_2tr(S_2\sigma^{-1})+C

                     =-\frac{1}{2}N\log |\sigma| - \frac{1}{2}N_1tr(S_1\sigma^{-1}) - \frac{1}{2}N_2tr(S_2\sigma^{-1})+C

                     =-\frac{1}{2} \left \{ N\log |\sigma| + \frac{1}{2}N_1tr(S_1\sigma^{-1}) + \frac{1}{2}N_2tr(S_2\sigma^{-1}) \right \}+C

\frac{\partial \ln|A|}{\partial A}=A^{-1},以及\frac{\partial tr(S_1\sigma^{-1})}{\partial \sigma}=\frac{\partial tr(\sigma^{-1}S_1)}{\partial \sigma}=S_1^T\cdot (-1)\cdot \sigma^{-2}=-S_1^T \sigma^{-2}可得

                   \frac{\partial (l_1+l_2)}{\partial \sigma}=-\frac{1}{2} (N\sigma^{-1}-N_1S_1\sigma^{-2}-N_2S_2\sigma^{-2})

\frac{\partial (l_1+l_2)}{\partial \sigma}=0,可得

                   -\frac{1}{2} (N\sigma^{-1}-N_1S_1\sigma^{-2}-N_2S_2\sigma^{-2})=0

                            N\sigma^{-1}-N_1S_1\sigma^{-2}-N_2S_2\sigma^{-2}=0

                                            N\sigma-N_1S_1-N_2S_2=0

                                     \hat{\sigma}=\frac{1}{N}(N_1S_1+N_2S_2)

 

到此,高斯判别分析的未知量\varnothing\mu_1\mu_2\sigma 均已经求出;

完,

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(ML算法实现-python)