part 6

接下来就是无监督学习算法了。

k均值聚类

问题背景

样本集描述:
\[
x\in D, x\in R^n
\]
之前的有监督学习问题中,所有的x都有对应的y。但是如果我们的x没有对应的y。但是我们还是希望对x进行分类那应该如何做呢。

迭代过程

最简单的想法就是圈地。对每个类别圈一定的样本。即类似于构造一个星团的过程,我们希望星团有一个中心,属于这个星团的星星离这个星团越近越好。不属于这个星团的星星离这个中心越远越好。但是这个中心的选取也是未知的,于是我们给出一个迭代算法:

  1. 任意选取k个聚类中心\(\mu_k\)
  2. 计算样本的类型\[c ^ { ( i ) } : = \arg \min _ { j } \| x ^ { ( i ) } - \mu _ { j } \| | ^ { 2}\]
  3. 重新计算各个聚类中心 \[\mu _ { j } : = \frac { \sum _ { i = 1} ^ { m } 1\left\{ c ^ { ( i ) } = j \right\} x ^ { ( i ) } } { \sum _ { i = 1} ^ { m } 1\left\{ c ^ { ( i ) } = j \right\} }\]
  4. 回到2直到收敛,即聚类中心重新计算变得不大时

迭代过程如下图所示

这里收敛性的证明请翻阅讲义。

EM算法

问题背景

再讲EM之前先回顾一下之前我们求分布参数用的最大似然。比如一个班级分为男生和女生,我们假设男生和女生的身高服从正态分布。那么正态分布的参数就可以用最大似然法来求解。但是如果把男生和女生混起来,我们怎么求这个分布呢。或者我们说我们手上有一个班级的身高数据,但是不知道是男生还是女生的。我们想要对其分别求出男生和女生的身高的正态分布参数。

迭代过程

那么直观理解EM算法的话,EM算法就是一个存在隐变量的最大似然法。所谓的隐变量就是对于x我们所不知道的那个类别y。于是EM算法做的事情其实就是两步:

  1. 拿出一个人的身高数据,先猜测它到底是男是女
  2. 根据猜测的结果求分布的参数

公式化描述的话就是这么个过程:
这是我们最初求参数用的对数似然:
\[
\theta ^ { * } = \arg \max _ { \theta } \ln P ( X | \theta )
\]
因为存在隐变量z:
\[
\theta ^ { * }= \arg \max _ { \theta } \ln\sum _ { z } P ( X ,z | \theta )
\]
对数似然即:
\[
\left.\begin{aligned} L ( \theta ) & = \ln P ( X | \theta ) \\ & = \ln \sum _ { z } P ( X ,z | \theta ) \end{aligned} \right.
\]
因为z不好求,稍微做一下处理:
\[
L(\theta)= \ln \sum _ { z } P ( X ,z | \theta ) \frac { Q ( z ) } { Q ( z ) }
\]
利用log函数凹函数的性质和琴声不等式得到下界:
\[
L(\theta)\geq \sum _ { z } Q ( z ) \ln \frac { P ( X ,z | \theta ) } { Q ( z ) }
\]

那么我们EM算法就是:

  1. E步。先似然最大化求z的分布Q(z):\[Q _ { n } ( z ) = \arg \max _ { \mathcal { Q } ( z ) } \sum _ { z } Q ( z ) \ln \frac { P \left( X ,z | \theta _ { n } \right) } { Q ( z ) }\] 利用拉格朗日算子可以得到,详细推导请翻阅参考:\[\Rightarrow Q _ { n } ( z ) = P \left( z | X ,\theta _ { n } \right)\] 这样我们就得到了隐变量的估计。
  2. M步。既然我们已经得到了类别,再最大似然一次\[\left.\begin{aligned} \theta ^ { n + 1} & = \arg \max _ { \theta } l ( \theta ) \\ & = \arg \max _ { \theta } \sum _ { z } P \left( z | X ,\theta ^ { n } \right) \ln \frac { P ( X ,z | \theta ) } { P \left( z | X ,\theta ^ { n } \right) } \\ & = \arg \max _ { \theta } \sum _ { z } P \left( z | X ,\theta ^ { n } \right) \ln P ( X ,z | \theta ) ) \\ & = \arg \max _ { \theta } E _ { z | X ,\theta ^ { n } } ( \ln P ( X ,z | \theta ) ) \end{aligned} \right.\] 这样就得到了其他参数的估计。

高斯混合模型

问题背景

之前生成式的分类算法里面讲到了高斯辨别分析。我们构造了一个高斯分布去拟合不同的类别。那么这个高斯混合模型也是差不多的。只是多了一个隐变量z,这个z又可以通过EM算法来进行求解。

迭代过程

和高斯判别分析一样我们的对数似然是:
\[
\ell ( \phi ,\mu ,\Sigma ) = \sum _ { i = 1} ^ { m } \log p \left( x ^ { ( i ) } ; \phi ,\mu ,\Sigma \right)
\]
注意y的分布是一个多项式分布而不是伯努利分布,然后引入隐变量z:
\[
\ell ( \phi ,\mu ,\Sigma ) = \sum _ { i = 1} ^ { m } \log \sum _ { z ^ { ( i ) } = 1} p \left( x ^ { ( i ) } | z ^ { ( i ) } ; \mu ,\Sigma \right) p \left( z ^ { ( i ) } ; \phi \right)
\]
假设我们知道z的分布,那么似然函数可以化简成:
\[
\ell ( \phi ,\mu ,\Sigma ) = \sum _ { i = 1} ^ { m } \log p \left( x ^ { ( i ) } | z ^ { ( i ) } ; \mu ,\Sigma \right) + \log p \left( z ^ { ( i ) } ; \phi \right)
\]

对参数分别求导就得到了
\[
\phi _ { j } = \frac { 1} { m } \sum _ { i = 1} ^ { m } 1\left\{ z ^ { ( i ) } = j \right\}
\]
\[
\mu _ { j } = \frac { \sum _ { i = 1} ^ { m } 1\left\{ z ^ { ( i ) } = j \right\} x ^ { ( i ) } } { \sum _ { i = 1} ^ { m } 1\left\{ z ^ { ( i ) } = j \right\} }
\]
\[
\Sigma _ { j } = \frac { \sum _ { i = 1} ^ { m } 1\left\{ z ^ { ( i ) } = j \right\} \left( x ^ { ( i ) } - \mu _ { j } \right) \left( x ^ { ( i ) } - \mu _ { j } \right) ^ { T } } { \sum _ { i = 1} ^ { m } 1\left\{ z ^ { ( i ) } = j \right\} }
\]
到目前为止。我们的求解过程还是和之前的高斯判别分析一样。但是这里有一个问题就是实际上隐类别z是不知道的。所以我们可以用E步进行估计。
EM算法如下:

  1. E步估计类别\[w _ { j } ^ { ( \text{i} ) } : = p \left( Z ^ { ( i ) } = j | x ^ { ( i ) } ; \Phi ,\mu ,\Sigma \right)\]利用贝叶斯可以得到\[p \left( z ^ { ( i ) } = j | x ^ { ( i ) } ; \phi ,\mu ,\Sigma \right) = \frac { p \left( x ^ { ( i ) } | z ^ { ( i ) } = j ; \mu ,\Sigma \right) p \left( z ^ { ( i ) } = j ; \phi \right) } { \sum _ { l = 1} ^ { k } p \left( x ^ { ( i ) } | z ^ { ( i ) } = l ; \mu ,\Sigma \right) p \left( z ^ { ( i ) } = l ; \phi \right) }\]
  2. M步更新参数\[\phi _ { j } : = \frac { 1} { m } \sum _ { i = 1} ^ { m } w _ { j } ^ { ( i ) }\] \[\mu _ { j } : = \frac { \sum _ { i = 1} ^ { m } w _ { j } ^ { ( i ) } x ^ { ( i ) } } { \sum _ { i = 1} ^ { m } w _ { j } ^ { ( i ) } }\] \[\Sigma _ { j } \quad = \frac { \sum _ { i = 1} ^ { m } w _ { j } ^ { ( i ) } \left( x ^ { ( i ) } - \mu _ { j } \right) \left( x ^ { ( i ) } - \mu _ { j } \right) ^ { T } } { \sum _ { i = 1} ^ { m } w _ { j } ^ { ( i ) } }\]

参考

  1. 怎么通俗易懂地解释EM算法并且举个例子?
  2. The Introduction to Expectation Maximization Algorithm

cs229_part6的更多相关文章

  1. cs229课程索引

    重要说明 这个系列是以cs229为参考,梳理下来的有关机器学习传统算法的一些东西.所以说cs229的有些内容我会暂时先去掉放在别的部分里面,也会加上很多重要的,但是cs229没有讲到的东西.而且本系列 ...

随机推荐

  1. Unity Shader入门精要学习笔记 - 第14章非真实感渲染

    转载自 冯乐乐的 <Unity Shader 入门精要> 尽管游戏渲染一般都是以照相写实主义作为主要目标,但也有许多游戏使用了非真实感渲染(NPR)的方法来渲染游戏画面.非真实感渲染的一个 ...

  2. php出现Warning: file_put_contents,failed to open stream

    Warning: file_put_contents(D:/wwwroot/jinxiongdi/web/temp/caches/f/index_40F756F0.php) [function.fil ...

  3. arcengine 将地图文件保存为图片(包括各种图片格式)

    1,最近做了个地图文件输出图片的功能,思想主要就是利用MapControl的ActiveView中的out方法: 2代码如下:欢迎交流指正 SaveFileDialog m_save = new Sa ...

  4. [转]nopcommerce之权限模块

    本文转自:http://www.nopchina.net/category/%E6%9E%B6%E6%9E%84.html 这篇文章简单介绍一下nopcommerce的权限模块,nopcommerce ...

  5. Magento 0元订单 支付方式 -- Magento 0 Subtotal Payment Method

    需求 现有购物网站支持2种支付方式,但是考虑到会出现如下情况: 在一个优惠活动中,假如有一些订单的总金额为0, 那么这些订单就不必跳转到支付网关,现有支付方式无法处理此种情况. 分析 当custome ...

  6. Todolist总结

    一.组件类里面的函数尽可能写成箭头函数的形式,方便绑定this 上面的箭头函数是好的,写面的不好,他需要在用的时候绑定this,或者在constructor绑定,如下: 如上用的时候绑定this是不好 ...

  7. copyin函数

    详见:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.kerneltechref%2Fdoc%2Fk ...

  8. maven打包错误:java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.118 sec <<< FAILURE! - in ...

  9. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?

    https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...

  10. 实 Jordan 标准型和实 Weyr 标准型

    将学习到什么 本节讨论关于实矩阵的实形式的 Jordan 标准型,也讨论关于复矩阵的另外一种形式的 Jordan 标准型,因为它在与交换性有关的问题中很有用.   实 Jordan 标准型 假设 \( ...