《数据挖掘(完整版)》笔记——K均值

1. 不同的聚类类型

层次的与划分的
划分聚类简单地将数据对象集划分成不重叠的子集,使得每个数据对象恰在一个子集中。如果允许簇具有子簇,则得到一个层次聚类。层次聚类是嵌套簇的集族,组织成一棵树。除叶结点外,树中每一个结点(簇)都是其子女(子簇)的并,而树根是包含所有对象的簇。

互斥的、重叠的与模糊的
在最一般的意义下,重叠或非互斥的聚类用来反映一个对象同时属于多个组这一事实。在模糊聚类中,每个对象以一个0(绝对不属于)和1(绝对属于)之间的隶书权值属于每个簇

完全的与部分的
完全聚类将每个对象指派到一个簇,而部分聚类不是这样的。促进部分聚类的因素是,数据集中某些对象可能不属于明确定义的组,如数据集中的一些代表噪声、离群点或 “不感兴趣的背景” 的对象

2. 不同的簇类型

在这里插入图片描述

3. K-means

K均值用质心定义原型,其中质心是一组点的均值。K中心点使用中心点定义原型,其中中心点是一组点中最有代表性的点

3.1 基本K均值算法

在这里插入图片描述
1. 指派点到最近的质心
通常对欧式空间中的点使用欧几里得距离(L2),对文档用余弦相似性。然而,对于给定的数据类型,可能存在多种适合的邻近性度量,如曼哈顿距离(L1)可以用于欧几里得数据,而 Jaccard 度量常常用于文档

在某些情况下,如数据在低维欧几里得空间时,许多相似度的计算都有可能避免,因此显著地加快了K均值算法的速度,如二分K均值就是一种

2. 质心和目标函数
我们使用误差的平方和(SSE)作为度量聚类质量的目标函数。我们计算每个数据点的误差,即它到最近质心的欧几里得距离,然后计算误差的平方和。SSE形式地定义如下:

S S E = ∑ i = 1 K ∑ x ∈ C i d i s t ( c i , x ) 2 SSE=\sum_{i=1}^K \sum_{x\in C_i}dist(c_i, x)^2 SSE=i=1KxCidist(ci,x)2

可证明使簇的 SSE 最小的质心是均值。于是,第 i 个簇的质心由下式定义:

c i = 1 / m i ∑ x ∈ C i x \mathbf c_i = 1/m_i\sum_{x\in C_i}\mathbf x ci=1/mixCix
在这里插入图片描述
文档数据
这里我们假设用文档数据用文档——词矩阵表示,我们的目标是最大化簇中文档与簇的质心的相似性,该量称作簇的凝聚度。对于该目标,可以证明,与欧几里得数据一样,簇的质心是均值。总的 SSE 的类似量是总凝聚度(total cohesion):

T o t a l C o h e s i n = ∑ i = 1 K ∑ x ∈ C i c o s i n e ( x , c i ) Total Cohesin = \sum_{i=1}^K \sum_{x\in C_i}cosine(\mathbf x, \mathbf c_i) TotalCohesin=i=1KxCicosine(x,ci)

一般情况

在这里插入图片描述
Bregman散度函数的重要性在于,任意这类函数都可以用作以均值为质心的K均值类型的聚类算法的基础。事实上,使用余弦相似度或欧几里得距离的K均值算法时基于Bregman散度的一般聚类算法的特例

3. 选择初始质心
随机选择初始质心存在的问题即使重复运行多次也不能克服。因此常常使用其他技术进行初始化。一种有效的方法是,取一个样本,并使用层次聚类技术对它聚类。从层次剧烈中提取 K K K个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅这对一下两种情况:(1)样本相对较小(2) K K K相对样本大小较小

我们有另一种选择初始质心的方法:随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后续初始质心,选择离已经选取过的初始质心最远的点。使用这种办法,我们得到初始质心的集合,确保不仅是随机的,而且是分散的。但是,这种方法可能选中离群点,此外求离当前质心集最远的点开销也很大。所以,该方法通常用于点样本

3.2 K均值:附加问题

1. 处理空簇
如果所有的点再指派步骤都未分配到某个簇,就会得到空簇。解决的策略一种是选择一个距离当前任何质心最远的点作为替补质心,这将消除当前对总平方误差影响最大的点。另一种方法是从具有最大 SSE 的簇中选择一个替补质心,这将分裂簇并降低聚类的总 SSE

2. 离群点
提前发现离群点并删除它们是有用的。但应当意识到有一些聚类应用不能删除离群点,如当聚类用来研所数据时,必须对每个点聚类;在某些情况下,明显的离群点可能是最令人感兴趣的点

如果我们使用的方法在聚类前就删除离群点,则我们就避免了对不能很好聚类的点进行聚类。当然也可以在后处理时识别离群点。如我们可以记录每个点对 SSE 的影响,删除那些具有异乎寻常影响的点。此外,我们还可能需要删除那些很小的簇,因为他们常常代表离群点的组

3. 用后处理降低 SSE
一种明显降低 SSE 的方法是找出更多簇,即使用较大的 K K K。然而,在许多情况下,我们并不想增加簇的个数。因此,我们的策略是关注每一个簇,因为总SSE只不过是每个簇的SSE之和。通过在簇上进行诸如分裂和合并等操作,我们可以改变中SSE。一种常用的方法是交替地使用簇分裂和簇合并。用这种方法常常可以避开局部极小,并且任然能够得到具有期望个数簇的聚类。

通过增加簇个数来降低中SSE的两种策略如下:

  • 分裂一个簇:通常选择具有最大SSE的簇,但是我们也可以分裂在特定属性上具有最大标准差的簇
  • 引进一个新的质心:通常选择离所有簇质心最远的点。如果我们记录每个点对SSE的贡献,则可以很容易地确定最远点。另一种方法是从所有的点或者具有最高SSE的点中随机地选择

减少簇个数,而且试图最小化总SSE的增长的两种策略如下:

  • 拆散一个簇:删除簇对应的质心,并将簇中的点重新指派到其他簇。理想情况下,被拆散的簇应当是使总SSE增加减少的簇
  • 合并两个簇:通常选择呢质心接近的两个簇,或者合并两个导致总SSE增加最少的簇

4. 增量地更新质心
可以在点到簇的每次指派后,增量地更新质心,而不是在所有的点都指派到簇中之后才更新簇的质心。使用增量更新策略确保不会产生空簇,因为所有的簇都从单个点开始,并且如果一个簇只有单个点,则该点总是被重新指派到相同的簇

此外,使用增量更新可以调整点的相对权值。增量更新使用不同于“最小化SSE”的目标,假设给定一个度量簇集的目标函数,当我们处理某个点时,我们可以对每个可能的簇指派计算目标函数的值,然后选择优化目标的簇指派

增量地更新质心可能导致次序依赖性,换言之,所产生的簇可能依赖于点的处理次序。此外,增量更新的开销也稍微大一些,然而,K均值收敛相当快,因此切换簇的点数很快就会变小

3.3 二分K均值

二分K均值基于一个简单的想法:为了得到 K K K个簇,将所有点的集合分裂成两个簇,从这些簇中选取一个继续分裂下去,如此下去,知道产生 K K K个簇
在这里插入图片描述

3.4 K均值和不同的簇类型

当簇具有非球形形状或具有不同尺寸或密度时,K均值很难检测到“自然的”簇,如
在这里插入图片描述
这三种情况的问题在于K均值的目标函数与我们试图发现的簇的类型不匹配,因为K均值目标函数是最小化等尺寸和等密度的球形簇,或者明显分离簇。

3.6 K均值作为优化问题

给定一个诸如“最小化SSE”这样的目标函数,可以吧聚类视为优化问题。解决该问题的一种方式是:枚举将点划分成簇的所有可能方法,然后选择最好的满足目标函数的簇集。当然,这种方法在计算上是不可取的,因此需要更实际的方法,即使这样的方法发现的解不能保证是最优解。一种称为梯度下降的技术选择一个初始解,然后重复如下两个步骤:计算最好的优化目标函数的解的改变,然后更新解

假定数据时二维的,即 d i s t ( x , y ) = ( x − y ) 2 dist(x, y)=(x-y)^2 dist(x,y)=(xy)2

1. 作为最小化SSE的算法推导K均值
我们考察如何最好地更新簇质心,使得簇SSE最小化

S S E = ∑ i = 1 K ∑ x ∈ C i d i s t ( c i , x ) 2 SSE=\sum_{i=1}^K \sum_{x\in C_i}dist(c_i, x)^2 SSE=i=1KxCidist(ci,x)2

我们可以对第k个质心 c k c_k ck求解,最小化SSE:

在这里插入图片描述
这样,如强所述,簇的最小化SSE的最佳质心是簇中各点的均值

2. 为SAE推导K均值
我们考察如何将数据划分为K个簇,使得点到其簇中心的曼哈顿距离 L 1 L_1 L1之和最小

下面给出 L 1 L_1 L1绝对误差和SAE:

S A E = ∑ i = 1 K ∑ x ∈ C i d i s t L 1 ( c i , x ) 2 SAE=\sum_{i=1}^K \sum_{x\in C_i}dist_{L_1}(c_i, x)^2 SAE=i=1KxCidistL1(ci,x)2

d i s t L 1 = ∣ c i − x ∣ dist_{L_1}=|c_i-x| distL1=cix

求解:
在这里插入图片描述
求解可得, x k = m e d i a n { x ∈ C k } x_k=median\left \{ x \in C_k \right \} xk=median{xCk},即簇中各点的中位数。一组点的中位数的计算式直截了当的,并且较少受离群点扰动的影响

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值