聚类与K-means

118 阅读1分钟

聚类的目的是将样本中的数据(各观测值)划分到不同的类中,以使得同类中的样本较为相似,而不同类的样本差距较大。那么,在给定支持模型下,评分函数就成了关键。

K-means聚类是常用的一种聚类方法,它假设样本中的数据来自于K个簇(K的值此时也作为超参数),并试图去寻找这K个簇的中心。评分函数(误差函数)设置为各观察值与所在簇中心的距离的总和值,即

J(C,μ)=i=1nxiμCi2J(C,\mu)=\sum_{i=1}^n||x_i-\mu_{C_i}||^2

其中 CC 是将各观测点划分到各类的方案,而 CiC_i 是观测点 xix_i 所属的类,μ\mu 是各类中心,μCi\mu_{C_i} 则为观测点 xix_i 所属的类的中心。

而获得K个簇中心的过程如下(迭代过程):

0、初始化各类的中心值 μk(0)\mu_k^{(0)}
1、对于每一个观测值 xix_i,基于到各类中心的距离进行划分,并计算 J0=J(C,μ)J_0=J(C,\mu)
2、计算每一个类中的观测值的中心(此为新的中心),并以此进行分类、计算误差函数 J1=J(C,μ)J_1=J(C,\mu)
3、如果J0J1>h|J_0-J_1 |>h( hh为给定的阈值超参数),则说明2步得到的中心会更好,那么选择2步的中心与划分方案,并再次进行2步。

(上面的过程其实类似于Zz的走向,并且整个迭代的过程也可以视为一个EM算法的迭代过程)