K均值聚类分析
K K K均值算法,是一种最古老的,也是最广泛使用的聚类算法。
通常, K K K均值聚类应用于 n n n维连续空间中的对象。从数学的角度讲,假定样本集(数据集) D D D包含 m m m个样本(对象),每个样本均为 n n n维向量,则 K K K均值聚类将样本集 D D D划分为 k k k个互不相交的簇( c l u s t e r cluster cluster)。
例如,研究电信用户留存时,想知道哪些客户群容易流失,可以使用 K K K均值聚类对用户群体进行划分。
一、基本K均值算法
1、算法的过程
首先,选择 k k k个对象作为初始的质心,其中 k k k是预先指定的参数,即所期望的 c l u s t e r cluster cluster的个数。初始质心的选取通常是随机的,当然这么做的聚类效果往往很一般。
其次,选取一个对象,计算对象到各个质心的距离,把对象分配给距离最近的质心。质心以及分配给其的对象就组成一个 c l u s t e r cluster cluster。
然后,根据现有的 c l u s t e r cluster cluster,计算 c l u s t e r cluster cluster的质心—— c l u s t e r cluster cluster内对象的平均值,并更新cluster的质心。
接着,不断的循环执行对象分配以及质点更新的步骤。
最后,当 c l u s t e r cluster cluster不再发生变化,或者等价地, c l u s t e r cluster cluster的质心不再发生变化时,终止循环,结束过程。
选择K个点作为初始质心;
repeat
将每个点指派到最近的质心,形成K个cluster;
重新计算每个cluster的质心;
until 质心不发生变化;
2、质心的计算
假设数据集包含 n n n个对象,每个对象对应一个 2 2 2维的线性空间,( x c , y c x_{c},y_{c} xc,yc)为质心的坐标:
x c = 1 n ∑ i = 1 n x i x_{c}=\frac{1}{n}\sum_{i=1}^{n}x_{i} xc=n1i=1∑nx