机器学习笔记(17):聚类(2)

本文来自之前在Udacity上自学机器学习的系列笔记。这是第17篇,介绍了什么是聚类(2),介绍软聚类(高斯混合聚类模型)。

正态分布回顾
软聚类牵扯到一个非常有趣的概率学知识,即正态分布。正态分布有趣之处在于现实生活中的很多数据都可以用正态分布来进行解释。

举个例子,我们抛掷1枚硬币,有\frac{1}{2}的机会会得到正面或者反面。如果同时抛掷10枚硬币,记录当中有几个是正面的。然后重复操作一百万次,统计每一次正面数的概率分布。最终可以得到如下图所示的函数图像:

image.png

也就是说,10枚硬币中有5个是正面(或反面)的概率是最高的,然后向两边方向对称地降低概率。

具体Python代码为:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

n = 10
p = 0.5
size = 1000000
x=np.random.binomial(n=n, p=p, size=size)
probs_100 = [np.equal(x , i).mean() for i in range(n)]
for j in probs_100:
    print("{:.2f}".format(j))

plt.xticks(range(n))
plt.plot(list(range(n)), probs_100, color='blue', marker='o')
plt.xlabel('Number of Heads',fontsize=14)
plt.ylabel('Probability',fontsize=14)
plt.show()

除了这个例子,现实中很多数据可以用这种正态分布的形式来解释。它背后的原理是中心极限定理,即在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布。简单来说,就是一个事物不管受到什么因素,以及这些因素是如何影响的,将这些因素加起来的结果的平均呈正态分布。

在数学上,正态分布的定义如下:

若随机变量X服从一个位置参数为\mu,尺度参数为\sigma的正态分布,记为:
X ~ N(\mu, \sigma^2)
则其概率密度函数为G(x)=\frac{1}{\sigma \sqrt{2\pi}} e^{- \frac{(x-\mu)^2}{2\sigma^2}}。正态分布的数学期望值\mu等于位置参数,决定了分布的位置;其方差\sigma^2的标准差\sigma等于尺度参数,决定了分布的幅度。对于单变量的正态分布,我们可以通过极大似然法求解出\mu\sigma^2

对于多变量(假设为d个变量)的高斯分布,概率密度函数为:

G(X | \mu, \Sigma)=\frac{1}{ \sqrt{2\pi |\Sigma|}} e^{-\frac{{(X-\mu)^T(X-\mu)}}{2 \Sigma}}

其中X\mud维的向量,\Sigmad \times d的协方差矩阵。

软聚类:高斯混合模型

软聚类引入正态分布,也就是说数据点看成是由多个正态分布进行混合后从中抽样得到的数据。反过来,也就可以使用该这个模型来求解聚类问题。因为正态分布又称为高斯分布,所以这个模型一般叫做高斯混合模型。

假设数据X是从K个已知方差为\Sigma_k的正态分布中均匀地抽样得到的x_ik=1,2, \ldots, Ki=1,2, \ldots, N,一共重复了N次获得了N个数据点。

因为有K个分布,概率密度可以表示为K个正态分布的密度函数的线性函数,即:
P(X|\mu, \Sigma, \pi)=\sum_{k=1}^{K} \pi_k G(X| \mu_k, \Sigma_k)
其中,\pi_k是第k个分布的混合系数,\pi_k \geq 0\sum \pi_k = 1,表示每一个正态分布的权重。而G(X| \mu_k, \Sigma_k)表示第k个正态分布的概率密度,其表达式为G(X|\mu_k, \Sigma_k)=\frac{1}{\Sigma_k \sqrt{2\pi}} e^{- \frac{(X-\mu_k)^2}{2\Sigma_k^2}}

高斯混合模型的学习过程就是估计K个正态分布的概率密度,以及每个分布的权重。

所以,原来的聚类问题就转化为:将某个数据点x_i代入到K个正态分布中求出属于每个类别的概率,然后将概率最大的类别作为该数据点的类别,直至对所有数据点归为K类为止。

\frac{\pi_k G(x_i| \mu_k, \Sigma_k)}{\sum_{k=1}^{K} \pi_k G(x_i| \mu_k, \Sigma_k)}

EM算法
上面的问题可以进一步转化为参数估计的问题,并使用EM算法求解。

我们的模型为:
P(X|\mu, \Sigma, \pi)=\sum_{k=1}^{K} \pi_k G(X| \mu_k, \Sigma_k)
G(X|\mu_k, \Sigma_k)=\frac{1}{\Sigma_k \sqrt{2\pi}} e^{- \frac{(X-\mu_k)^2}{2\Sigma_k^2}}

使用极大对数似然法来估计其中的参数\theta=(\mu_k, \Sigma_k, \pi_k), \quad k=1, 2, \ldots, K,也就是
\theta=argmax \, ln \,P(X| \theta)
ln \,P(X| \theta) = ln \sum_{i=1}^{N} P(x_i | \theta) = \sum_{i=1}^{N} ln \sum_{k=1}^{K} \pi_k G(x_i | \mu_k, \Sigma_k)

定义一个隐变量\gamma_{ik},和我们的数据点一起构成完全数据(x_i, \gamma_{i1}, \gamma_{i2}, \ldots, \gamma_{iK}),其中\gamma_{ik}中只有一个为1,即当x_i属于第k个正态分布产生的数据点时。

高斯混合模型的EM算法步骤为:

  1. 取参数的初始值开始迭代;
  2. E步:依据当前模型参数,计算第k个正态分布对数据x_i的响应度
    \hat {\gamma_{ik}} = \frac{\pi_k G(x_i|\theta_k)}{\sum_{k=1}^{K} \pi_k G(x_i|\theta_k)}, \quad i=1,2, \ldots, N; \quad k=1,2, \ldots, K
  3. M步:计算新一轮迭代的模型参数
    \hat{\mu_k}=\frac{\sum_{i=1}^{N} \hat{\gamma_{ik} x_i}}{\sum_{i=1}^{N} \hat{\gamma_{ik}}}, \quad k=1,2, \ldots, K
    \hat{\Sigma_k}=\frac{\sum_{i=1}^{N} \hat{\gamma_{ik}} (x_i-\mu_k)^2}{\sum_{i=1}^{N} \hat{\gamma_{ik}}}, \quad k=1,2, \ldots K
    \hat{\pi_k}=\frac{\sum_{i=1}^{N} \hat{\gamma_{ik}}}{N}, \quad k=1,2, \ldots K
  4. 重复第2和第3步,直至收敛。

具体EM算法的推导可以参考李航编写的《统计学习方法》一书。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容