聚类分析是一种数据归约技术,旨在揭露一个数据集中观测值的子集。它可以把大量的观测值归约为若干类。最常用的两种聚类方法是层次聚类(hierarchical agglomeration clustering)和划分聚类(partitioning clustering)。在层次聚类中,每一个观测值自成一类,这些类每次两两合并,直到所有的类合并成一类为止。在划分聚类中,首先指定类的个数K,然后观测值被随机分成K类,再重新形成聚合的类。
一、聚类分析的一般步骤
二、计算距离
聚类分析的第一步都是度量样本单元间的距离、相异性或相似性。R软件中自带dist()函数能用来计算矩阵货数据框中所有行(观测值)之间的距离。合适是dist(x,method=?),这里的x表示输入数据,并且默认使用的方法为欧几里得距离。函数默认返回一个下三角矩阵,但是as.matrix()函数可使用标准括号符号得到距离。对于营养数据集的数据框来说,前四行的距离为:
> d <- dist(nutrient) > as.matrix(d)[1:4,1:4] BEEF BRAISED HAMBURGER BEEF ROAST BEEF STEAK BEEF BRAISED 0.00000 95.6400 80.93429 35.24202 HAMBURGER 95.64000 0.0000 176.49218 130.87784 BEEF ROAST 80.93429 176.4922 0.00000 45.76418 BEEF STEAK 35.24202 130.8778 45.76418 0.00000
需要注意的是,在营养数据集中,距离很大程度上有能量(energy)这个变量控制,这是因为该变量变化范围更大。缩放数据有利于均衡各变量的影响。
三、层次聚类
如前所述,在层次聚类中,起初每一个实例或观测值属于一类。聚类就是把每一次把两类聚成新的一类,直到所有的类聚成单个类为止,算法实现如下:
(1)定义每个观测值为一类
(2)计算每类和其他各类的距离
(3)把距离最短的两类合并成一类,这样类的个数就减少一个
(4)重复步骤(2)和(3),直到包含所有观测值的类合并成单个类为止
在层次聚类算法中,主要的区别是它们对类的定义不同(步骤2)。常用的五种聚类方法和其中两类之间的距离的定义如下:
(1)单联动。一个类中的点到另一个类中的点的最小距离。
(2)全联动。一个类中的点到另一个类中的点的最大距离。
(3)平均联动。一个类中的点和另一个类中的点的平均距离。
(4)质心。两类中质心(变量均值向量)之间的距离。对于单个观测值来说,质心就是变量的值。
(5)Ward法。两个类之间所有变量的方差分析的平方和
单联动聚类方法倾向于发现细长的、雪茄型的类。它也通常展示一种链式现象,即不相似的观测值分到一类中,因为它们和它们的中间值很相像。全联动聚类倾向于发现大致相等的直径紧凑类。它对异常值很敏感。
原文:http://www.cnblogs.com/yangk/p/6381123.html