http://weibo.com/yanxiangzhang http://blog.csdn.net/stdcoutzyx
斯坦福 ML 公开课笔记 12
本文对应斯坦福 ML 公开课的第 12 个视频,第 12 个视频与前面相关性并不大,开启了
一个新的话题——无监督学习。主要内容包括无监督学习中的 K 均值聚类(K-means)算法,
混合高斯分布模型(Mixture of Gaussians, MoG),求解 MoG 模型的 EM 算法,以及 EM 的一
般化形式,在 EM 的一般化形式之前,还有一个小知识点,即 Jensen不等式(Jensen’s inequality)。
K-Means 算法
在之前的算法和模型中,训练数据都是带有标记的,这样的算法是有监督学习。当训练
数据没有标记时,成为无监督学习。聚类算法就是无监督学习最常见的一种,给定一组数据,
需要聚类算法去发掘数据中的隐藏结构。
聚类算法应用很广。举例来说,对基因进行聚类,可以发掘不同物种中具有相同功能的
基因片段;对顾客行为进行聚类可以把市场分为不同的几个部分,针对不同的顾客可以采用
不同的促销策略;在 google 的新闻首页,对新闻进行聚类,使得描述同一事件的报道不全
部展示;在图片分割中,可以利用图片不同部分的相似性来理解图片信息等。
下面对 K-Means算法的流程进行介绍,给定输入数据为
,K-Means
算法如下:
1) 选择初始的 k 个聚类中心
2) 对每个样本数据来说,将其类别标号设为距离其最近的聚类中心的标号,即
(1)
3) 将每个聚类中心的值更新为与该类别中心相同类别的所有样本的平均值,即
(2)
4) 重复第 2 步和第 3 步,直到聚类中心的变化低于阈值为止
对于 K-Means 来说,它要优化的目标函数可以看成如下形式:
(3)
可以将 K-Means 算法看做是目标函数 J 的坐标下降过程,在第 2 步,我们保持聚类中
心不变,将样本类别设为距离最近的中心的类别,此时修改了类别的样本的的目标函数项会
变小,即
修改类别值的样本
值变小,而没有修改类别的样本值不变,从而整体变小。
在第 3 步中,更新了聚类中心点的值,这样使得对每个类别来说,其目标函数项会变小,即
属于某类的样本
变小,从而整体变小。
在 K-Means 算法中,如何选择初始的聚类中心数目 k 是一个普遍的问题。有很多自动
选择聚类中心的算法,但不在本文的范围内。
由于公式 3 不是一个凸函数,因而 K-Means 算法能保证收敛到一个局部极值,不能保
证收敛到全局极值最优值。一个较为简单的解决方法是随机初始化多次,以最优的聚类结果
为最终结果。
在聚类结束后,如果一个中心没有得到任何样本,那么需要去除这个中心点,或者重新
初始化。
聚类算法可用于离群点检测,离群点检测应用也很普遍,比如飞机零件的评测,信用卡