GMM——将“混”在一起的样本各归其源
个体 vs 集体
前面我们讲的 KMeans 和谱聚类都是将特征空间中的一个个个体,依据它们相互之间的关系,归属到不同的簇中。
用个形象点的比喻,我们将特征空间想象成一个二维的平面,样本数据则是“散落”在这个平面上的一颗颗“豆子”。
前面讲的聚类方法就好像:我们根据某种原则(KMeans 和谱聚类的具体原则不同),把这些“散落在地”的“豆子”捡到一个个“筐”里。
这些“豆子”原本并没有一个特定的归属,是我们在“捡”的过程中决定了把它们扔到哪个“筐”里。某一颗“豆子”被归属到某个“筐”的原因,很大程度上受它周围“豆子”归属的影响。
反过来,如果我们这么考虑问题:在特征空间中的样本,其实都是有各自的归属的。本来一个特定的样本就应该属于一个特定的簇。只不过,在我们拿到样本的时候,原本属于不同簇的若干样本在特征空间中“混在了一起”。我们要做的,其实是把它们按照原本的归属区分开。
我们拿了一个西红柿,“啪”一下摔在了厨房的地板上,摔了个粉碎,于是形成了左下的一片红色“颗粒”;然后拿了一个猕猴桃,“啪”地摔成了右侧那一片绿色“颗粒”;又摔了个苦瓜,形成了左上的一片黄色颗粒。
这个时候,我们让一个小机器人来把这三种瓜果的碎屑颗粒分别收拾到三个不同的容器里。这个小机器人是个色盲,它看到的厨房地板是下图这个样子的:
已知每个簇的原始分布
直观分布
当然不能什么都不告诉小机器人,只让它面对一堆“灰色斑点”,那也太苛刻了。我们可以将这样一些信息泄露给小机器人:一共摔了几个瓜果,每一个的残骸形成了什么样的形状,以及其位置核心在哪里。
告诉它:地板上一共摔碎了3个瓜果,残骸分别是圆的、椭圆的和斜着的椭圆的,三片残骸的核心分别在A,B和C点(参见下图):
这样,小机器人在捡起一颗残骸后。就可以根据这个颗粒所在的位置,判断它在哪个瓜果的残骸区里,从而推测它属于哪个瓜果。
形式化分布
上面描述的情景就是一个聚类问题,三堆瓜果残骸就是从直观角度可视化的分为三个簇的样本。
用形式化的方式来描述,每一个簇都有一个对应的概率分布,我们可以假定它们的概率密度函数分别是: ϕ 1 ( x ) , ϕ 2 ( x ) , ϕ 3 ( x ) \phi_1(x),\phi_2(x),\phi_3(x) ϕ1(x),ϕ2(x),ϕ3(x)。这里的 ϕ ( ⋅ ) \phi(·) ϕ(⋅)表示了一种分布形式(如高斯分布),对于一个特定的分布而言,只有分布形式显然是不够的,还需要有参数。
这样,概率密度函数就可以写作: ϕ i ( x ∣ θ i ) , i = 1 , 2 , . . . , k \phi_i(x|\theta_i),i=1,2,...,k ϕi(x∣θi),i=1,2,...,k(对于上例而言,k=3)
注意: θ i \theta_i