K-means聚类算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的K个类,使得K个类达到类内数据距离之和最小而类间距离之和最大。它是无监督学习算法,采用距离作为相似性的度量指标,即认为两个对象距离越近,其相似性就越大。
1、数据类型与相似性度量
(1)连续属性和离散属性数据
对于连续属性,要依次对每个属性的属性值进行零-均值化处理;对于离散属性,要依次对每个属性的属性值进行数值化处理。然后通过计算距离来度量相似性,K-means聚类算法中一般需要计算样本间的距离,样本和簇的距离,簇和簇的距离。其中,样本间的距离通常用欧式距离(欧几里得距离)、曼哈顿距离和闵可夫斯基距离,样本和簇的距离可以用样本到簇中心的距离代替,簇和簇距离可以用簇中心到簇中心的距离代替。
假定有n个样本,每个样本有p个属性,则可得如下数据矩阵:
设1<i , j<n代表样本;1<u<p代表属性,所以Xi和Xj就代表任意的两个样本,
则可计算如下距离。
欧几里得距离:
曼哈顿距离:
闵可夫斯基距离:
可见当q=1时,闵可夫斯基距离就是曼哈顿距离,当q=2时,闵可夫斯基距离就是欧氏距离。
(2)文档数据
对于文档数据采用余弦相似性度量,首先统计文档中重要的词汇出现的频数,然后将文档数据整理成文档—词矩阵格式,如下所示:
两个文档间的相似性计算公式:
(按行将每个文档生成为一个向量,则可得两个向量间的余弦)