1.15 Generative Learning Algorithm:GDA and Mixture of Gaussians/GMM

1. 生成学习算法(Generative Learning Algorithm)与判别学习算法(Discriminative Learning  Algorithm):

之前涉及到的回归类模型就是DLA的一类,是直接对\large p(y|x)建模的。更详细一点的说,没有使用正则化的模型是对\large p(y|X;\theta)

建模,\large \theta是一个参数。而使用了正则化的模型则是对\large p(y|X,\theta)=p(y|X,\theta)=p(y|(X,\theta))p(\theta)建模。

而GLA则是对\large p(x|y)建模,以分类问题为例,生成学习通过对不同类的特征建模,得到\large p(x)=\sum_{i=1}^{k}p(x|y_i)p(y_i)

利用贝叶斯公式:\large p(y|x)=\frac{p(x|y)p(y)}{p(x)}进行分类。

现在我学到的生成学习分类算法有两类:GDA(高斯判别分析)和Naive Bayes(朴素贝叶斯)。

当类别标记不知道时,即未观测,分类问题就是一个聚类问题。将未被观测到的类标记当成隐随机变量(latent random variable),通过EM算法,就可以求解聚类问题。这篇博客记录了分类问题下GDA以及用于分类高斯混合模型。

2.GDA:二分类:

(1)

模型假设:\large y \sim B(\phi) \\ x|y=0 \sim N(\mu_0,\Sigma )\\ x|y=1\sim N(\mu_1,\Sigma),对应的分布为:\large p(y)=\phi^y(1-\phi)^{1-y}\\p(x|y=0)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))\\ p(x|y=1)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))

因为\large \phi也是未知量,所以直接对联合分布\large p(x,y)进行极大似然估计,得到对数似然函数为:\large l(\phi,\mu_0,\mu_1,\Sigma)=log\prod_{i=1}^{m}p(x^i,y^i;\phi,\mu_0,\mu_1,\Sigma)=\large log\prod_{i=1}^{m}p(x^i|y^i;\mu_0,\mu_1,\Sigma)p(y^i;\phi)

估计,\large \Sigma时,和其他自变量无关,所以有些项是不用关心的。通过求导,

估计出来的结果是:

\large \phi = \frac{1}{m}\sum_{i=1}^{m}1\begin{Bmatrix} y_i=1 \end{Bmatrix}\ ,\mu_0 = \frac{\sum_{i=1}^{m}1\begin{Bmatrix} y^i=0 \end{Bmatrix}x^i}{\sum_{i=1}^{m}1\begin{Bmatrix} y^i=0 \end{Bmatrix}}\\\mu_1= \frac{\sum_{i=1}^{m}1\begin{Bmatrix} y^i=1 \end{Bmatrix}x^i}{\sum_{i=1}^{m}1\begin{Bmatrix} y^i=1 \end{Bmatrix}} ,\Sigma = \frac{1}{m}\sum_{i=1}^{m}(x^i-\mu_{y^i})(x^i-\mu_{y^i})^T

(2)与Logistic Regression的对比:

logistic regression有着更弱的假设,而高斯判别分析需要假设更强一些。

(3)多分类高斯判别分析:

令z表示类标记,有:\large l(\theta,\mu,\Sigma)=\sum_{i=1}^{m}log(p(x^i|z^i;\mu,\Sigma)+log(p(z^i;\phi))

最终结果如下:\large \phi_j = \frac{1}{m}\sum_{i=1}^{m}1\begin{Bmatrix} z^i=j \end{Bmatrix}\ ,\mu_j = \frac{\sum_{i=1}^{m}1\begin{Bmatrix} z^i=j\end{Bmatrix}x^i}{\sum_{i=1}^{m}1\begin{Bmatrix} z^i=j \end{Bmatrix}}\\ \Sigma_j = \frac{\sum_{i=1}^{m}1\begin{Bmatrix} z^i=j \end{Bmatrix}(x^i-\mu_j)(x^i-\mu_j)^T}{\sum_{i=1}^{m}1\begin{Bmatrix} z^i=j \end{Bmatrix}}

PS:这里有一个问题就是:为什么二分类时 用的是一个\large \Sigma,但是多分类时,有多少个类就要算多少个\large \Sigma

3.Mixture of Gaussians:

对于混合高斯用于聚类,需要知道EM算法的相关知识,见1.16

优化问题同1中(3)所记录的:\large l(\theta,\mu,\Sigma)=\sum_{i=1}^{m}log(p(x^i|z^i;\mu,\Sigma)+log(p(z^i;\phi))

但是因为z是一个隐变量,所以直接计算比较困难,所以使用EM迭代计算。算法推导还没完全搞懂,这里不记录。

算法流程如下:

Repeat until convergence{

 E-step: For each i,j,set \large w_j^i=Q_i(z^i)=p(z^i=j|x^i;\phi,\mu,\Sigma)=\frac{p(x^i|z^i=j;\mu,\Sigma)p(z^i=j;\phi)}{\sum_{l=1}^{k}p(x^i|z^i=l;\mu,\Sigma)p(z^i=l;\phi)}

M-step: Set \large \phi_j = \frac{1}{m}\sum_{i=1}^{m}w_j^i ,\\\mu_j = \frac{\sum_{i=1}^{m}w_j^ix^i}{\sum_{i=1}^{m} w_j^i} \\\Sigma_j = \frac{\sum_{i=1}^{m}w^i_j(x^i-\mu_j)(x^i-\mu_j)^T}{\sum_{i=1}^{m}w_j^i}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值