1、第 9 章,聚类分析,第 9 章,9.1 什么是聚类分析? 9.2 聚类分析中的数据类型 9.3 基于划分的聚类方法 9.4 基于层次的聚类方法 9.5 基于密度的聚类方法,3,学习目的,理解聚类与分类数据挖掘的区别。掌握聚类的常用方法。,9.1 什么是聚类分析,聚类(Clustering): 聚类是一个将数据集划分为若干组(class)或类(cluster)的过程,并使得同一个组内的数据对象具有较高的相似度;而不同组中的数据对象是不相似的。相似或不相似是基于数据描述属性的取值来确定的,通常利用各数据对象间的距离来进行表示。 聚类分析尤其适合用来探讨样本间的相互关联关系从而对一个样本结构做一个
2、初步的评价。,示 例,表中给出9个顾客的购买信息,包括购买的商品的数量及价格,根据此两个特征量,将顾客聚类成3类(购买大量的高价产品;购买少量的高价产品;购买少量的低价产品)。,示 例,聚类是一个非常困难的事情,因为在一个n维样本空间中,数据可以以不同的形状和大小揭示类。如在二维欧几里得空间中,上面数据可以分类三个类也可以分为四个类,类的数量的任意性是聚类过程中的主要问题。,9.1 什么是聚类分析,聚类与分类的区别: 聚类是一 种无(教师)监督的学习方法。与分类不同,其不依赖于事先确定的数据类别,以及标有数据类别的学习训练样本集合。因此,聚类是观察式学习,而不是示例式学习。,9.1 什么是聚类
3、分析,聚类分析的应用: 市场分析:帮助市场分析人员从客户基本库中发现不同的客户群,并用购买模式刻画不同的客户群的特征; 万维网:对WEB日志的数据进行聚类,以发现相同的用户访问模式; 图像处理; 模式识别; 孤立点检测等。,9.1 什么是聚类分析,什么是好的聚类: 一个好的聚类方法将产生以下的高聚类: 最大化类内的相似性; 最小化类间的相似性。 聚类结果的质量依靠所使用度量的相似性和它的执行。 聚类方法的质量也可以用它发现一些或所有隐含模式的能力来度量。,9.2 聚类分析中的数据类型,基本的数据结构; 区间标度变量; 二元变量; 符号型、顺序型和比例数值型变量; 混合数据类型。,1. 基本的数
4、据结构?,12,基本的数据结构,许多基于内存的聚类算法选择如下两种具有代表性的数据结构: (1)数据矩阵; (2)相异度矩阵。,13,(1)数据矩阵,数据矩阵:是一个对象属性结构,由n个对象组成,如:人;每个对象利用p个属性加以描述,如:年龄、身高、体重等。数据矩阵采用关系表形式或n*p矩阵来表示:,14,(2)相异度矩阵,相异度矩阵(差异矩阵):是一个对象对象结构,存放n个对象两两之间的近似性(差异性),采用n*n的矩阵形式表示:,15,(2)相异度矩阵,相异度矩阵(差异矩阵):,所以,矩阵呈现出上三角或下三角的形式。,16,注意:,数据矩阵通常称为双模(two-mode)矩阵:行和列分布表
5、示不同的实体; 相异度矩阵常被称为单模(one-mode)矩阵:行和列表示同一实体。 许多聚类算法都是以相异度矩阵为基础计算的,所以如果数据是以数据矩阵的形式给出的,则需要首先转换为相异度矩阵,才可以利用聚类算法来处理。,2. 区间标度变量?,18,什么是区间标度变量,区间标度变量(间隔数值变量): 基本呈直线比例的连续变量,如:重量、高度和温度等。 为什么标准化? 通常,选用的度量单位将直接影响聚类分析的结果,如:将高度的度量单位由“米”变为“英尺”,或将重量的单位由“千克”变为“英镑”,可能会产生非常不同的聚类结构。 一般,度量单位越小,变量可能的值域越大,对聚类结果的影响也越大。因此,为
6、避免对度量单位选择的依赖,数据应当标准化。,19,度量值的标准化,为了实现标准化,一种方法是将初始测量值转换为无单位变量。给定一个属性变量f,可用如下公式对其进行标准化: (1)计算平均的绝对偏差,其中x1f, x2f,xnf是变量f的n个测量值;mf为变量f的 均值,即:,(2)计算标准化测量(z-score):,20,度量值的标准化,21,度量值的标准化,22,度量值的标准化,3. 二元变量?,24,什么是二元变量,二元变量(二值变量): 一个二元变量只有两个状态:0或者1。其中0代表变量所表示的状态不存在;1则代表相应的状态存在。 如:给定变量smoker,用以描述一个病人是否吸烟的情况
7、,如用smoker为1表示病人吸烟;若smoker为0表示病人不吸烟。,25,二元变量的相异度计算,差异矩阵法:如果假设所有的二元变量有相同的权重,则可以得到一个两行两列(2*2)的条件表。,26,二元变量的相异度计算,其中: q表示在对象i和对象j中均取1的二值变量个数; r表示在对象i取1但对象j中取0的二值变量个数; s表示在对象i中取0而在对象j中取1的二值变量个数; t则表示在对象i和对象j中均取0的二值变量个数。 二值变量的总数为p,则:p=q+r+s+t。,27,对称?不对称?,如果一个二值变量取0或1所表示的内容同等价值,且有相同的权重,则该二元变量是对称的。如,属性“性别”,
8、有两个值“女性”和“男性”,两个取值都没有优先权 。 基于对称二元变量的相似度,称为恒定的相似度。 对恒定相似度而言,评价量对象i和j间相异度的最著名的系数是简单匹配系数:,28,对称?不对称?,如果一个二值变量的两个取值的重要性不同等重要,则该二元变量就是不对称的。如一个疾病disease的测试结果positive或negative,显然这两个测试结果的重要性是不一样的: 通常将比较重要的输出结果,编码为1;而将另一结果编码为0. 给定一个二元变量,如果认为取0值比取0值所表示的情况更重要,则这样的二元变量被认为是单性的(好像只有一个状态)。,29,对称?不对称?,基于这样的二元变量的相似度
9、被称为非恒定的相似度。 对非恒定相似度,最常见的描述对象i和对象j间差异度的参数是Jaccard相关系数:,在计算过程中,负匹配的数目t被认为是不重要的,因此被忽略。 若一个数据集中既包括对称二元变量,又包含不对称二元变量,可以用混合变量方法来处理。,30,示 例,31,示 例,4. 符号、顺序和比例数值变量?,33,(1)符号变量,符号变量(标称变量): 符号变量是二元变量的推广,可具有多于两个的状态值,如颜色变量(红、橙、黄、绿、蓝等)。 设一个符号变量所取的状态个数为M,其中的状态可以用字母、符号,或一个整数集合来表示,如1,2,M。此处的整数仅是为方便数据处理而采用的,并不代表任何的特
10、定的顺序。,34,(1)符号变量,35,(2)顺序变量,顺序变量(序数型变量): 一个离散的顺序变量类似于符号变量,但不同的是顺序变量的M个状态是以有意义的顺序进行排列的。 如专业等级是一个顺序变量,是按照助教、讲师、副教授和教授的顺序排列的。 一个连续的顺序变量,值的相对位置要比它的实际数值有意义的多,如某个比赛的相对排名(金牌、银牌和铜牌)可能比实际得分更重要。,36,顺序变量的相异度,顺序变量的处理与区间标度变量非常类似,假设f是用于描述n个对象的一组顺序变量之一,关于f的相异度计算如下:,接下来就可以用区间标度变量中所描述的任意一组距离度量方法进行计算相异度。,37,(3)比例数值变量
11、,比例数值变量(比例标度型变量): 一个比例数值变量指在非线性的标度上取正的度量值的变量,如指数比例:,38,(3)比例数值变量,在计算比例数值变量所描述对象间的距离时,有两种处理方法: 1)将比例数值变量看作区间标度变量,采用相同的方法处理,但不佳,因为比例尺度是非线性的; 2)采用对数变换 ,对比例数值变量进行处理,然后将yif当做区间标度变量来处理。,5. 混合数据类型?,40,混合数据类型,混合数据类型: 在实际数据库中,数据对象往往是用复合数据类型来描述的,而且常常包括以上六种数据类型:区间标度变量、对称二元变量、不对称二元变量、符号类型、顺序类型和比例数值类型。 如何计算相异度?一
12、种方法是将变量按类型分组,对每种类型的变量单独聚类分析,如果分析得对兼容的结果,这种方法可行,但实际中,往往不可行。一种更可取的方法是将所有的变量一起处理,只进行一次聚类分析。,41,混合数据类型,一种技术是将不同类型的变量组合在单个相异度矩阵中,把所有有意义的变量转换到共同的值域区间0,1上。 假设数据集包含p个不同类型的变量,对象i和j间的相异度d(i,j)定义为:,42,混合数据类型,变量f对i和j直接相异度的计算方式与其具体类型有关:,9.4 基于划分的聚类方法,目前,在文献报道中有大量的聚类算法,算法的选择主要取决于数据的类型、聚类的目的和应用。如果聚类分析被用作描述或探索性的攻击,
13、则可以对同样的数据尝试多种算法,以发现数据可能揭示的结果。,主要的聚类分析方法,大体上,主要的聚类算法可以划分为如下几类: (1)划分方法; (2)层次方法; (3)基于密度的方法; (4)基于网格的方法; (5)基于模型的方法。,45,划分方法,给定一个n个对象或元组的数据库,划分方法构建数据的k个划分,每个划分表示一个聚簇(类),且 。同时满足如下条件: (1)每个聚类内至少包含一个对象; (2)每个对象必须属于且只属于一个聚类。 注意:在模糊划分计算中第二个要求可以放宽。 一个好的划分的一般准则: 在同一个类内的对象间尽可能接近或相似(high intra-class similarit
14、y); 不同类中的对象间尽可能远离或不同(low inter-class similarity) 。,46,划分方法,为达到全局最优,基于划分的聚类会要求穷举所有可能的划分,但实际中,绝大多数应用采用了以下两个比较流行的启发式方法: (1)k-平均(k-means)算法:每个聚类用该聚类中对象的平均值来表示; (2)k-中心点(k-mediods) 算法:每个聚类用接近聚类中心的一个对象来表示。,1. k-平均(k-means)聚类算法?,48,K-平均聚类算法,K-平均(k-means)算法以k为参数,把n个对象分为k个簇,以使簇内对象具有较高的相似度,而簇间的相似度较低。相似度的计算根据一
15、个簇中对象的平均值(被看作簇的重心)来进行。,49,K-平均聚类算法,50,K-平均聚类算法,算法的基本思想:首先,随机的选择k个对象,每个对象初始的代表了一个簇的平均值; 对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇; 然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。,51,K-平均聚类算法,通常选择均方差作为收敛准则函数:,这个准则试图使得生成的结果尽可能地紧凑和独立:当结果簇是密集的,且簇与簇之间区别明显时,算法的效果较好。,52,K-平均聚类算法,算法的特点: 只适用于聚类均值有意义的场合,在某些应用中,如:数据集中包含符号属性时,直接应用k-means
16、算法就有问题; 用户必须事先指定k的个数; 对噪声和孤立点数据敏感,少量的该类数据能够对聚类均值起到很大的影响。,53,示例,54,示例,55,示例,56,示例,2. k-中心点(k-mediods)聚类算法?,58,K-中心点聚类算法,K-平均(k-means)算法对于孤立点是敏感的,如何消除?思路:不采用簇中对象的平均值作为参照点,而选用簇中位置最中心的对象,即中心点(mediod),仍然基于最小化所有对象与其参照点之间的相异度之和的原则来进行。这就是k-中心点(k-mediods)的算法基础。,59,K-中心点聚类算法,基本策略:首先为每个簇随意选择一个代表对象,称为中心点,剩余的对象根
17、据其与中心点间的距离分配给最近的一个簇。然后重复地用非中心点对象来替代中心对象,如果它改善了结果聚类的整体距离,则进行替代。聚类结果的质量用一个代价函数来估算,该函数度量对象与其参照对象之间的平均相异度。,60,K-中心点聚类算法,为判定一个非代表对象 是否是当前代表对象Oj的一个好的替代 ,对于每一个非中心点对象p,考虑如下四种情况:,重新分配给Oi 代价函数:Cpjo=d(i,p)-d(j,p),61,K-中心点聚类算法,为判定一个非代表对象 是否是当前代表对象Oj的一个好的替代 ,对于每一个非中心点对象p,考虑如下四种情况:,重新分配给Orandom 代价函数:Cpjo=d(o,p)-d
18、(j,p),62,K-中心点聚类算法,为判定一个非代表对象 是否是当前代表对象Oj的一个好的替代 ,对于每一个非中心点对象p,考虑如下四种情况:,不发生变化 代价函数:Cpjo=0,63,K-中心点聚类算法,为判定一个非代表对象 是否是当前代表对象Oj的一个好的替代 ,对于每一个非中心点对象p,考虑如下四种情况:,重新分配给Orandom 代价函数:Cpjo=d(o,p)-d(p,i),64,K-中心点聚类算法,每当重新分配发生时,替换的总代价是所有非中心对象产生的代价之和:如果总代价是负的,则Oj可被Orandom代替; 否则,则认为当前的中心点Oj是可接受的,在本次迭代中没有变化。,65,
19、K-中心点聚类算法,66,两种划分方法的关系,关系: k-中心点方法比k-均值方法更健壮,因为其不易受到极端数据的影响; 但k-中心点方法比k-均值方法的执行代价高; 两种方法都需要用户提前指定聚类结果的数目k。,9.5 基于层次的聚类方法,大体上,主要的聚类算法可以划分为如下几类: (1)划分方法; (2)层次方法; (3)基于密度的方法; (4)基于网格的方法; (5)基于模型的方法。,68,层次方法,层次方法:该方法对给定的数据对象集合进行层次分解,根据层次分解的方式,层次的方法被分为凝聚的和分裂的: 凝聚层次方法:也称自底向上方法,一开始将每个对象作为单独的一组,然后相继地合并相近的对
20、象或组,直到所有的组合并为一个,或达到某个终止条件,代表:AGNES算法;分裂层次方法:也称自顶向下方法,一开始所有对象置于一个簇中,在迭代的每一步,一个簇被分裂为更小的簇,直到最终每个对象单独为一个簇,或达到某个终止条件,代表:DIANA算法。,69,70,距离计算方法,AGNES算法,AGNES 算法:最初将每个对象作为一个簇,然后这些簇根据某些准则被一步步地合并,直到达到初始指定的簇数目。,算法9-1 AGNES(自底向上凝聚算法) 输入:包含n个对象的数据库,终止条件簇的数目k。 输出:k个簇,达到终止条件规定簇数目。 (1) 将每个对象当成一个初始簇; (2) REPEAT (3)
21、根据两个簇中最近的数据点找到最近的两个簇; (4) 合并两个簇,生成新的簇的集合; (5) UNTIL 达到定义的簇的数目;,AGNES算法,AGNES算法示意图,DIANA算法,DIANA 算法:与AGNES算法相反,初始所有节点都在一个大簇中,根据某些准则被一步步地分解,直到达到初始设定的簇数目。 聚类过程中,DIANA算法将用到如下两种测度方法: 簇的直径:一个簇中的任意两个数据点的距离中的最大值; 平均相异度(平均距离):,DIANA算法,算法9-2 DIANA(自顶向下分裂算法) 输入:包含n个对象的数据库,终止条件簇的数目k。 输出:k个簇,达到终止条件规定簇数目。 (1)将所有对
22、象整个当成一个初始簇; (2) FOR (i=1; ik; i+) DO BEGIN (3) 在所有簇中挑出具有最大直径的簇C; (4) 找出C中与其它点平均相异度最大的一个点p并把p放入splinter group,剩余的放在old party中; (5). REPEAT (6) 在old party里找出到最近的splinter group中的点的距离不大于到old party中最近点的距离的点,并将该点加入splinter group。 (7) UNTIL 没有新的old party的点被分配给splinter group; (8) splinter group和old party为被选
23、中的簇分裂成的两个簇,与其它簇一起组成新的簇集合。 (9) END.,75,DIANA算法,DIANA算法示意图,76,示例,77,示例,1)最初AGNES将每个对象作为一个簇,然后这些簇根据某些准则被一步步合并。 如,如果簇C1中的一个对象和簇C2中的一个对象之间的距离是所有属于不同簇的对象间欧氏距离最小的, C1和C2可能被合并。 这是一种单链接方法:每个簇可以被簇中所有对象代表,两个簇间的相似度由这两个不同簇中距离最近的数据点对的相似度确定。 聚类的合并过程反复进行直到所有对象最终合并形成一个簇。,78,示例,2)在分裂层次DIANA方法中,所有对象初始都放在一个簇中,根据一些原则(如簇
24、中对象的最大欧氏距离),将该簇分裂。簇的分裂过程反复进行,直到最终每个新的簇只包含一个对象。 注意:在这两种层次方法中,用户可以定义一个希望得到的簇的数目来作为结束条件。,9.5 基于层次的聚类方法,大体上,主要的聚类算法可以划分为如下几类: (1)划分方法; (2)层次方法; (3)基于密度的方法; (4)基于网格的方法; (5)基于模型的方法。,80,基于密度的聚类方法,密度方法: 绝大多数聚类方法基于对象之间的距离进行聚类,这样的方法只能发现球状的簇,而在发现任意形状的簇上遇到了困难。 基于密度的方法:只要一个区域中点的密度(对象或数据点的数目)超过某个阈值,就将其加到与之相近的聚类中去
25、。 这种方法可以过滤噪声孤立点数据,发现任意形状的簇。 代表算法有:DBSCAN、OPTICS、DENCLUE算法等。,81,基于密度的方法:DBSCAN,基于密度的聚类算法。该算法将具有足够高密度的区域划分为簇,并可以在带有噪声的空间数据中发现任意形状的聚类。在该方法中,簇被定义为密度相连的点的最大集合。先介绍该方法中涉及到的一些基本的定义。,82,基于密度的方法:DBSCAN,定义 1: 对象的-临域:给定对象在半径内的区域。 定义2: 核心对象:如果一个对象的-临域至少包含最小数目MinPts个对象,则称该对象为核心对象。 例如,在下图中,设定=1cm,MinPts=5,则q是一个核心对
26、象。,83,基于密度的方法:DBSCAN,定义 3: 直接密度可达:给定一个对象集合D,如果p是在q的-邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。 例如,在下图中,设定=1cm,MinPts=5, q是一个核心对象,对象p从对象q出发是直接密度可达的。,84,基于密度的方法:DBSCAN,定义 4: 密度可达的:如果存在一个对象链p1,p2,pn,p1=q,pn=p,对piD,(1=i=n),pi+1是从pi关于和MitPts直接密度可达的,则对象p是从对象q关于和MinPts密度可达的。 例如,在下图中,=1cm,MinPts=5,q是一个核心对象,p1是从q关于
27、和MitPts直接密度可达,p是从p1关于和MitPts直接密度可达,则对象p从对象q关于和MinPts密度可达的。,85,基于密度的方法:DBSCAN,定义 5: 密度相连的:如果对象集合D中存在一个对象o,使得对象p和q是从o关于和MinPts密度可达的,那么对象p和q是关于和MinPts密度相连的。 例如,在下图中,=1cm,MinPts=5,o是一个核心对象,p1是从o关于和MitPts直接密度可达,p是从p1关于和MitPts直接密度可达,则对象p从对象q关于和MinPts密度可达的;同理,q也是从o关于和MinPts密度可达的,则,称对象p和q是关于和MinPts密度相连的。,86
28、,基于密度的方法:DBSCAN,定义 6: 噪声:一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合。不包含在任何簇中的对象被认为是“噪声” 。,87,DBSCAN算法描述,DBSCAN通过检查数据集中每个对象的-邻域来寻找聚类。 如果一个点p的-邻域包含多于MinPts个对象,则创建一个p作为核心对象的新簇。 然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并。 当没有新的点可以被添加到任何簇时,该过程结束。,88,DBSCAN算法描述,DBSCAN算法描述 算法9-3 DBSCAN 输入:包含n个对象的数据库,半径,最少数目MinPts。 输出:所有生成的簇,达到密度要求。 1. REPEAT 2. 从数据库中抽取一个未处理过的点; 3. IF 抽出的点是核心点 THEN找出所有从该点密度可达的对象,形成一个簇 4. ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点; 5. UNTIL 所有点都被处理;,89,DBSCAN算法描述,90,基于划分的聚类方法。 基于层次的聚类方法? 基于密度的聚类方法?,复习与思考问题,