数据科学之机器学习11: 聚类分析2

artical 26

“文章原创,转载请注明出处”


上一篇介绍了聚类分析的定义,给出了很多不同的相似性的度量方法。这一篇主要想介绍一下除了快速聚类之外的另外一种聚类方法:系统聚类法

二、系统聚类法


系统聚类法,hierarchical clustering method,是聚类分析方法中用的较多的一种。其具体过程如下:

  1. 对于n个样品,构造n个类,每个样品单独作为一类。计算每个类之间的距离;
  2. 合并距离最近的两个类为一个新类;
  3. 计算新类与其它类之间的距离,重复2直到所有类合并称为1个类为止。

那么类与类之间的距离如何定义呢?

其实,类与类之间的距离有很多中定义方式常见的有:

  1. 最短距离法,single linkage method, DKL=miniGK,jGLdij
  2. 最长距离法,complete linkage method, DKL=maxiGK,jGLdij
  3. 中间距离法,median linkage method,即取最远距离与最近距离两者的中间距离;
  4. 类平均法,average linkage method, DKL=1nKnLiGK,jGLdij
  5. 重心法,centroid hierarchical method,即取类重心之间的距离;
  6. 离差平方和法,Ward’s minimum variance method, 定义较为繁琐,可以自行Google;

:系统聚类的方法并不困难,但是实现时会存在计算量的问题。系统聚类法一般是在样品间距离矩阵的基础上进行的,它需要计算所有点到所有点之间的距离,当样品量很大时,这个计算量会变得非常的大。因而,很多时候人们会采用动态聚类的方法去处理数据,动态聚类法中一种最常用的方法就是之前已经介绍过的KMeans方法。

R语言实现

在R语言中,自带了一个函数可以实现系统聚类:hclust。可以自己查阅help。

三、聚类的一些问题


  1. 量纲问题。实际问题中,由于数据采用的量纲不同,很多时候需要对数据进行一些变换,最常用的就是标准化。但也有一些其它方式:极差变换(数据除以极差);主成分变换(用主成分代替本身数据);对数变换等等。
  2. kmeans算法只有在类的平均值可以被定义的情况下使用,所以在一些特殊的场合,kmeans并不适用。比如分类数据等等!!
  3. kmeans算法使用平均值作为衡量,这就造成了一个新的问题。即kmeans不适用于含有异常值的数据,非凸面的数据以及大小值相差很大的数据。
  4. 聚类的一个难点在于:确定类的个数。通过上面介绍的算法来看,所有的方法都需要自己去定义类的个数。那么如何去定义类的个数呢?这是一个到现在还没有满意解决的问题。常用的方式就是观察样品散点图,查看变化率,以及使用一些假设检验的方式(感兴趣可以翻阅专业的书籍材料,比如上海财经出版社的应用多元分析中就有讲到这部分内容)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值