【读书笔记-数据挖掘概念与技术】聚类分析:基本概念和方法

imageimage

下图摘自:http://blog.163.com/qianshch@126/blog/static/48972522201092254141315/

564075853345882448

 


主要的聚类方法可以划分为以下几类:

          划分方法

          层次方法

          基于密度的方法

          基于网格的方法

聚类是典型的无监督学习。

wiki:

数据聚类算法可以分为结构性或者分散性。结构性算法利用以前成功使用过的聚类器进行分类,而分散型算法则是一次确定所有分类。结构性算法可以从上至下或者从下至上双向进行计算。从下至上算法从每个对象作为单独分类开始,不断融合其中相近的对象。而从上至下算法则是把所有对象作为一个整体分类,然后逐渐分小。

分割式聚类算法,是一次性确定要产生的类别,这种算法也已应用于从下至上聚类算法。

基于密度的聚类算法,是为了挖掘有任意形状特性的类别而发明的。此算法把一个类别视为数据集中大于某阈值的一个区域。DBSCAN和OPTICS是两个典型的算法。

许多聚类算法在执行之前,需要指定从输入数据集中产生的分类个数。除非事先准备好一个合适的值,否则必须决定一个大概值,关于这个问题已经有一些现成的技术。


划分方法:把对象组织成多个互斥的组或簇

K-means——K-均值

优点:简单

缺点:受离群点影响较大,因为它基于形心

以下转自:http://blog.csdn.net/heavendai/article/details/7029465

首先 3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示:

iter_00

然后进入第一次迭代:按照初始的中心点位置为每个数据点着上颜色,这是代码中第 41 到 43 行所做的工作,然后 45 到 47 行重新计算 3 个中心点,结果如下图所示:

iter_01

可以看到,由于初始的中心点是随机选的,这样得出来的结果并不是很好,接下来是下一次迭代的结果:

iter_02

可以看到大致形状已经出来了。再经过两次迭代之后,基本上就收敛了,最终结果如下:

iter_04

不过正如前面所说的那样 k-means 也并不是万能的,虽然许多时候都能收敛到一个比较好的结果,但是也有运气不好的时候会收敛到一个让人不满意的局部最优解,例如选用下面这几个初始中心点:

iter_00_bad

最终会收敛到这样的结果:

iter_03_bad

不得不承认这并不是很好的结果。不过其实大多数情况下 k-means 给出的结果都还是很令人满意的,算是一种简单高效应用广泛的 clustering 方法。

image

K-中心点

image

把均值换成了中心,围绕中心点的划分(PAM)。

image

如何运用在大数据集?

image

image


层次方法

值得注意的是,层次聚类方法是不可逆的,也就是说,当通过凝聚式的方法将两组合并后,无法通过分裂式的办法再将其分离到之前的状态,反之亦然。另 外,层次聚类过程中调查者必须决定聚类在什么时候停止,以得到某个数量的分类。最后,必须记住,在不必要的情况下应该小心使用层次聚类方法。最好用于有潜 在层次结构的数据上。

簇之间具有层次关系。如下图,树的最底层有5个聚类,在上一层中,聚类6包含数据点1和数据点2,聚类7包含数据点4和数据点5。随着我们自下而上遍历树,聚类的数目越来越少。由于整个聚类树都保存了,用户可以选择查看在树的任意层次上的聚类。

810a19d8bc3eb1351e89fd05a41ea8d3fc1f44c5

凝聚的层次聚类:由小到大,从每个对象形成自己的簇开始,迭代地把簇合并成越来越大的簇——AGNES

分裂的层次聚类:由大到小,从把所有对象置于一个簇中开始,该簇是层次结构的根——DIANA

wiki:层次聚类算法,要么是自底向上聚集型的,即从叶子节点开始,最终汇聚到根节点;要么是自顶向下分裂型的,即从根节点开始,递归的向下分裂。

任意非负值的函数都可以用于衡量一对观测值之间的相似度。决定一个类别是否分裂或者合并的是一个连动的标准,它是两两观测值之间距离的函数。

在一个指定高度上切割此树,可以得到一个相应精度的分类。

聚集型层次聚类

Raw data

它的层次聚类树如下图

Traditional representation

 

簇与簇之间的连接度量:

image

凝聚式方法是层次聚类中被广泛使用的方法。过程中,会产生一 系列的分划:最初的是n个单成员的类,最后的划分是一个包含全部个体的单个类。凝聚式聚类有很多方法,但基本的操作是相似的,在每一步中,将距离最近的类 或者个体融合成一个类。方法之间的差异只是由不同的个体和组之间,或组与组之间的距离的计算方法而带来的。下面介绍一些常用的方法。

单连接算法(single linkage algorithm)又称最近邻 (nearest neighbour)方法。这个方法使用数据的相似度矩阵或距离矩阵,定义类间距离为两类之间数据的最小距离。这个方法不考虑类结构。可能产生散乱的分 类,特别是在大数据集的情况下。因为它可以产生chaining现象,当两类之间出现中间点的时候,这两类很有可能会被这个方法合成一类。单连锁也可以用 于分裂式聚类,用来分开最近邻距离最远的两组。

全连接算法(complete linkage algorithm)又称最远邻(farthest neightbour)方法。同样从相似度矩阵或距离矩阵出发,但定义距离为两类之间数据的最大距离。同样不考虑到类的结构。倾向于找到一些紧凑的分类。

 

image

BIRCH:使用聚类特征树多阶段聚类

image

image

image

image

(组)平均连锁(group average linkage) 又称为 UPGMA(Unweighted Pair-Group Methodusing the Average approach)。跟前两个方法一样,从相似度矩阵或距离矩阵出发,但定义距离为类间数据两两距离的平均值。这个方法倾向于合并差异小的两个类。(距 离)介于单连锁和全连锁之间。它考虑到了类的结构,产生的分类具有相对的鲁棒性。

质心连锁(centroid linkage)又称为 UPGMC(Unweighted Paire-Group Method using Centroid approach)。不同于前面的方法,它从距离矩阵和原始数据出发,一般定义距离为平方欧几里得距离(可以使用其他距离测度方法,但是可能会对缺少原始 数据的阐释,比如“质心”的概念),此距离为个体与组的质心(所有成员的原始数据均值),或组与组的质心距离。

中值连锁(median linkage)又称为WPGMC (Weighted Pair-Group Method using Centroid approach。跟前面的UPGMC不同的是,在计算组的质心时,将合成该组的两部分(组组,个体和组?)按照相同的权重计算,也就是说算出的质心实际 上是组成该组的两部分的质心的均值。

Chameleon:使用动态建模多阶段层次聚类

凝聚层次聚类算法,基于子簇的相似度反腐地合并子簇,相似度考虑每个簇的互联性RI和临近性RC。

概率层次聚类:使用概率模型度量簇之间的距离,克服算法层次聚类中的一些特点:1)为层次聚类选择一种好的距离度量常常是困难的;2)为了使用算法的方法,数据对象不能有缺失的属性值;3)大部分算法的层次聚类方法都是启发式的,在每一步局部的搜索好的合并/划分,因此,优化目标不清晰。

步骤:

        1:假定数据点符合某种分布;

         2:求出模型生成的概率;

         3:求模型生成的似然;

         4:使得似然最大,求出分布中的参数;

         5:求出两簇之间的距离;

image


基于密度的方法——用于发现任意形状的簇

image

DBSCAN,OPTICS,DENCLUE

DBSCAN:一种基于高密度连通区域基于密度的聚类

概念:

       半径;(用户给定)

       核心对象的领域中要求的最少点数;(用户给定)

       领域的密度可以简单地用领域内的对象数度量;

       直接密度可达;

       密度相连;

image

OPTICS:通过点排序识别聚类结构

概念:

        核心距离;

        可达距离;

image

DENCLUE:基于密度分布函数的聚类

image

image


基于网格的方法——空间驱动

优点:处理速度快

STING:考察存储在网格单元中的统计信息

CLIQUE:基于网格和密度的聚类方法,用于高维数据空间中的子空间聚类

image

STING:统计信息网格——基于网格的多分辨率的聚类技术

image

image

image

image

CLIQUE:一种类似于Apriori的子空间聚类方法

image

image

image

image


聚类评估

image

估计聚类趋势——数据集上聚类分析是有意义的,当且仅当存在非随机结构

霍普金斯统计量:检验空间分布的变量的空间随机性

确定簇数

法1:

image

法2:

image

确定聚类质量

外在方法——监督方法

核心:给定基准,对聚类赋予评分

          同质性:簇越纯越好

          完全性:属于相同类别的对象分配到相同的簇

          碎布袋:不能与其他对象合并的对象,把异种对象放入一个纯的簇中应该比放入碎布袋中受更大的“处罚”

          小簇保持性:小类别在聚类中继续别划分开,使其更不易被发现,这是有害的

度量:BCubed精度召回率

image

内在方法——无监督方法

没有基准可用

轮廓系数:考察簇的分离情况和簇的紧凑情况

image

posted @ 2015-03-25 12:13  max_xbw  阅读(6282)  评论(0编辑  收藏  举报