K-Means聚类算法
K-Means聚类算法是典型的基于距离的非层次聚类算法,在最小化误差的函数的基础上将数据划分为预设的类数K,采用距离作为相似性的评价标准,即认为两个对象的距离越近,其相似度就越大。
1.算法过程:
- 从N个样本数据中随机选取K个对象作为初始的聚类中心。
- 分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中。
- 所有对象分配完成之后,重新计算K个聚类的中心。
- 与前一次计算得到的K个聚类中心相比较,如果聚类中心发生了变化,则执行步骤2。否则就转步骤5。
- 当聚类中心不发生变化的时停止并输出聚类的结果。
在所有的对象分配完成后,重新计算K个聚类中心的时候,对于连续数据,聚类中心选择该簇的均值,但是当样本的一些属性是离散(分类变量)时,均值是无定义的,可以使用K-众数方法。
2距离的计算
距离的种类,有三种:
1)样本与样本。
2)样本与簇(样本与簇中心)。
3)簇与簇(簇中心和簇中心)。
连续属性:
欧几里得距离; 曼哈吨距离; 闵可夫斯基距离;
欧几里得距离:
曼哈吨距离:
闵可夫斯基距离:
文档数据(以每个单词作为属性,次数为值,组成一个向量)。
余弦相似性度量:
其中a,b为两个向量。
3目标函数
使用的是平方和SSE作为聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和最小的分类结果。
连续属性的SSE计算公式为:
文本数据的SSE计算公式为:
下面对上面公式的符号进行说明:
Ci:簇i的聚类中心
K:聚类的簇数
迭代符下的Ci是第i簇
x:样本