【读书笔记-数据挖掘概念与技术】聚类分析:基本概念和方法
下图摘自:http://blog.163.com/qianshch@126/blog/static/48972522201092254141315/
主要的聚类方法可以划分为以下几类:
划分方法
层次方法
基于密度的方法
基于网格的方法
聚类是典型的无监督学习。
wiki:
数据聚类算法可以分为结构性或者分散性。结构性算法利用以前成功使用过的聚类器进行分类,而分散型算法则是一次确定所有分类。结构性算法可以从上至下或者从下至上双向进行计算。从下至上算法从每个对象作为单独分类开始,不断融合其中相近的对象。而从上至下算法则是把所有对象作为一个整体分类,然后逐渐分小。
分割式聚类算法,是一次性确定要产生的类别,这种算法也已应用于从下至上聚类算法。
基于密度的聚类算法,是为了挖掘有任意形状特性的类别而发明的。此算法把一个类别视为数据集中大于某阈值的一个区域。DBSCAN和OPTICS是两个典型的算法。
许多聚类算法在执行之前,需要指定从输入数据集中产生的分类个数。除非事先准备好一个合适的值,否则必须决定一个大概值,关于这个问题已经有一些现成的技术。
划分方法:把对象组织成多个互斥的组或簇
K-means——K-均值
优点:简单
缺点:受离群点影响较大,因为它基于形心
以下转自:http://blog.csdn.net/heavendai/article/details/7029465
首先 3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示:
然后进入第一次迭代:按照初始的中心点位置为每个数据点着上颜色,这是代码中第 41 到 43 行所做的工作,然后 45 到 47 行重新计算 3 个中心点,结果如下图所示:
可以看到,由于初始的中心点是随机选的,这样得出来的结果并不是很好,接下来是下一次迭代的结果:
可以看到大致形状已经出来了。再经过两次迭代之后,基本上就收敛了,最终结果如下:
不过正如前面所说的那样 k-means 也并不是万能的,虽然许多时候都能收敛到一个比较好的结果,但是也有运气不好的时候会收敛到一个让人不满意的局部最优解,例如选用下面这几个初始中心点:
最终会收敛到这样的结果:
不得不承认这并不是很好的结果。不过其实大多数情况下 k-means 给出的结果都还是很令人满意的,算是一种简单高效应用广泛的 clustering 方法。
K-中心点
把均值换成了中心,围绕中心点的划分(PAM)。
如何运用在大数据集?
层次方法
值得注意的是,层次聚类方法是不可逆的,也就是说,当通过凝聚式的方法将两组合并后,无法通过分裂式的办法再将其分离到之前的状态,反之亦然。另 外,层次聚类过程中调查者必须决定聚类在什么时候停止,以得到某个数量的分类。最后,必须记住,在不必要的情况下应该小心使用层次聚类方法。最好用于有潜 在层次结构的数据上。
簇之间具有层次关系。如下图,树的最底层有5个聚类,在上一层中,聚类6包含数据点1和数据点2,聚类7包含数据点4和数据点5。随着我们自下而上遍历树,聚类的数目越来越少。由于整个聚类树都保存了,用户可以选择查看在树的任意层次上的聚类。
凝聚的层次聚类:由小到大,从每个对象形成自己的簇开始,迭代地把簇合并成越来越大的簇——AGNES
分裂的层次聚类:由大到小,从把所有对象置于一个簇中开始,该簇是层次结构的根——DIANA
wiki:层次聚类算法,要么是自底向上聚集型的,即从叶子节点开始,最终汇聚到根节点;要么是自顶向下分裂型的,即从根节点开始,递归的向下分裂。
任意非负值的函数都可以用于衡量一对观测值之间的相似度。决定一个类别是否分裂或者合并的是一个连动的标准,它是两两观测值之间距离的函数。
在一个指定高度上切割此树,可以得到一个相应精度的分类。
聚集型层次聚类
Raw data
它的层次聚类树如下图
Traditional representation
簇与簇之间的连接度量:
凝聚式方法是层次聚类中被广泛使用的方法。过程中,会产生一 系列的分划:最初的是n个单成员的类,最后的划分是一个包含全部个体的单个类。凝聚式聚类有很多方法,但基本的操作是相似的,在每一步中,将距离最近的类 或者个体融合成一个类。方法之间的差异只是由不同的个体和组之间,或组与组之间的距离的计算方法而带来的。下面介绍一些常用的方法。
单连接算法(single linkage algorithm),又称最近邻 (nearest neighbour)方法。这个方法使用数据的相似度矩阵或距离矩阵,定义类间距离为两类之间数据的最小距离。这个方法不考虑类结构。可能产生散乱的分 类,特别是在大数据集的情况下。因为它可以产生chaining现象,当两类之间出现中间点的时候,这两类很有可能会被这个方法合成一类。单连锁也可以用 于分裂式聚类,用来分开最近邻距离最远的两组。
全连接算法(complete linkage algorithm),又称最远邻(farthest neightbour)方法。同样从相似度矩阵或距离矩阵出发,但定义距离为两类之间数据的最大距离。同样不考虑到类的结构。倾向于找到一些紧凑的分类。
BIRCH:使用聚类特征树的多阶段聚类
(组)平均连锁(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:求出两簇之间的距离;
基于密度的方法——用于发现任意形状的簇
DBSCAN,OPTICS,DENCLUE
DBSCAN:一种基于高密度连通区域的基于密度的聚类
概念:
半径;(用户给定)
核心对象的领域中要求的最少点数;(用户给定)
领域的密度可以简单地用领域内的对象数度量;
直接密度可达;
密度相连;
OPTICS:通过点排序识别聚类结构
概念:
核心距离;
可达距离;
DENCLUE:基于密度分布函数的聚类
基于网格的方法——空间驱动
优点:处理速度快
STING:考察存储在网格单元中的统计信息
CLIQUE:基于网格和密度的聚类方法,用于高维数据空间中的子空间聚类
STING:统计信息网格——基于网格的多分辨率的聚类技术
CLIQUE:一种类似于Apriori的子空间聚类方法
聚类评估
估计聚类趋势——数据集上聚类分析是有意义的,当且仅当存在非随机结构
霍普金斯统计量:检验空间分布的变量的空间随机性
确定簇数
法1:
法2:
确定聚类质量
外在方法——监督方法
核心:给定基准,对聚类赋予评分
同质性:簇越纯越好
完全性:属于相同类别的对象分配到相同的簇
碎布袋:不能与其他对象合并的对象,把异种对象放入一个纯的簇中应该比放入碎布袋中受更大的“处罚”
小簇保持性:小类别在聚类中继续别划分开,使其更不易被发现,这是有害的
度量:BCubed精度和召回率
内在方法——无监督方法
没有基准可用
轮廓系数:考察簇的分离情况和簇的紧凑情况
If you have any questions about this article, welcome to leave a message on the message board.
Brad(Bowen) Xu
E-Mail : maxxbw1992@gmail.com