数据挖掘CHAPTER8聚类分析.docx
- 文档编号:10176958
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:52
- 大小:63.16KB
数据挖掘CHAPTER8聚类分析.docx
《数据挖掘CHAPTER8聚类分析.docx》由会员分享,可在线阅读,更多相关《数据挖掘CHAPTER8聚类分析.docx(52页珍藏版)》请在冰豆网上搜索。
数据挖掘CHAPTER8聚类分析
第八章聚类分析
设想要求对一个数据对象的集合进行分析,但与分类不同的是,它要划分的类是未知的。
聚类(clustering)就是将数据对象分组成为多个类或簇(cluster),在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。
相异度是基于描述对象的属性值来计算的。
距离是经常采用的度量方式。
聚类分析源于许多研究领域,包括数据挖掘,统计学,生物学,以及机器学习。
在本章中,大家将了解基于大数据量上进行操作而对聚类方法提出的要求,将学习如何计算由各种属性和不同的类型来表示的对象之间的相异度。
还将学习几种聚类技术,它们可以分为如下几类:
划分方法(partitioningmethod),层次方法(hierarchicalmethod),基于密度的方法(density-basedmethod),基于网格的方法(grid-basedmethod),和基于模型的方法(model-basedmethod)。
本章最后讨论如何利用聚类方法进行孤立点分析(outlierdetection)。
8.1什么是聚类分析?
将物理或抽象对象的集合分组成为由类似的对象组成的多个类的过程被称为聚类。
由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。
在许多应用中,一个簇中的数据对象可以被作为一个整体来对待。
聚类分析是一种重要的人类行为。
早在孩提时代,一个人就通过不断地改进下意识中的聚类模式来学会如何区分猫和狗,或者动物和植物。
聚类分析已经广泛地用在许多应用中,包括模式识别,数据分析,图像处理,以及市场研究。
通过聚类,一个人能识别密集的和稀疏的区域,因而发现全局的分布模式,以及数据属性之间的有趣的相互关系。
“聚类的典型应用是什么?
”在商业上,聚类能帮助市场分析人员从客户基本库中发现不同的客户群,并且用购买模式来刻画不同的客户群的特征。
在生物学上,聚类能用于推导植物和动物的分类,对基因进行分类,获得对种群中固有结构的认识。
聚类在地球观测数据库中相似地区的确定,汽车保险持有者的分组,及根据房子的类型,价值,和地理位置对一个城市中房屋的分组上也可以发挥作用。
聚类也能用于对Web上的文档进行分类,以发现信息。
作为一个数据挖掘的功能,聚类分析能作为一个独立的工具来获得数据分布的情况,观察每个簇的特点,集中对特定的某些簇作进一步的分析。
此外,聚类分析可以作为其他算法(如分类等)的预处理步骤,这些算法再在生成的簇上进行处理。
数据聚类正在蓬勃发展,有贡献的研究领域包括数据挖掘,统计学,机器学习,空间数据库技术,生物学,以及市场营销。
由于数据库中收集了大量的数据,聚类分析已经成为数据挖掘研究领域中一个非常活跃的研究课题。
作为统计学的一个分支,聚类分析已经被广泛地研究了许多年,主要集中在基于距离的聚类分析。
基于k-means(k-平均值),k-medoids(k-中心)和其他一些方法的聚类分析工具已经被加入到许多统计分析软件包或系统中,例如S-Plus,SPSS,以及SAS。
在机器学习领域,聚类是无指导学习(unsupervisedlearning)的一个例子。
与分类不同,聚类和无指导学习不依赖预先定义的类和训练样本。
由于这个原因,聚类是通过观察学习,而不是通过例子学习。
在概念聚类(conceptualclustering)中,一组对象只有当它们可以被一个概念描述时才形成一个簇。
这不同于基于几何距离来度量相似度的传统聚类。
概念聚类由两个部分组成:
(1)发现合适的簇;
(2)形成对每个簇的描述。
在这里,追求较高类内相似度和较低类间相似度的指导原则仍然适用。
在数据挖掘领域,研究工作已经集中在为大数据量数据库的有效且高效的聚类分析寻找适当的方法。
活跃的研究主题集中在聚类方法的可伸缩性,方法对聚类复杂形状和类型的数据的有效性,高维聚类分析技术,以及针对大的数据库中混合数值和分类数据的聚类方法。
聚类是一个富有挑战性的研究领域,它的潜在应用提出了各自特殊的要求。
数据挖掘对聚类的典型要求如下:
⏹可伸缩性:
许多聚类算法在小于200个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。
我们需要具有高度可伸缩性的聚类算法。
⏹处理不同类型属性的能力:
许多算法被设计用来聚类数值类型的数据。
但是,应用可能要求聚类其他类型的数据,如二元类型(binary),分类/标称类型(categorical/nominal),序数型(ordinal)数据,或者这些数据类型的混合。
⏹发现任意形状的聚类:
许多聚类算法基于欧几里得或者曼哈顿距离度量来决定聚类。
基于这样的距离度量的算法趋向于发现具有相近尺度和密度的球状簇。
但是,一个簇可能是任意形状的。
提出能发现任意形状簇的算法是很重要的。
⏹用于决定输入参数的领域知识最小化:
许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。
聚类结果对于输入参数十分敏感。
参数通常很难确定,特别是对于包含高维对象的数据集来说。
这样不仅加重了用户的负担,也使得聚类的质量难以控制。
⏹处理“噪声”数据的能力:
绝大多数现实中的数据库都包含了孤立点,缺失,或者错误的数据。
一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果。
⏹对于输入记录的顺序不敏感:
一些聚类算法对于输入数据的顺序是敏感的。
例如,同一个数据集合,当以不同的顺序交给同一个算法时,可能生成差别很大的聚类结果。
开发对数据输入顺序不敏感的算法具有重要的意义。
⏹高维度(highdimensionality):
一个数据库或者数据仓库可能包含若干维或者属性。
许多聚类算法擅长处理低维的数据,可能只涉及两到三维。
人类的眼睛在最多三维的情况下能够很好地判断聚类的质量。
在高维空间中聚类数据对象是非常有挑战性的,特别是考虑到这样的数据可能分布非常稀疏,而且高度偏斜。
⏹基于约束的聚类:
现实世界的应用可能需要在各种约束条件下进行聚类。
假设你的工作是在一个城市中为给定数目的自动提款机选择安放位置,为了作出决定,你可以对住宅区进行聚类,同时考虑如城市的河流和公路网,每个地区的客户要求等情况。
要找到既满足特定的约束,又具有良好聚类特性的数据分组是一项具有挑战性的任务。
⏹可解释性和可用性:
用户希望聚类结果是可解释的,可理解的,和可用的。
也就是说,聚类可能需要和特定的语义解释和应用相联系。
应用目标如何影响聚类方法的选择也是一个重要的研究课题。
记住这些约束,我们对聚类分析的学习将按如下的步骤进行。
首先,学习不同类型的数据,以及它们对聚类方法的影响。
接着,给出了一个聚类方法的一般分类。
然后我们详细地讨论了各种聚类方法,包括划分方法,层次方法,基于密度的方法,基于网格的方法,以及基于模型的方法。
最后我们探讨在高维空间中的聚类和孤立点分析(outlieranalysis)。
8.2聚类分析中的数据类型
在这一节中,我们研究在聚类分析中经常出现的数据类型,以及如何对其进行预处理。
假设要聚类的数据集合包含n个数据对象,这些数据对象可能表示人,房子,文档,国家等。
许多基于内存的聚类算法选择如下两种有代表性的数据结构:
⏹数据矩阵(Datamatrix,或称为对象属性结构):
它用p个变量(也称为属性)来表现n个对象,例如用年龄,身高,性别,种族等属性来表现对象“人”。
这种数据结构是关系表的形式,或者看为n*p维(n个对象*p个属性)的矩阵。
(8.1p338?
)
⏹相异度矩阵(dissimilaritymatrix,或称为对象-对象结构):
存储n个对象两两之间的近似性,表现形式是一个n*n维的矩阵。
(8.2p338?
)
在这里d(i,j)是对象i和对象j之间相异性的量化表示,通常它是一个非负的数值,当对象i和j越相似,其值越接近0;两个对象越不同,其值越大。
既然d(i,j)=d(j,i),而且d(i,i)=0,我们可以得到形如(8.2)的矩阵。
关于相异度,我们在这一节中会进行详细探讨。
数据矩阵经常被称为二模(two-mode)矩阵,而相异度矩阵被称为单模(one-mode)矩阵。
这是因为前者的行和列代表不同的实体,而后者的行和列代表相同的实体。
许多聚类算法以相异度矩阵为基础。
如果数据是用数据矩阵的形式表现的,在使用该类算法之前要将其转化为相异度矩阵。
你可能想知道如何来估算相异度。
在本节中,我们讨论如何计算用各种类型的属性来描述的对象的相异度,相异度将被用来进行对象的聚类分析。
8.2.1区间标度(Interval-Scaled)变量
本节讨论区间标度变量和它们的标准化,然后描述距离度量,它通常用于计算用该类变量描述的对象的相异性。
距离的度量包括欧几里得距离,曼哈顿距离,以及明考斯基距离。
“什么是区间标度变量?
”区间标度变量是一个线性标度的连续度量。
典型的例子包括重量和高度,经度和纬度坐标,以及大气温度。
选用的度量单位将直接影响聚类分析的结果。
例如,将高度的度量单位由“米”改为“英尺”,或者将重量的单位由“千克”改为“磅”,可能产生非常不同的聚类结构。
一般而言,所用的度量单位越小,变量可能的值域就越大,这样对聚类结果的影响也越大。
为了避免对度量单位选择的依赖,数据应当标准化。
标准化度量值试图给所有的变量相等的权重。
当没有关于数据的先验知识时,这样做是十分有用的。
但是,在一些应用中,用户可能想给某些变量较大的权重。
例如,当对篮球运动员进行聚类时,我们可能愿意给高度变量较大的权重。
“怎样将一个变量的数据标准化?
”为了实现度量值的标准化,一种方法是将原来的度量值转换为无单位的值。
给定一个变量f的度量值,可以进行如下的变换:
1.计算平均的绝对偏差(meanabsolutedeviation)Sf:
Sf=(|x1f-mf|+|x2f-mf|+…+|xnf-mf|)/n(8.3p339?
)
这里的x1f,…,xnf是f的n个度量值,mf是f的平均值,即
mf=(|x1f+x2f+…+xnf)/n
2.计算标准化的度量值,或z-score:
zif=(xif–mf)/sf(8.4p840?
)
这个平均的绝对偏差sf比标准的偏差对于孤立点具有更好的鲁棒性。
在计算平均绝对偏差时,度量值与平均值的偏差没有被平方,因此孤立点的影响在一定程度上被减小了。
虽然存在更好的对偏差的度量方法,例如中值绝对偏差(medianabsolutedeviation),但采用平均绝对偏差的优点在于孤立点的z-score值不会太小,因此孤立点仍可以被发现。
在特定的应用中,数据标准化可能有用,也可能没用。
因此是否和如何进行标准化的选择被留给了用户。
在第三章里数据预处理的规范化技术中也讨论了标准化的方法。
“好的,”现在你可能会问,“我已经对数据进行了标准化处理,我该如何计算对象间的相异度?
”在标准化处理后,或者在某些应用中不需要标准化,对象间的相异度(或相似度)是基于对象间的距离来计算的。
最常用的距离度量方法是欧几里得距离,它的定义如下:
d(I,j)=(?
p340,8.5)
这里的i=(xi1,xi2,…,xip)和j=(xj1,xj2,…xjp)是两个p维的数据对象。
另一个著名的度量方法是曼哈顿距离,其定义如下:
d(I,j)=|xi1-xj1|+|xi2-xj2|+…+|xip-xjp|(8.6p340?
)
上面的两种距离度量方法都满足对距离函数的如下数学要求:
1.d(i,j)≥0:
距离是一个非负的数值。
2.d(i,i)=0:
一个对象与自身的距离是0。
3.d(i,j)=d(j,i):
距离函数具有对称性。
4.d(i,j)≤d(i,h)+d(h,j):
从对象I到对象j的直接距离不会大于途径任何其他对象的距离。
明考斯基距离是欧几里得距离和曼哈顿距离的概化,它的定义如下:
D(I,j)=(|xi1-xj1|q+|xi2-xj2|q+…+|xip-xjp|q)1/q(8.7p341?
)
这里的q是一个正整数。
当q=1时,它表示曼哈顿距离;当a=2表示欧几里得距离。
如果对每个变量根据其重要性赋予一个权重,加权的欧几里得距离可以计算如下:
d(I,j)=w1|xi1-xj1|2+(?
p341,8.8)
8.2.2二元变量(binaryvariable)
本小节介绍如何计算用二元变量描述的对象间的相似度。
一个二元变量只有两个状态:
0或1,0表示该变量为空,1表示该变量存在。
例如,给出一个描述病人的变量smoker,1表示病人抽烟,而0表示病人不抽烟。
像处理区间标度变量一样来对待二元变量会误导聚类结果,所以要采用特定的方法来计算其相异度。
“那么,我怎样计算两个二元变量之间的相似度?
”一个方法涉及对给定的数据计算相异度矩阵。
如果假设所有的二元变量有相同的权重,我们得到一个两行两列的可能性表8.1。
在表中,q是对对象i和j值都为1的变量的数目,r是在对象i中值为1,在对象j中值为0的变量的数目,s是在对象i中值为0,在对象j中值为1的变量的数目,t是在对象i和j中值都为0的变量的数目。
变量的总数是p,p=q+r+s+t。
表8.1二元变量的可能性表
对象j
总和
对象I
(?
p341)
“对称的二元变量和不对称的二元变量之间的区别是什么?
”如果它的两个状态有相同的权重,那么该二元变量是对称的,也就是两个取值0或1没有优先权。
例如,属性“性别”就是这样的一个例子,它有两个值:
“女性”和“男性”。
基于对称二元变量的相似度称为恒定的相似度,即当一些或者全部二元变量编码改变时,计算结果不会发生变化。
对恒定的相似度来说,评价两个对象i和j之间相异度的最著名的系数是简单匹配系数,其定义如下:
d(I,j)=(r+s)/(q+r+s+t)(8.9p342?
)
如果两个状态的输出不是同样重要,那么该二元变量是不对称的。
例如一个疾病检查的肯定和否定的结果。
根据惯例,我们将比较重要的输出结果,通常也是出现几率较小的结果编码为1(例如,HIV阳性),而将另一种结果编码为0(例如HIV阴性)。
给定两个不对称的二元变量,两个都取值1的情况(正匹配)被认为比两个都取值0的情况(负匹配)更有意义。
因此,这样的二元变量经常被认为好像只有一个状态。
基于这样变量的相似度被称为非恒定的相似度。
对非恒定的相似度,最著名的评价系数是Jaccard系数,在它的计算中,负匹配的数目被认为是不重要的,因此被忽略。
D(I,j)=(r+s)/(q+r+s)(8.10)
当对称的和非对称的二元变量出现在同一个数据集中,在8.2.4节中描述的混合变量方法可以被应用。
例8.1二元变量之间的相异度:
假设一个病人记录表(表8.2)包含属性name(姓名),gender(性别),fever(发烧),cough(感冒),test-1,test-2,test-3,和test-4,这里的name是对象标识,gender是对称的二元变量,其余的属性都是非对称的二元变量。
表8.2大部分为二元属性的关系变量
(p343?
)
对非对称属性,值Y(yes)和P(positive)被置为1,值N(no或者negative)被置为0。
假设对象(病人)之间的距离只基于非对称变量来计算。
根据Jaccard系数公式(8.10),三个病人Jack,Mary,和Jim两两之间的相异度如下:
d(jack,mary)=(0+1)/(2+0+1)=0.33(8.11p343)
d(jack,jim)=(1+1)/(1+1+1)=0.67(8.12p343?
)
d(jim,mary)=(1+2)/(1+1+2)=0.75(8.13p343?
)
上面的值显示Jim和Mary不可能有相似的疾病,因为他们有着最高的相异度。
在这三个病人中,Jack和Mary最可能有类似的疾病。
8.2.3标称型、序数型和比例标度型变量
本节讨论如何计算用标称(Nominal),序数(Ordinal)和比例标度(Ratio-Scaled)变量描述的对象之间的相异度。
标称变量
标称变量是二元变量的推广,它可以具有多于两个的状态值。
例如,map_color是一个标称变量,它可能有五个值:
红色,黄色,绿色,粉红色,和蓝色。
假设一个标称变量的状态数目是M。
这些状态可以用字母,符号,或者一组整数(如1,2,…,M)来表示。
要注意这些整数只是用于数据处理,并不代表任何特定的顺序。
“如何计算标称变量所描述的对象之间的相异度?
”两个对象i和j之间的相异度可以用简单匹配方法来计算:
d(I,j)=(p-m)/p(8.14p343)
这里m是匹配的数目,即对i和j取值相同的变量的数目;而p是全部变量的数目。
我们可以通过赋权重来增加m的影响,或者赋给有较多状态的变量的匹配更大的权重。
通过为每个状态创建一个二元变量,可以用二元变量来表示标称变量。
对一个有特定状态值的对象,对应该状态值的二元变量值置为1,而其余的二元变量值置为0。
例如,为了对标称变量map_color进行编码,对应于上面所列的五种颜色分别创建一个二元变量。
如果一个对象是黄色,那么yellow变量被赋值为1,而其余的四个变量被赋值为0。
对于这种形式的编码,可以采用在8.2.2节中讨论的方法来计算相异度。
序数型变量
一个离散的序数型变量类似于标称变量,除了序数型变量的M个状态是以有意义的序列排序的。
序数型变量对记录那些难以客观度量的主观评价是非常有用的。
例如,职业的排列经常按某个顺序,例如助理,副手,正职。
一个连续的序数型变量看起来象一个未知刻度的连续数据的集合,也就是说,值的相对顺序是必要的,而其实际的大小则不重要。
例如,在某个比赛中的相对排名(例如金牌,银牌,和铜牌)经常比事实的度量值更为必需。
将区间标度变量的值域划分为有限个区间,从而将其值离散化,也可以得到序数型变量。
一个序数型变量的值可以映射为排序。
例如,假设一个变量f有Mf个状态,这些有序的状态定义了一个序列1,…,Mf。
“怎样处理序数型变量?
”在计算对象的相异度时,序数型变量的处理与区间标度变量非常类似。
假设f是用于描述n个对象的一组序数型变量之一,关于f的相异度计算包括如下步骤:
1.第i个对象的f值为xif,变量f有Mf个有序的状态,对应于序列1,…,Mf。
用对应的rif代替xif,rif∈{1,…,Mf}。
2.既然每个序数型变量可以有不同数目的状态,我们经常必须将每个变量的值域映射到[0.0,1.0]上,以便每个变量都有相同的权重。
这一点可以通过用zif代替rif来实现。
Zif=(rif–1)/(Mf-1)(8.15p344)
3.相异度的计算可以采用8.2.1节所描述的任意一种距离度量方法,采用zif作为第i个对象的f值。
比例标度型变量
比例标度型变量在非线性的刻度取正的度量值,例如指数,近似地遵循如下的公式
(?
8.16p345)
这里的A和B是正的常数。
典型的例子包括细菌数目的增长,或者放射性元素的衰变。
“如何计算用比例标度型变量描述的对象之间的相异度?
”目前有三种方法:
⏹采用与处理区间标度变量同样的方法。
但是,这种作法通常不是一个好的选择,因为刻度可能被扭曲了。
⏹对比例标度型变量进行对数变换,例如对象i的f变量的值xif被变换为yif,yif=log(xif)。
变换得到的yif值可以采用在8.2.1节中描述的方法来处理。
需要注意的是,对一些比例标度型变量,可以采用log-log或者其他形式的变换,具体的做法取决于定义和应用。
⏹将xif看作连续的序数型数据,将其秩作为区间标度的值来对待。
尽管选用哪种方法取决于实际的应用,但后两种方法是比较有效的。
8.2.4混合类型的变量
在8.2.1到8.2.3节中讨论了计算由同种类型变量描述的对象之间的相异度的方法,变量的类型可能是区间标度变量,对称二元变量,不对称二元变量,标称变量,序数型变量或者比例标度型变量。
但是在许多真实的数据库中,对象是被混合类型的变量描述的。
一般来说,一个数据库可能包含上面列出的全部六种类型。
“那么,我们怎样计算用混合类型变量描述的对象之间的相异度?
”一种方法是将变量按类型分组,对每种类型的变量进行单独的聚类分析。
如果这些分析得到兼容的结果,这种方法是可行的。
但是,在实际的应用中,这种情况是不大可能的。
一个更可取的方法是将所有的变量一起处理,只进行一次聚类分析。
一种技术将不同类型的变量组合在单个相异度矩阵中,把所有有意义的变量转换到共同的值域区间[0.0,1.0]上。
假设数据集包含p个不同类型的变量,对象i和j之间的相异度d(i,j)定义为
d(I,j)=(?
8.17p346)
如果xif或xjf缺失(即对象i或对象j没有变量f的度量值),或者xif=xjf=0,且变量f是不对称的二元变量,则指示项(?
)=0;否则,指示项(?
)=1。
变量f对i和j之间相异度的计算方式与其具体类型有关:
⏹如果f是二元或标称变量:
如果xif=xjf,dij(f)(?
)=0;否则dij(f)(?
)=1。
⏹如果f是区间标度变量:
dij(f)(?
)=(?
),这里的h包含了所有有变量f值的对象。
⏹如果f是序数型或者比例标度型变量:
计算秩rif和zif=(?
),将zif作为区间标度变量值对待。
这样,当描述对象的变量是不同类型时,对象之间的相异度也能够进行计算。
8.3主要聚类方法的分类
目前在文献中存在大量的聚类算法。
算法的选择取决于数据的类型,聚类的目的和应用。
如果聚类分析被用作描述或探查的工具,可以对同样的数据尝试多种算法,以发现数据可能揭示的结果。
大体上,主要的聚类算法可以划分为如下几类:
划分方法(partitioningmethods):
给定一个n个对象或元组的数据库,一个划分方法构建数据的k个划分,每个划分表示一个聚类,并且k<=n。
也就是说,它将数据划分为k个组,同时满足如下的要求:
(1)每个组至少包含一个对象;
(2)每个对象必须属于且只属于一个组。
注意在某些模糊划分技术中第二个要求可以放宽。
在参考文献中列出了对于该类技术的参照。
给定k,即要构建的划分的数目,划分方法首先创建一个初始划分。
然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。
一个好的划分的一般准则是:
在同一个类中的对象之间的距离尽可能小,而不同类中的对象之间的距离尽可能大。
还有许多其他划分质量的评判准则。
为了达到全局最优,基于划分的聚类会要求穷举所有可能的划分。
实际上,绝大多数应用采用了以下两个比较流行的启发式方法:
(1)k-means算法,在该算法中,每个簇用该簇中对象的平均值来表示。
(2)k-medoids算法,在该算法中,每个簇用接近聚类中心的一个对象来表示。
这些启发式聚类方法对在中小规模的数据库中发现球状簇很适用。
为了对大规模的数据集进行聚类,以及处理复杂形状的聚类,基于划分的方法需要进一步的扩展。
8.4节对基于划分的聚类方法进行了深入的研究。
层次的方法(hierarchicalmethods):
层次的方法对给定数据集合进行层次的分解。
根据层次的分解如何形成,层次的方法可以被分为凝聚的或分裂的方法。
凝聚的方法,也称为自底向上的方法,一开始将每个对象作为单独的一个组,然后继续地合并相近的对象或组,直到所有的组合并为一个(层次的最上层),或者达到一个终止条件。
分裂的方法,也称为自顶向下的方法,一开始将所有的对象置于一个簇中。
在迭代的每一步中,一个簇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 CHAPTER8 聚类分析