一、基本概念
聚类是把一个数据对象划分成多个组或簇的过程,使得簇内对象相似度很高,而簇间对象相似度很低。 聚类属于无监督分类方式。 主要得的聚类方法主要有:基于划分的方法,基于层次的方法,基于密度的方法,基于网格的方法,基于模型的方法。
二、基于划分的方法
1.划分的思想
给定一个有n个数据对象的集合,基于划分的方法会构建数据的k个分组,其中每个分组表示一个簇。 对于给定的分组数k,算法会首先给出一个初始的分组方法,然后通过不断迭代的方法改变分组,使得同一组内的距离越来越近,不同组间的距离越来越远。 基于划分思想的算法有k-means,k-中心点。 如果想达到全局最优,则需要穷举所有可能的划分,计算量极大,可以采用启发式方法,比如k-means,k-中心点,逐渐的提高划分质量,逼近局部最优解。
2.K-means
算法步骤: (1)在n个数据对象的集合中,随机的选择k个点,分别做为k个簇的中心。 (2)分别计算其余点和k个簇中心点的距离,离哪一个簇中心点最近,就将其划分到对应的簇。 (3)对于每个簇,重新计算簇中心点。 (4)不断循环下去,直至达到算法终止条件。
初始质心的选择: 最常见的方法是随机的选择初始质心,为了得到更好的结果可以多次运行算法。
距离度量: 对欧氏空间内的点使用欧几里得距离度量 对于文档使用余弦相似性度量
簇中心计算方法: 在步骤三中,如何重新计算簇中心呢,取簇中所有对象每一个维度的算术平均值。 其中d代表维度,v代表新的簇中心坐标点,|Ck|代表簇内点的个数。
目标函数:聚类的目标函数依赖于点到簇的质心的邻近性,使用误差的平方和(SSE)作为度量聚类质量的目标函数。 定义如下: 首先求每个簇中,每个数据点xi到簇中心vk的距离平方和,然后把所有簇的距离和再求和。 步骤(2)和步骤(3)就是在最小化SSE,但是只能确保找到的是局部最优解。
算法停止条件: (1)设定迭代次数。 (2)簇类中心不再变化。 (3)前后两次聚类结果的SSE变化很小。
优缺点: 优点:K-means的复杂度O(tkn),其中n是数据对象的个数,k是簇数,t是迭代的次数,通常t,k都远远小于n 缺点:需要事先给出k的值,不能处理噪声数据和孤立点,鲁棒性较差,不适合发现非球形簇。
3.k-中心点算法
由于K-means不能处理噪声数据和离群点,k-中心点算法是对k-manes的改进,改进之后,能够能够处理噪声点和离群点。 PAM是一种k-中心点算法。 改进点如下: 在更新簇中心时,不是计算簇内所有点的算术平均值做为新的簇中心点,而是选择离所有点距离最小的点做为新的中心点。 PAM使用绝对误差标准来衡量聚类质量 其中k代表k个聚类,p代表簇Ci中非代表对象,Oi代表簇Ci中的代表对象。 步骤如下: (1)在n个数据对象的集合中,随机的选择k个点,分别做为k个簇的中心。 (2)分别计算其余点和k个簇中心点的距离,离哪一个簇中心点最近,就将其划分到对应的簇。 (3)对于每个簇,将簇中每个点都依次做为代表对象,然后选择绝对误差标准最小的点做为簇中心点。 (4)不断循环下去,直至达到算法终止条件。
三、基于层次的方法
基于层次的方法可以分为凝聚与分类。 凝聚层次分类:自底向上,刚开始将每个对象单独做为一个簇,然后将相似的簇逐渐合起来,直到达到终止条件。 分类层次聚类:自顶向下,刚开始所有对象都在一个簇中,然后不断的分裂,直到达到终止条件。
1.簇间距离:
无论时哪一种方法,都需要度量簇间的距离,根据度量方法的不同,将层次聚类分为单连接,全连接和平均连接。 其中单连接采用的是最小距离 全连接采用的是最大距离 平均连接采用的是平均距离 除此之外,还有均值距离 最小距离:代表不同簇之间最近的两个点之间的距离 最大距离:代表不同簇之间最远的两个点之间的距离 均值距离:代表不同簇中心点之间的距离 平均距离:代表不同簇所有点之间距离的平均值
以上四种距离的示意图如下:
2.AGNES
该算法使用单连接方法和距离矩阵,然后合并距离最小的相异点,继续计算新的距离矩阵,继续合并距离最小的相异点。直到达到簇的数目。
一个实例如下: 二维空间中有以下五个点,使用单连接算法进行聚类。 第一步:计算距离矩阵 可以得到,3和4之间的距离5是最小的,所以将3和4聚成一类。 第二步:重新计算距离矩阵 原来簇1,2,5之间的距离不变,改变的是1,2,5和簇(3,4)之间的距离。更新后的距离矩阵如下 可以得到簇1和簇5之间的距离1.07是最小的,所以把1和5聚成一类。 第三步:重新计算距离矩阵 需要计算簇2和簇(1,5)和簇(3,4)这三种之间的距离。更新之后的距离矩阵如下: 可以得到簇2和簇(3,4)之间的距离最小,所以将簇2和簇(3,4)聚成一类。 第四步:重新计算距离矩阵 只需要计算簇(2,3,4)和簇(1,5) 之间的距离。
最后将簇(1,5)和簇(2,3,4)聚成一类。
单连接算法的距离都是指的最小距离。 如果设置了终止条件,在中途就会退出。 用树状图将其可视化描述出来如下: 用户可以定义希望得到的簇数作为一个终止条件。 最小最大度量对于离群点和噪声数据很敏感。 使用均值距离和平均距离是一种折中的方案,可以克服离群点敏感性问题。
四、基于密度的方法
基于划分和层次的方法都旨在发现球状簇,不能发现任意形状的簇。而基于密度聚类的方法可以发现任意形状的簇,可以把簇看作数据空间中被稀疏区域分开的稠密区域。
1.DBSCAN算法
EPS邻域:某个点指定半径为r的圆区域。 Minpts:最少包含的点的个数。 核心点:该点的邻域内的点的个数超过指定阈值MinPoints。 边界点:边界点是位于核心点内的点,同时,该点的EPS邻域内,没有新的,未被标记的点。 离群点:既不是边界点也不是核心点。 直接密度可达:给定一个对象集合D,如果p在q的Eps邻域内,而q是一个核心对象,则称对象p从对象q出发时是密度可达的。 密度可达:如果存在一个对象链,p1,p2,…,pn,p1 = q,pn = p,且对于任意的pi,pi+1是直接密度可达的,则对象p是从对象q出发是密度可达到。 密度相连:如果存在一个对象O,使得对象p和对象q都是从O密度可达的,那么对象p和对象q是密度相连的。 由于MinPts = 3, M,P是核心点,Q不是核心点。 O,T是核心点,S,R不是核心点。 由于M在P的邻域内,P是核心点,所以M从P出发直接密度可达。 由于Q在M的邻域内,M是核心点,所以Q从M出发直接密度可达,Q从P出发密度可达。 同理,S从O出发密度可达,R从O出发密度可达,所以S和R密度相连。
算法步骤: 可以看到,DBSCAN会找到最大密度相连的点的集合。 优点: 基于密度定义,对噪声不敏感,可以发现任意形状的簇 缺点: 当聚类密度不均匀时,聚类质量不好。 当数据量较大,数据维度较高时,容易内存溢出。
五、聚类评估
聚类评估主要包括如下任务: 估计聚类趋势,确定数据集中的簇数 测定聚类质量
1.估计聚类趋势
只有当数据集中存在非随机结构,聚类分析才有意义。 (1)如果聚类误差随着聚类类别数量的变化而变化不显著,说明数据是随机分布的,即不存在非随机结构。
(2)霍普金斯统计量: 第一步,均匀在数据集D中抽取n个点p1,p2,p3,…,pn。对于其中每一个点,都计算数据集D中离该点最近的点,并记录其距离为xi。 第二步,均匀在数据集D中抽取n个点q1,q2,q3,…,qn。对于其中每一个点,都计算数据集D中离该点最近的点,并记录其距离为yi。 如果D为随机分布,H大约为0.5 如果聚类趋势明显,则H的值接近于1或0 一般H>0.75,则可以聚类的置信度90%
2.聚类簇数的确定
经验方法:簇数p大约为 拐点法:绘制簇内方差和关于簇数的曲线,拐点的簇数就是设置的簇数。 交叉验证法:对于给定的数据集分成m份,用m-1份构建聚类模型,用剩下的一份检验聚类的质量,选择聚类质量最高的聚类模型,并使用其K作为聚类簇数。
3.聚类质量的测定:
外在方法:有监督的方法,熵,纯度,精度,召回率,F度量。具体公式看教材。
内在方法:无监督方法,考察簇间的分离情况和簇内的紧凑情况。 轮廓系数S(O) 其中数据集D被分成了k个簇,分别为C1,C2,C3,…,Ck,对于每一个数据对象O a(O)代表着O与O所在的簇其他所有点的平均距离。 b(O)代表着O与O所不在的其他所有簇的簇间最小平均距离。 a(O)的值反映簇内的紧凑性,值越小越紧凑。b(O)的值反映簇间的分离程度,值越大越分离。 当o簇的轮廓系数S(O)值越接近于1,O所在的簇是紧凑的,并且远离其他簇。
|