数据挖掘之描述建模(聚类分析和K-means)

1、简介

1.1 什么是聚类分析

Cluster: a collection of data objects, similar to one another within the same cluster, dissimilar to the objects in other clusters. 聚类分析(Cluster analysis)就是根据数据的特征找出数据间的相似性,将相似的数据分成一个类。聚类分析是一种无监督的学习(Unsupervised learning: no predefined classes)。

1.2 Typical applications
聚类分析可以作为一个独立的工具对数据分布进行分析,也可以作为其他算法(如分类等)的预处理步骤 ,还用于Pattern Recognition、Spatial Data Analysis、Image Processing、Economic Science (especially market research)、WWW等方面。比如在Marketing方面,可以帮助市场分析人员从客户基本库中发现不同的客户群,并且用购买模式来刻画不同的客户群的特征;在Land use方面,可以在地球观测数据库中用以确定相似地区;在City-planning方面,可以根据房子的类型,价值,和地理位置对一个城市中的房屋分组。

1.3 聚类的质量

好的聚类方法能产生高质量的聚类。所谓高质量,指类中的对象高度相似、类间的对象高度不相似。聚类的质量与相似性度量及其实现方法有关。聚类方法的好坏也可以按照它是否能够发现更多的隐含模式来度量。

聚类质量的衡量关键在与相似度(或不相似程度)的计算,相似性(Dissimilarity/Similarity metric)通常用距离函数来表示,typically metric: d(i, j)。距离函数的定义对于不同的数据通常是不同的,如:interval-scaled、Boolean、Categorical、ordinal ratio、vector variables等。根据应用背景或者数据语义的不同,对不同的变量可以适当加权。其实,实际中很难定义什么是“足够相似”,答案的主观性很强。

1.4 Requirements of Clustering in Data Mining

可伸缩性、能够处理各种不同类型的属性、能够发现任意形状的聚类、在决定输入参数的时候,对领域知识的需求要小、能够处理噪声和异常点、对输入数据的顺序部敏感、可以处理高维数据、可以和用户制定的限定条件相结合、可解释性和使用性好。

2、聚类中的数据结构和相关概念

2.1 数据结构

(1) Data matrix(数据矩阵,或称为对象属性结构)

用p个变量(也称为属性)来表现n个对象,例如用年龄,身高,性别,种族等属性来表现对象“人”。这种数据结构是关系表的形式,或者看为n*p维(n个对象*p个属性)的矩阵。

        图1 Data matrix(数据矩阵,或称为对象属性结构)

(2) Dissimilarity matrix(相异度矩阵,或称为对象-对象结构)

存储n个对象两两之间的近似性,表现形式是一个n*n维的矩阵。d(i,j)是对象i和对象j之间相异性的量化表示,通常它是一个非负的数值,当对象i 和j越相似,其值越接近0;两个对象越不同,其值越大。既然d(i,j) = d(j,i),而且d(i,i)=0,可以得到如下矩阵。


图2 Dissimilarity matrix(相异度矩阵,或称为对象-对象结构)

(3) 二模矩阵和单模矩阵

数据矩阵经常被称为二模(two-mode)矩阵,而相异度矩阵被称为单模(one-mode)矩阵。这是因为前者的行和列代表不同的实体,而后者的行和列代表相同的实体。许多聚类算法以相异度矩阵为基础。如果数据是用数据矩阵的形式表现的,在使用该类算法之前要将其转化为相异度矩阵。

2.2 数据类型

(1) Interval-scaled variables(区间标度 )

区间标度变量的典型的例子包括重量和高度,经度和纬度坐标,以及大气温度等。选用的度量单位将直接影响聚类分析的结果。例如,将高度的度量单位由“米”改为“英尺”,或者将重量的单位由“千克”改为“磅”,可能产生非常不同的聚类结构。为了避免对度量单位选择的依赖,数据应当标准化。为了实现度量值的标准化,一种方法是将原来的度量值转换为无单位的值。 

1) 数据标准化

给定一个变量f的度量值,可以进行如下的变换:

2) 计算对象间的相异度

对象间的相异度(或相似度)是基于对象间的距离来计算的。


(2) Binary variables(二元变量 )
二元变量只有两个状态:0或1,0表示该变量为空,1表示该变量存在。例如,给出一个描述病人的变量smoker,1表示病人抽烟,而0表示病人不抽烟。像处理区间标度变量一样来对待二元变量会误导聚类结果,所以要采用特定的方法来计算其相异度。 
1) 二元变量可能性表
假设所有的二元变量有相同的权重,得到一个两行两列的可能性表。如图,a是对对象i和j值都为1的变量的数目,b是在对象i中值为1,在对象j中值为0的变量的数目,c是在对象i中值为0,在对象j中值为1的变量的数目,d是在对象i和j中值都为0的变量的数目,变量的总数是a+b+c+d。

2) 对称的二元变量
如果二元变量的两个状态有相同的权重, 那么该二元变量是对称的,也就是两个取值0或1没有优先权,如,“性别”。基于对称二元变量的相似度称为恒定的相似度,即当一些或者全部二元变量编码改变时,计算结果不会发生变化。对恒定的相似度来说,评价两个对象i和j之间相异度的最著名的系数是简单匹配系数,其定义如下图。
3) 不对称的二元变量
如果两个状态的输出不是同样重要,那么该二元变量是不对称的。例如一个疾病检查的肯定和否定的结果。根据惯例,我们将比较重要的输出结果,通常也是出现几率较小的结果编码为1,而将另一种结果编码为0。给定两个不对称的二元变量,两个都取值1的情况(正匹配)被认为比两个都取值0的情况(负匹配)更有意义。基于这样变量的相似度被称为非恒定的相似度。对非恒定的相似度,最著名的评价系数是Jaccard系数,在它的计算中,负匹配的数目被认为是不重要的,因此被忽略。

4) 二元变量相似度计算的例子

(3)Nominal Variables(标称变量) 
标称变量是二元变量的推广,它可以具有多于两个的状态值。例如,map_color是一个标称变量,它可能有五个值:红色 ,黄色,绿色,粉红色,和蓝色。 假设一个标称变量的状态数目是M。这些状态可以用字母,符号,或者一组整数(如1,2,…,M)来表示。 两个对象i和j之间的相异度可以用简单匹配方法来计算:
其中m是匹配的数目,即i和j取值相同的变量的数目;而 p是全部变量的数目。
另外一种方法是为每个状态创建一个二元变量,可以用二元变量来表示标称变量。对一个有特定状态值的对象,对应该状态值的二元变量值置为1,而其余的二元变量值置为0。例如,为了对标称变量map_color进行编码,对应于上面所列的五种颜色分别创建一个二元变量。如果一个对象是黄色,那么yellow变量被赋值为1,而其余的四个变量被赋值为0。对于这种形式的编码,可以采用前面的方法来计算相异度。
(4) Ordinal Variables(序数型变量)
序数型变量类似于标称变量,但序数型变量的M个状态是以有意义的序列排序的。例如,职称。采用和区间标度变量类似的方法来计算对象的相异度:假设f是用于描述n个对象的一组序数型变量之一,关于f的相异度计算包括如下步骤:
(a) 第i个对象的f值为xif,变量f有Mf个有序的状态,对应于序列1,…,Mf。用对应的rif代替xif,rif∈ {1,…,Mf}。
(b) 将每个变量的值域映射到 [0 .0, 1.0]上,通过用zif代替rif来实现。



(c) 相异度的计算可以采用区间标度变量的方法,采用zif作为第i个对象的f值。
(5) Ratio-Scaled Variables(比例标度变量)
比例标度变量的典型例子包括细菌数目的增长,或者放射性元素的衰变。通常应用对数转换的方法:yif = log(xif)。
(6) Variables of Mixed (混合类变量)
在许多真实的数据库中,对象可能包含多种不同类型的变量。

3、主要的聚类算法
3.1 基于划分的方法 
给定一个n个对象或元组的数据库,划分方法构建数据的k个划分,每个划分表示一个聚类,并且k<=n。也就是说,它将数据划分为k个组,同时满足如下的要求:(1)每个组至少包含一个对象;(2)每个对象必须属于且只属于一个组。 
3.2 基于层次的聚类方法
主要思想是把数据对象排列成一个聚类树,在需要的层次上对其进行切割,相关联的部分构成一个cluster。基于层次的聚类方法有两种类型:
(1)聚合层次聚类。最初每个对象是一个cluster,然后根据它们之间的相似性,对这些原子的cluster进行合并。大多数层次方法属于这一类,它们的主要区别是cluster之间的相似性的定义不同。
(2)划分层次聚类,它与上面的过程正好相反。 
一个例子:

用户可以指定算法终止的条件,例如,聚类的个数或每个cluster的半径低于某个阀值。 弱点在于合并或分裂点的选取问题,因为一组对象一旦合并或分裂,就不能有undo的操作时间复杂度为O(N2),对于处理大数据量有性能问题。
3.3 基于密度的方法
绝大多数划分方法基于对象之间的距离进行聚类。这样的方法只能发现凸状的簇,而在发现任意形状的簇上遇到了困难。基于密度的聚类方法的主要思想是:只要临近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类。也就是说,对给定类中的每个数据点,在一个给定范围的区域中必须包含至少某个数目的点。这样的方法可以用来过滤“噪音”数据,发现任意形状的簇。 
3.4 基于方格的方法
把多维数据空间划分成一定数目的单元,然后在这种数据结构上进行聚类操作。该类方法的特点是它的处理速度,因为其速度与数据对象的个数无关,而只依赖于数据空间中每个维上单元的个数。
3.5 基于模型的方法
(1) 神经网络方法 
(2) 统计的方法
3.6 基于分区的方法

4、K-means算法
K-Means方法是MacQueen1967年提出的。给定一个数据集合X和一个整数K(n),K-Means方法是将X分成K个聚类并使得在每个聚类中所有值与该聚类中心距离的总和最小。 
4.1 K-means算法步骤
K-Means聚类方法分为以下几步:
[1] 给K个cluster选择最初的中心点,称为K个Means。(这时的聚类中心依据经验或任意指定)
[2] 计算每个对象和每个中心点之间的距离。
[3] 把每个对象分配给距它最近的中心点做属的cluster。
[4] 重新计算每个cluster的中心点。(K-means中新的聚类中心,由类中所有的点各维的平均值计算得来。)
[5] 重复2,3,4步,直到算法收敛。 
4.2 K-means算法概例

4.3 K-means算法详细例子

5、K-means相关
5.1 K-means方法优缺点
K-Means方法具有下面的优点:
(1) 对于处理大数据量具有可扩充性和高效率。算法的复杂度是O(tkn),其中n是对象的个数,k是cluster的个数,t是循环的次数,通常k,t<<n。
(2) 可以实现局部最优化,如果要找全局最优,可以用退火算法或者遗传算法
K-Means方法也有以下缺点:
(1) Cluster的个数必须事先确定,在有些应用中,事先并不知道cluster的个数。
(2) K个中心点必须事先预定,而对于有些字符属性,很难确定中心点。
(3) 不能处理噪音数据。
(4) 不能处理有些分布的数据(例如凹形)
5.2 K-Means方法的变种
(1) K-Modes :处理分类属性
(2) K-Prototypes:处理分类和数值属性
(3) K-Medoids 
它们与K-Means方法的主要区别在于:
(1) 最初的K个中心点的选择不同。
(2) 距离的计算方式不同。
(3) 计算cluster的中心点的策略不同。

展开阅读全文

没有更多推荐了,返回首页