1. 不同的聚类类型
层次的与划分的
划分聚类简单地将数据对象集划分成不重叠的子集,使得每个数据对象恰在一个子集中。如果允许簇具有子簇,则得到一个层次聚类。层次聚类是嵌套簇的集族,组织成一棵树。除叶结点外,树中每一个结点(簇)都是其子女(子簇)的并,而树根是包含所有对象的簇。
互斥的、重叠的与模糊的
在最一般的意义下,重叠或非互斥的聚类用来反映一个对象同时属于多个组这一事实。在模糊聚类中,每个对象以一个0(绝对不属于)和1(绝对属于)之间的隶书权值属于每个簇
完全的与部分的
完全聚类将每个对象指派到一个簇,而部分聚类不是这样的。促进部分聚类的因素是,数据集中某些对象可能不属于明确定义的组,如数据集中的一些代表噪声、离群点或 “不感兴趣的背景” 的对象
2. 不同的簇类型
3. K-means
K均值用质心定义原型,其中质心是一组点的均值。K中心点使用中心点定义原型,其中中心点是一组点中最有代表性的点
3.1 基本K均值算法
1. 指派点到最近的质心
通常对欧式空间中的点使用欧几里得距离(L2),对文档用余弦相似性。然而,对于给定的数据类型,可能存在多种适合的邻近性度量,如曼哈顿距离(L1)可以用于欧几里得数据,而 Jaccard 度量常常用于文档
在某些情况下,如数据在低维欧几里得空间时,许多相似度的计算都有可能避免,因此显著地加快了K均值算法的速度,如二分K均值就是一种
2. 质心和目标函数
我们使用误差的平方和(SSE)作为度量聚类质量的目标函数。我们计算每个数据点的误差,即它到最近质心的欧几里得距离,然后计算误差的平方和。SSE形式地定义如下:
可证明使簇的 SSE 最小的质心是均值。于是,第 i 个簇的质心由下式定义:
文档数据
这里我们假设用文档数据用文档——词矩阵表示,我们的目标是最大化簇中文档与簇的质心的相似性,该量称作簇的凝聚度。对于该目标,可以证明,与欧几里得数据一样,簇的质心是均值。总的 SSE 的类似量是总凝聚度(total cohesion):
一般情况
Bregman散度函数的重要性在于,任意这类函数都可以用作以均值为质心的K均值类型的聚类算法的基础。事实上,使用余弦相似度或欧几里得距离的K均值算法时基于Bregman散度的一般聚类算法的特例
3. 选择初始质心
随机选择初始质心存在的问题即使重复运行多次也不能克服。因此常常使用其他技术进行初始化。一种有效的方法是,取一个样本,并使用层次聚类技术对它聚类。从层次剧烈中提取个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅这对一下两种情况:(1)样本相对较小(2)相对样本大小较小
我们有另一种选择初始质心的方法:随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后续初始质心,选择离已经选取过的初始质心最远的点。使用这种办法,我们得到初始质心的集合,确保不仅是随机的,而且是分散的。但是,这种方法可能选中离群点,此外求离当前质心集最远的点开销也很大。所以,该方法通常用于点样本
3.2 K均值:附加问题
1. 处理空簇
如果所有的点再指派步骤都未分配到某个簇,就会得到空簇。解决的策略一种是选择一个距离当前任何质心最远的点作为替补质心,这将消除当前对总平方误差影响最大的点。另一种方法是从具有最大 SSE 的簇中选择一个替补质心,这将分裂簇并降低聚类的总 SSE
2. 离群点
提前发现离群点并删除它们是有用的。但应当意识到有一些聚类应用不能删除离群点,如当聚类用来研所数据时,必须对每个点聚类;在某些情况下,明显的离群点可能是最令人感兴趣的点
如果我们使用的方法在聚类前就删除离群点,则我们就避免了对不能很好聚类的点进行聚类。当然也可以在后处理时识别离群点。如我们可以记录每个点对 SSE 的影响,删除那些具有异乎寻常影响的点。此外,我们还可能需要删除那些很小的簇,因为他们常常代表离群点的组
3. 用后处理降低 SSE
一种明显降低 SSE 的方法是找出更多簇,即使用较大的。