聚类之层次聚类

Hierarchical Clustering

图0  层次聚类用于生物基因统计(R绘制出的Heatmap图)

       层次聚类(HC)有两种方法: Agglomorative and Divisive。Agglomerative(自底向上)Methods,通常叫做“bottom-up” methods,初始化时每一个样本独自归为一类,然后按照不同的规则进行组合,最后形成一个聚类树;Divisive(自顶向下)Methods,通常叫做“top-down” methods,初始化时所有样本全部归为一类,然后按照不同的规则进行拆分,最后形成一个聚类树。目前较常用的是Agglomerative方法,在此主要分享Agglomerative的内容。

Agglomerative  Method(bottom-up)

         有\(N\)个待聚类样本, Agglomerative方法的基本步骤如下:

  1.  将每个样本独自归为一类, 共得到\(N\)类, 每类仅包含一个对象。
    Input:\(\Gamma = \{ x_i,i=1,2,...,n \},n=N\)即为聚类个数。
  2. 计算每两个类之间的距离\(D=(d_{ij})\),则类与类之间的距离就是它们所包含对象之间的距离\(d_{ij}=d(x_i,x_j),i,j=1,2,...,n\);
  3. 找到各个类之间相似度最大(距离最小)的两个类\(I和J\)并合并成一新类\(IJ\);
  4. 重新计算新类\(IJ\)与所有旧类\(K \neq IJ\)之间的距离\(d_{IJ,K}\),此时每类包含不止一个样本,则在衡量类与类之间的距离时产生了一系列不同的规则;
  5. 重复第2步和第3步, 直到最后合并成一个类为止(此类包含了\(N\)个对象)。

         1~4就是层次聚类算法的步骤,那么问题就来了!此时我们最少需要问自己两个问题!

 

        问题一:常用的距离的计算方法有哪些?

        在机器学习领域,做分类时常常需要估算不同样本之间的相似性度量(Similarity or Proximity),这时通常采用的方法就是计算样本间的“距离”(Distance)。一般根据样本的不同需要选择不同的"相似度衡量方法"。Matlab中的距离函数 D = pdist(X, DISTANCE)提供的距离计算方法有:欧氏距离(Euclidean)、标准化欧氏距离( Standardized Euclidean)、曼哈顿距离(Manhattan/City Block)、切比雪夫距离(Chebychev)、闵可夫斯基距离(Minkowski)、马氏距离(Mahalanobis)、夹角余弦(Cosine)、汉明距离(Hamming)、杰卡德距离 & 杰卡德相似系数(Jaccard coefficient)、相关距离(Correlation)、信息熵(Information Entropy)等。另外MATLAB还支持自己定义距离函数,定义距离函数需要满足一下四个准则。

(1)、\(d(x_i,x_j)\ge 0\)

(2)、\(d(x_i,x_i) = 0\)

(3)、\(d(x_j,x_i) = d(x_i,x_j)\)

(4)、\(d(x_i,x_j) \le d(x_i,x_k) + d(x_k,x_j)\)

通常在做分类数据时常用的也就欧氏距离和曼哈顿距离及马氏距离,有人对距离做了详细的介绍,本人仅分享其中几种。

详见:1、http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html

          2、http://www.cnblogs.com/ronny/p/4080442.html

 1、欧氏距离(Euclidean Distance) 

直角坐标系中

(1)、两点间的距离
 两个\(n\)维向量\(a(x_1,x_2,…,x_n)\)与 \(b(y_1,y_2,…,y_n)\)

 二维距离:\(d = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}\)
 三维距离:\(d = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + (x_3 - y_3)^2}\)

  N维距离:\(d = \sqrt{\sum_{i=1}^N(x_i - y_i)^2}=\sqrt{(X-Y)(X-Y)^T}\)

(2)、 范数

    设在\(\mathbb{R}^m\)空間有两点,\(X = (x_1,x_2,...,x_m)\),\(Y = (y_1,y_2,...,y_m)\),不同的范数都是一种距离:

 1-阶范数   = \(\sum \left| x_i - y_i \right|\)
 2-阶范数   = \(\left( \sum \left| x_i - y_i \right|^2 \right)^\frac{1}{2}\)
''n''-阶范数 = \(\left( \sum \left| x_i - y_i \right|^n \right)^\frac{1}{n}\)

      欧式距离有一个缺陷就是:当样本的各维度不是一个"量纲"时,按照公式计算出来的距离将意义不大。本人通常的做法是首先将数据进行"标准化"也叫"归一化",然后再用欧氏距离。

 2、曼哈顿距离(Manhattan/City Block Distance)

      站在帝国大厦上可以对整个曼哈顿一览无余,你绝对会很佩服这个区的建设——几乎就是一个棋盘,而每个Block就是一个棋格!曼哈顿距离又叫出租车几何,是由十九世纪的赫尔曼·闵可夫斯基所创词汇 ,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即

(1)、二维平面两点\(a(x_1,x_2)\)与\(b(y_1,y_2)\)间的曼哈顿距离

\(d(a,b)=\left|x_1- y_1\right| + \left|x_2- y_2\right|\)

(2)、\(n\)维平面两点\(a(x_1,x_2,...,x_n)\)与\(b(y_1,y_2,...y_n)\)间的曼哈顿距离

\(d(a,b)=\sum_{i=1}^n \left|x_1- y_1\right|\)

      对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离因此曼哈顿距离又称为出租车距离,曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。曼哈顿距离示意图在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,原因是浮点运算很昂贵,很慢而且有误差,如果直接使用AB的欧氏距离,则必须要进行浮点运算,如果使用AC和CB,则只要计算加减法即可,这就大大提高了运算速度,而且不管累计运算多少次,都不会有误差。

3、马氏距离(Mahalanobis Distance)

      马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。
对于一个均值为\(\mu = ( \mu_1, \mu_2, \mu_3, \dots , \mu_p )^T\),协方差矩阵为\(\Sigma\)的多变量向量\(x = ( x_1, x_2, x_3, \dots, x_p )^T\),其马氏距离为

\(D_M(x) = \sqrt{(x - \mu)^T \Sigma^{-1} (x-\mu)}\)

马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为\(\Sigma\)的随机变量\( \vec{x}\)与\(\vec{y}\)的差异程度:

\(d(\vec{x},\vec{y})=\sqrt{(\vec{x}-\vec{y})^T\Sigma^{-1} (\vec{x}-\vec{y})}\)

如果协方差矩阵为单位矩阵,马氏距离就简化为欧氏距离;如果协方差矩阵为对角阵,其也可称为''正规化的欧氏距离''。

\(d(\vec{x},\vec{y})=\sqrt{\sum_{i=1}^p {(x_i - y_i)^2 \over \sigma_i^2}}\)

其中\(\sigma_i\)是\(x_i\)的标准差。

 马氏优缺点:

1)马氏距离的计算是建立在总体样本的基础上的,这一点可以从上述协方差矩阵的解释中可以得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
2)在计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧氏距离计算即可。
3)还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如三个样本点(3,4),(5,6)和(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线。这种情况下,也采用欧氏距离计算。
4)在实际应用中“总体样本数大于样本的维数”这个条件是很容易满足的,而所有样本点出现3)中所描述的情况是很少出现的,所以在绝大多数情况下,马氏距离是可以顺利计算的,但是马氏距离的计算是不稳定的,不稳定的来源是协方差矩阵,这也是马氏距离与欧氏距离的最大差异之处。
优点:它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。
缺点:它的缺点是夸大了变化微小的变量的作用。
 

        问题二:步骤3中相似度的衡量方式有哪些(即当两类中不止有一个样本时,怎么计算两类的距离)?

         按相似度的计算方法不同,可以将聚类分为一下几类: Single-Linkage、Complete-Linkage、 Average-Linkage 、Ward′s method、Centroid-Linkage、Median-Linkage等聚类方法,下面仅分享常用的方法。

例1:有八个样本如下

\(x_1=(1,3)^T,x_2=(2,4)^T,x_3=(1,5)^T,x_4=(5,5)^T\)

\(x_5=(5,7)^T,x_6=(4,9)^T,x_7=(2,8)^T,x_8=(3,10)^T\)

散点图为:

散点图
图1 八个样本的散点图

         使用欧式距离(Euclidean distance),计算出每两点之间的距离并用\((8\times8)\)上三角形矩阵表示如下表\(D^{(0)}\)所示。

\(\begin{array}{|c|c|c|} \hline &1&2&3&4&5&6&7&8 \\ \hline  1&0&1.414&2.000&4.472&5.657&6.708&5.099&7.280 \\ \hline 2& &0&1.414&3.162&4.243&5.385&4.000&6.083\\  \hline 3& & &0&4.000&4.472&5.000&3.162&5.385\\ \hline 4& & & &0&2.000&4.123&4.243&5.385\\ \hline 5& & & & &0&2.236&3.162&3.606\\ \hline 6& & & & & &0&2.236&1.414\\ \hline 7& & & & & & &0&2.236\\ \hline 8& & & & & & & &0 \\\hline\end{array}\)

1、Single Linkage Clustering Method

  • Single Linkage:又叫做 nearest-neighbor ,就是取两个集合中距离最近的两个点的距离作为这两个集合的距离,即\(d_{IJ,K}=min\{d_{I,K},d_{J,K}\}\)。此方法容易造成一种叫做 Chaining 的效果,两个 cluster 明明从“大局”上离得比较远,但是由于其中个别的点距离比较近就被合并了,并且这样合并之后 Chaining 效应会进一步扩大,最后会得到比较松散的 cluster 。

        在矩阵\(D^{(0)}\)中\(d_{12}=d_{23}=d_{68}=1.414\),我们决定将\(x_2\)和\(x_3\)聚成一类"23",下一步计算新的类"23"与其余各类之间的距离\(d_{23,K}=min\{d_{2,K},d_{3,K}\},K=1,4,5,6,7,8。\)并用下述\((7\times7)\)上三角形矩阵表示如下表\(D^{(1)}\)所示。

\(\begin{array}{|c|c|c|} \hline &1&23&4&5&6&7&8 \\ \hline  1&0&1.414&4.472&5.657&6.708&5.099&7.280 \\ \hline 23& &0&3.162&4.243&5.000&3.162&5.385\\ \hline 4& &  &0&2.000&4.123&4.243&5.385\\ \hline 5& & & &0&2.236&3.162&3.606\\ \hline 6& & & & &0&2.236&1.414\\ \hline 7& & & & & &0&2.236\\ \hline 8& & & & & & &0 \\\hline\end{array}\)

         在矩阵\(D^{(1)}\)中\(d_{1,23}=d_{68}=1.414\),我们决定将\(x_1\)和"23"聚成一类"123",下一步计算新的类"123"与其余各类之间的距离\(d_{123,K}=min\{d_{1,K},d_{23,K}\},K=4,5,6,7,8。\)并用下述\((6\times6)\)上三角形矩阵表示如下表\(D^{(2)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&4&5&6&7&8 \\ \hline 123&0&3.162&4.243&5.000&3.162&5.385\\ \hline 4& &0&2.000&4.123&4.243&5.385\\ \hline 5& & &0&2.236&3.162&3.606\\ \hline 6& & & &0&2.236&1.414\\ \hline 7& & & & &0&2.236\\ \hline 8& & & & & &0 \\\hline\end{array}\)

         在矩阵\(D^{(2)}\)中\(d_{68}=1.414\),我们决定将\(x_6\)和\(x_8\)聚成一类"68",下一步计算新的类"68"与其余各类之间的距离\(d_{68,K}=min\{d_{6,K},d_{8,K}\},K=123,4,5,7。\)并用下述\((5\times5)\)上三角形矩阵表示如下表\(D^{(3)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&4&5&68&7 \\ \hline 123&0&3.162&4.243&5.000&3.162 \\ \hline 4& &0&2.000&4.123&4.243\\ \hline 5& & &0&2.236&3.162 \\ \hline 68& & & &0&2.236\\ \hline 7& & & & &0\\\hline\end{array}\)

         在矩阵\(D^{(3)}\)中\(d_{45}=2.000\),我们决定将\(x_4\)和\(x_5\)聚成一类"45",下一步计算新的类"45"与其余各类之间的距离\(d_{45,K}=min\{d_{4,K},d_{5,K}\},K=123,68,7。\)并用下述\((4\times 4)\)上三角形矩阵表示如下表\(D^{(4)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&68&7 \\ \hline 123&0&3.162&5.000&3.162 \\ \hline 45& &0&2.236&3.162 \\ \hline 68& & &0&2.236\\ \hline 7& & & &0\\\hline\end{array}\)

         在矩阵\(D^{(4)}\)中\(d_{45,68}=d_{68,7}=2.236\),我们决定将"68"和\(x_7\)聚成一类"678",下一步计算新的类"678"与其余各类之间的距离\(d_{678,K}=min\{d_{68,K},d_{7,K}\},K=123,45。\)并用下述\((3\times 3)\)上三角形矩阵表示如下表\(D^{(5)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&678 \\ \hline 123&0&3.162&3.162 \\ \hline 45& &0&2.236 \\ \hline 678& & &0\\\hline\end{array}\)

        在矩阵\(D^{(5)}\)中\(d_{45,678}=2.236\),我们决定将"45"和"678"聚成一类"45678",下一步计算新的类"45678"与其余各类之间的距离\(d_{45678,K}=min\{d_{45,K},d_{678,K}\},K=123。\)并用下述\((2\times 2)\)上三角形矩阵表示如下表\(D^{(6)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45678 \\ \hline 123&0&3.162 \\\hline 45678& &0\\\hline\end{array}\)

绘制出聚类树为:

1 %MATLAB相关Code
2 data=[1 3;2 4;1 5;5 5;5 7;4 9;2 8;3 10];
3 %V=pdist(data,'euclidean'); %用欧式距离得到一个数据中每两个样本之间的距离向量V
4 %D_0=squareform(V); %将距离向量V组合为距离对称矩阵
5 D=linkage(data,'single','euclidean'); %产生层次聚类树
6 dendrogram(D,'Orientation', 'top'); %绘出层次聚类树
1 #R相关Code
2 data <- matrix(c(1,2,1,5,5,4,2,3,3,4,5,5,7,9,8,10), 8,2)
3 hclust(dist(data), "single")->a
4 plot(a)
图2    Single Linkage方法得到的聚类树

2、Complete Linkage Clustering Method

  • Complete Linkage:又叫做 furthest-neighbor ,这个则完全是 Single Linkage 的反面极端,取两个集合中距离最远的两个点的距离作为两个集合的距离,即\(d_{IJ,K}=max\{d_{I,K},d_{J,K}\}\)。其效果也是刚好相反的,限制非常大,两个 cluster 即使已经很接近了,但是只要有不配合的点存在,就顽固到底,老死不相合并,也是不太好的办法。

         在矩阵\(D^{(0)}\)中\(d_{12}=d_{23}=d_{68}=1.414\),我们决定将\(x_2\)和\(x_3\)聚成一类"23",下一步计算新的类"23"与其余各类之间的距离\(d_{23,K}=max\{d_{2,K},d_{3,K}\},K=1,4,5,6,7,8。\)并用下述\((7\times7)\)上三角形矩阵表示如下表\(D^{(7)}\)所示。

\(\begin{array}{|c|c|c|} \hline &1&23&4&5&6&7&8 \\ \hline  1&0&2.000&4.472&5.657&6.708&5.099&7.280 \\ \hline 23& &0&4.000&4.472&5.358&4.000&6.083\\ \hline 4& &  &0&2.000&4.123&4.243&5.385\\ \hline 5& & & &0&2.236&3.162&3.606\\ \hline 6& & & & &0&2.236&1.414\\ \hline 7& & & & & &0&2.236\\ \hline 8& & & & & & &0 \\\hline\end{array}\)

         在矩阵\(D^{(7)}\)中\(d_{68}=1.414\),我们决定将\(x_6\)和\(x_8\)聚成一类"68",下一步计算新的类"68"与其余各类之间的距离\(d_{68,K}=max\{d_{6,K},d_{8,K}\},K=1,23,4,5,7。\)并用下述\((6\times6)\)上三角形矩阵表示如下表\(D^{(8)}\)所示。

\(\begin{array}{|c|c|c|} \hline &1&23&4&5&68&7 \\ \hline  1&0&2.000&4.472&5.657&7.280&5.099\\ \hline 23& &0&4.000&4.472&6.083&4.000\\ \hline 4& &  &0&2.000&5.385&4.243\\ \hline 5& & & &0&3.606&3.162\\ \hline 68& & & & &0&2.236\\ \hline 7& & & & & &0\\ \hline \end{array}\)

         在矩阵\(D^{(8)}\)中最小距离\(d_{1,23}=d_{45}=2.000\),我们决定将"23"和\(x_1\)聚成一类"123",下一步计算新的类"123"与其余各类之间的距离\(d_{123,K}=max\{d_{1,K},d_{23,K}\},K=4,5,68,7。\)并用下述\((5\times5)\)上三角形矩阵表示如下表\(D^{(9)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&4&5&68&7 \\ \hline  123&0&4.472&5.657&7.280&5.099\\\hline 4& &0&2.000&5.385&4.243\\ \hline 5& & &0&3.606&3.162\\ \hline 68& & & &0&2.236\\ \hline 7& & & & &0\\ \hline \end{array}\)

        在矩阵\(D^{(9)}\)中最小距离\(d_{45}=2.000\),我们决定将\(x_4\)和\(x_5\)聚成一类"45",下一步计算新的类"45"与其余各类之间的距离\(d_{45,K}=max\{d_{4,K},d_{5,K}\},K=123,68,7。\)并用下述\((4\times4)\)上三角形矩阵表示如下表\(D^{(10)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&68&7 \\ \hline  123&0&5.657&7.280&5.099\\\hline 45& &0&5.385&4.243\\ \hline 68& & &0&2.236\\ \hline 7& & & &0\\ \hline \end{array}\)

        在矩阵\(D^{(10)}\)中最小距离\(d_{68,7}=2.236\),我们决定将"68"和\(x_7\)聚成一类"678",下一步计算新的类"678"与其余各类之间的距离\(d_{678,K}=max\{d_{68,K},d_{7,K}\},K=123,45。\)并用下述\((3times3)\)上三角形矩阵表示如下表\(D^{(11)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&678 \\ \hline  123&0&5.657&7.280\\\hline 45& &0&5.385\\ \hline 678& & &0\\  \hline \end{array}\)

         在矩阵\(D^{(11)}\)中最小距离\(d_{45,678}=5.385\),我们决定将"45"和"678"聚成"45678",下一步计算新的类"45678"与其余各类之间的距离\(d_{45678,K}=max\{d_{45,K},d_{678,K}\},K=123。\)并用下述\((2\times2)\)上三角形矩阵表示如下表\(D^{(12)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45678 \\ \hline  123&0&7.280\\ \hline 45678& &0\\  \hline \end{array}\)

绘制出聚类树为:

cluster_complete
图3    Complete Linkage方法得到的聚类树

3、(Group) Average Linkage Clustering Method:

  • Average Linkage:又称为UPGMA(Unweighted Pair-Group Method using the Average approach)。这种方法看起来相对有道理一些,也就是把两个集合中的点两两的距离全部放在一起求一个平均值,相对也能得到合适一点的结果。,即\(d_{IJ,K}=\sum_{i\in I,J}\sum_{k\in K}d_{ik}/(N_{IJ}N_K)\)。

       在矩阵\(D^{(0)}\)中最小距离\(d_{min}=d_{12}=d_{23}=d_{68}=1.414\),我们决定将\(x_1\)和\(x_2\)聚成一类 "12",下一步计算新的类 "12" 与其余各类之间的距离\(d_{12,K}=(d_{1,K}+d_{2,K})/2,K=3,4,5,6,7,8。\)例如,\(d_{12,3}=(d_{1,3}+d_{2,3})/2=(\sqrt{4}+\sqrt{2})/2=1.707\)并用下述\((7\times7)\)上三角形矩阵表示如下表\(D^{(13)}\)所示。

\(\begin{array}{|c|c|c|} \hline &12&3&4&5&6&7&8 \\ \hline  12&0&1.707&3.817&4.950&6.047&4.550&6.682\\ \hline 3& &0&4.000&4.472&5.000&3.162&5.385\\ \hline 4& &  &0&2.000&4.123&4.243&5.385\\ \hline 5& & & &0&2.236&3.162&3.606\\ \hline 6& & & & &0&2.236&1.414\\ \hline 7& & & & & &0&2.236\\ \hline 8& & & & & & &0 \\\hline\end{array}\)

      在矩阵\(D^{(13)}\)中最小距离\(d_{min}=d_{68}=1.414\),我们决定将\(x_6\)和\(x_8\)聚成一类 "68",下一步计算新的类 "68" 与其余各类之间的距离\(d_{68,12}=(d_{1,6}+d_{2,6}+d_{1,8}+d_{2,8})/4=6.364\),
\(d_{68,K}=(d_{6,K}+d_{8,K})/2,K=3,4,5,7\) 。并用下述\((6\times6)\)上三角形矩阵表示如下表\(D^{(14)}\)所示。

\(\begin{array}{|c|c|c|} \hline &12&3&4&5&68&7 \\ \hline  12&0&1.707&3.817&4.950&6.364&4.550 \\ \hline 3& &0&4.000&4.472&5.193&3.162\\ \hline 4& &  &0&2.000&4.754&4.243\\ \hline 5& & & &0&2.921&3.162\\ \hline 68& & & & &0&2.236\\ \hline 7& & & & & &0\\\hline\end{array}\)

       在矩阵\(D^{(14)}\)中最小距离\(d_{min}=d_{12,3}=1.707\),我们决定将 "12" 和\(x_3\)聚成一类 "123",下一步计算新的类 "123" 与其余各类之间的距离\(d_{123,68}=(d_{1,6}+d_{2,6}+d_{3,6}+d_{1,8}+d_{2,8}+d_{3,8})/6=5.974,\)

\(d_{123,K}=(d_{1,K}+d_{2,K}+d_{3,K})/3,K=4,5,7。\)并用下述\((5\times5)\)上三角形矩阵表示如下表\(D^{(15)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&4&5&68&7 \\ \hline  123&0&3.878&4.791&5.974&4.087\\ \hline 4& &0&2.000&4.754&4.243\\ \hline 5& & &0&2.921&3.162\\ \hline 68& & & &0&2.236\\ \hline 7& & & &  &0\\\hline\end{array}\)

       在矩阵\(D^{(15)}\)中最小距离\(d_{min}=d_{4,5}=2.000\),我们决定将 \(x_4\) 和\(x_5\)聚成一类 "45",下一步计算新的类 "45" 与其余各类之间的距离\(d_{45,123}=(d_{4,1}+d_{4,2}+d_{4,3}+d_{5,1}+d_{5,2}+d_{5,3})/6=4.334,\)

\(d_{45,68}=(d_{4,6}+d_{4,8}+d_{5,6}+d_{5,8})/4=3.837,\)

\(d_{45,7}=(d_{4,7}+d_{5,7})/2=3.702。\)并用下述\((4\times4)\)上三角形矩阵表示如下表\(D^{(16)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&68&7 \\ \hline  123&0&4.334&5.974&4.087\\ \hline 45& &0&3.837&3.702\\ \hline 68& & &0&2.236\\ \hline 7& & &  &0\\\hline\end{array}\)

       在矩阵\(D^{(16)}\)中最小距离\(d_{min}=d_{68,7}=2.236\),我们决定将 \(x_7\) 和 "68" 聚成一类 "678",下一步计算新的类 "678" 与其余各类之间的距离\(d_{678,123}=(d_{6,1}+d_{6,2}+d_{6,3}+d_{7,1}+d_{7,2}+d_{7,3}+d_{8,1}+d_{8,2}+d_{8,3})/9=5.345,\)

\(d_{678,45}=(d_{6,4}+d_{6,5}+d_{7,4}+d_{7,5}+d_{8,4}+d_{8,5})/6=3.792。\)并用下述\((3\times3)\)上三角形矩阵表示如下表\(D^{(17)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45&678\\ \hline  123&0&4.334&5.345\\ \hline 45& &0&3.792\\ \hline 678& & &0\\\hline\end{array}\)

       在矩阵\(D^{(17)}\)中最小距离\(d_{min}=d_{45,678}=3.792\),我们决定将  "45" 和 "678" 聚成一类 "45678",下一步计算新的类 "45678" 与其余各类之间的距离\(d_{45678,123}=4.941。\)并用下述\((2\times2)\)上三角形矩阵表示如下表\(D^{(18)}\)所示。

\(\begin{array}{|c|c|c|} \hline &123&45678\\ \hline  123&0&4.941\\ \hline 45678& &0\\\hline\end{array}\)

绘制出聚类树为:

cluster_average
图4     Average Linkage方法得到的聚类树

4、Ward's Minimum Variance Clustering Method

例2:有5个样本如下

\(x_1=(10,5)^T,x_2=(20,20)^T,x_3=(30,10)^T,x_4=(30,15)^T,x_5=(5,10)^T\)

         和其他聚类方法一样,初始时将每个样本独自归为一类, 共得到\(N\)类, 每类仅包含一个对象,结束时将包含所有的样本。

        第一步:初始化,每一个样本归为一类,则五个样本可归为五类。

令:

\(\Sigma_{(1,2,3,4,5)} =\underbrace{(10-10)^2+(5-5)^2}_{Cluster 1}+\underbrace{(20-20)^2+(20-20)^2}_{Cluster 2}+\)

\(\quad \underbrace{(30-30)^2+(10-10)^2}_{Cluster 3}+\underbrace{(30-30)^2+(15-15)^2}_{Cluster 4}+\underbrace{(5-5)^2+(10-10)^2}_{Cluster 5}\)

       第二步:试图将其中两类合为一类,则共有\(\mathrm{C}^2_5=10\)种组合,并计算聚为一类的两个样本到其中心点的距离(此处采用欧式距离),然后求距离和,距离和最小的即为本次可行的聚类组合。

例如,当计算\(\Sigma_{((1,2),3,4,5)}\)时应首先计算:\(\frac{x_{1,1}+x_{2,1}}{2}=\frac{10+20}{2}=15\)和\(\frac{x_{1,2}+x_{2,2}}{2}=\frac{5+20}{2}=12.5\)

\(\Sigma_{((1,2),3,4,5)} =\underbrace{(10-15)^2+(5-12.5)^2+(20-15)^2+(20-12.5)^2}_{Cluster 12}+\)

\(\quad \underbrace{(30-30)^2+(10-10)^2}_{Cluster 3}+\underbrace{(30-30)^2+(15-15)^2}_{Cluster 4}+\underbrace{(5-5)^2+(10-10)^2}_{Cluster 5}\)

\(\quad =162.5\)

则10中聚类组合如下表:

\(\begin{array}{|c|c|c|} \hline \Sigma & 距离和\\ \hline \Sigma_{((1,2),3,4,5)} &162.6\\ \hline \Sigma_{((1,3),2,4,5)} &212.5 \\ \hline \Sigma_{((1,4),2,3,5)} &250 \\ \hline \Sigma_{((1,5),2,3,4)} &25 \\ \hline \Sigma_{((2,3),1,4,5)} &100 \\ \hline \Sigma_{((2,4),1,3,5)} &62.5 \\ \hline \Sigma_{((2,5),1,3,4)} &162.5 \\ \hline \Sigma_{((3,4),1,2,5)} & \color{Red} \star 12.5   \color{Red} \star  \\ \hline \Sigma_{((3,5),1,2,4)} &312.5 \\ \hline \Sigma_{((4,5),1,2,3)} &325.0\\\hline\end{array}\)

由上表可知

\(\Sigma_{min}=\Sigma_{((3,4),1,2,5)}=12.5 \)

则此步可得出可行聚类组合为:(3,4),1,2,5,即\(x_3,x_4\)作为一类,\(x_1,x_2,x_5\)各为一类。

 第三步:在上一步基础上,把34作为一类,试图将其中两类合为一类,则共有\(\mathrm{C}^2_4=6\)种组合。

例如,当计算\(\Sigma_{((1,34),2,5)}\)时应首先计算:\(\frac{x_{1,1}+x_{3,1}+x_{4,1}}{3}=\frac{10+30+30}{3}=23.3\)和\(\frac{x_{1,2}+x_{3,2}+x_{4,2}}{3}=\frac{5+10+15}{3}=10\)

\(\Sigma_{((1,34),2,5)} =\underbrace{(20-20)^2+(20-20)^2}_{Cluster 2}+\underbrace{(5-5)^2+(10-10)^2}_{Cluster 5}\)

\(\quad \underbrace{(10-23.3)^2+(5-10)^2+(30-23.3)^2+(10-10)^2+(30-23.3)^2+(15-10)^2}_{Cluster 134}\)

\(\quad =316.7\)

则6种聚类组合如下表:

\(\begin{array}{|c|c|c|} \hline \Sigma & 距离和\\ \hline \Sigma_{((34),(1,2),5)} &170.0\\ \hline \Sigma_{((34),(1,5),2)} & \color{Red} \star 37.5 \color{Red} \star\\ \hline \Sigma_{((34),(2,5),1)} &175 \\ \hline \Sigma_{((1,34),2,5)} & 316.7\\ \hline \Sigma_{((2,34),1,5)}  &116.7 \\ \hline \Sigma_{((34,5),1,2)}  &433.3 \\\hline\end{array}\)

由上表可知

\(\Sigma_{min}=\Sigma_{((3,4),(1,5),2)}=37.5 \)

则此步可得出可行聚类组合为:(3,4),(1,5),2,即\(x_3,x_4\)作为一类,\(x_1,x_5\)作为一类,\(x_2\)为一类。

第四步:在上一步基础上,得到三个新类34,15,2试图将其中两类合为一类,则共有\(\mathrm{C}^2_3=3\)种组合。

同上可以得到下表:

\(\begin{array}{|c|c|c|} \hline \Sigma & 距离和\\ \hline \Sigma_{((2,34),(15))} & \color{Red} \star 141.7 \color{Red} \star \\ \hline \Sigma_{((2,15),(34))} &  245.9 \\ \hline \Sigma_{((34,15),2)} &568.8 \\\hline\end{array}\)

由上表可知

\(\Sigma_{min}=\Sigma_{((2,34),(15))}=141.7 \)

则此步可得出可行聚类组合为:(234),(15),即\(x_2,x_3,x_4\)作为一类,\(x_1,x_5\)作为一类。

第五步:在上一步基础上,得到两个新类234,15试图将其中两类合为一类,则共有\(\mathrm{C}^2_2=1\)种组合。

同上可以得到下表:

\(\begin{array}{|c|c|c|} \hline \Sigma & 距离和\\ \hline \Sigma_{((15,234))} & \color{Red} \star 650 \color{Red} \star \\\hline\end{array}\)

则经过以上几步,最后将所有样本聚为一类。

绘制出聚类树为:

未命名
图5 Ward方法得到的聚类树

 

5、Lance-Williams Algorithm

                                        

 

图6 将其中两类合为一类并删除原类

  • \(D={D_{ij}:Distance\ between\ x_i\ and\ x_j\ for\ i,j=1,2,...,N}\)
  • For N iterations:
  •               \(i,j\)=arg \(\min\ D_{ij}\)...pair of closest clusters
  •               and cluster:(i+j),delete cluster \(i,j\).
  • For Single linkage:
  •              \(D_{k,i+j}=min\{D_{k,i},D_{k,j}\}=\frac{1}{2}(D_{k,i}+D_{k,j}-|D_{k,i}-D_{k,j}|)\)    
  • For Complete linkage:
  •              \(D_{k,i+j}=max\{D_{k,i},D_{k,j}\}=\frac{1}{2}(D_{k,i}+D_{k,j}+|D_{k,i}-D_{k,j}|)\)   
  • For each remaining cluster k

则:\(D_{k,ij}=\alpha_i D_{k,i}+\alpha_j D_{k,j} + \beta D_{i,j} + \gamma |D_{k,i}-D_{k,j}|\)

\(\begin{array}{|c|c|c|} \hline Method & \alpha_i & \alpha_j & \beta & \gamma \\ \hline Single\ Linkage & 0.5 & 0.5 & 0 & -0.5 \\ \hline Complete\ Linkage & 0.5 & 0.5 & 0 & 0.5 \\ \hline Group\ Average\ Linkage_{(UPGMA)} & \frac{n_i}{n_i + n_j} & \frac{n_j}{n_i + n_j}  & 0 & 0\\ \hline Weighted\ Group\ Average_{(WPGMA)} & 0.5 & 0.5  & 0 & 0 \\ \hline Centroid & \frac{n_i}{n_i + n_j} & \frac{n_j}{n_i + n_j}  & \frac{-n_in_j}{(n_i + n_j)^2}  & 0 \\ \hline Ward & \frac{n_i + n_k}{n_i + n_j + n_k} & \frac{n_j + n_k}{n_i + n_j + n_k}  & \frac{-n_k}{n_i + n_j + n_k}  & 0\\\hline\end{array}\)

 

附录:

1、什么是Chaining效果?

The Chaining is the following situation:"At the first cluster step,two objects merge to form one cluster,and throughout the ramaining clustering steps.This cluster grows progressively larger through the annexation of lone objects that have not yet clustered."Because SLINK embodies the nearest neighbor philosophy,it is most likely to cause Chaining.And because CLINK is the antithesis of SLINK,CLINK is the least likely to cause Chaining.Both Average and Ward's method should produce results between these extremes.其实就是像链条一样,把数据一个挨着一个串起来。

 

%Matlab Code
data=[1 6;4 4;11 2;20 5;25 18;9 25];
L={'1','2','3','4','5','6','7','8'};
plot(data(:,1),data(:,2),'r*');
set(gca, 'XLim',[0 30]);                   % X轴的数据显示范围
set(gca, 'YLim',[0 30]);                   % X轴的数据显示范围
for ii=1:6
text(data(ii,1)+0.5,data(ii,2)+0.5,L{ii});
end
xlabel('X','FontName','Times New Roman','FontSize',14);
ylabel('Y','FontName','Times New Roman','FontSize',14);
figure
D=linkage(data,'single','euclidean'); %产生层次聚类树
dendrogram(D,'Orientation', 'top'); %绘出层次聚类树
xlabel('Single Linkage Chaining','FontName','Times New Roman','FontSize',14);
ylabel('Euclidean Distance','FontName','Times New Roman','FontSize',14);

 图7  不同算法聚类结果


 

Bibliography:

1、Izenman, Alan J. Modern multivariate statistical techniques: regression, classification, and manifold learning. Springer, 2009.

2、Romesburg, Charles. Cluster analysis for researchers. Lulu. com, 2004.

3、Murtagh, Fionn, and Pierre Legendre. "Ward's Hierarchical Clustering Method: Clustering Criterion and Agglomerative Algorithm." arXiv preprint arXiv:1111.6285 (2011).

4、http://www.clustan.com/

5、机器学习中的相似性度量:http://blog.sina.com.cn/s/blog_5caa94a00100ya8t.html

 

 

转载于:https://www.cnblogs.com/YALEYAT/p/4086873.html

### 回答1: 聚合层次聚类(Agglomerative Clustering)是一种常见的聚类算法,其基本思想是将数据逐渐合并成更大的类别,直到达到预定的聚类数目为止。 具体来说,聚合层次聚类从每个数据点作为单独的类别开始,然后根据相似度指标,将最相似的两个类别合并成一个新的类别,直到所有数据点都属于同一个类别或者达到预设的聚类数目。 聚合层次聚类可以通过不同的相似度指标来度量不同类型的数据之间的相似性,常用的相似度指标包括欧几里得距离、曼哈顿距离、余弦相似度等。在合并过程中,可以采用不同的合并策略,如单链接、完全链接、平均链接等。 聚合层次聚类通常需要计算全部的数据点之间的相似度,因此计算复杂度较高。但它具有易于理解和可视化的优点,可以通过树状图表示聚类过程,帮助用户更好地理解聚类结果。 ### 回答2: 凝聚聚类是一种常见的聚类方法,也被称为自下而上聚类。该算法从一个初始状态开始,每次将最接近的数据点或群体合并在一起,不断地形成丰富的层次化结构,最终形成聚类。凝聚聚类的主要特点是可以在未知初始聚类数的情况下自动确定聚类数量。 凝聚聚类的工作原理很简单。首先,它计算每个样本之间的相似度或距离并将它们作为起点。然后,聚类一步步合并这些相邻点,直到所有点都被聚类成一组。 凝聚聚类通常有两种方法来评估点(或者样本)之间的距离: 1. 层次聚类 层次聚类的倾向是使得最小群组最大化或者最大群组最小化。层次聚类的步骤通常是计算每个点之间的距离,然后将最近的点成对合并在一起,这样就形成了一个群组。接下来,再将最相似的群组再次合并,直至最终只剩一个群组。 2. 相关聚类 相关聚类评估数据点之间的相似度。最常见的方法是基于距离度量作为相似性的函数。相关聚类层次聚类十分相似,不同之处在于在相关聚类中,每个群组都是基于它们之间的相似性。 凝聚聚类的主要优点是可以自动识别出稠密和疏散聚类,并且可以处理噪声和异常点,但是其计算和内存开销均比较大。在实际使用中,还需要根据具体情况选择合适的距离函数,以便得到最优的聚类结果。 ### 回答3: 聚合性聚类是一种基于相似性度量的无监督学习算法,也称为自下而上聚类。在聚合性聚类中,每个数据点被视为一个单独的簇,然后簇之间通过相似性度量来逐步合并,以形成完整的层次结构,直到所有簇合并成为一个单一的簇。 聚合性聚类算法通常包括以下步骤: 1. 初始化:将每个数据点视为一个单独的簇。 2. 相似性度量:对于每对簇,计算它们之间的相似性得分。 3. 合并:通过选择得分最高的簇对来合并簇,将它们合并成一个新的簇。 4. 重复上述步骤,直到所有簇都被合并为一个单独的簇。 在聚合性聚类的过程中,相似性度量是关键因素。常用的相似性度量包括欧几里德距离、曼哈顿距离和马氏距离等。根据不同的数据类型和应用场景,我们可以选择不同的相似性度量来进行聚类。 聚合性聚类的一个重要应用是图像分割。在这种情况下,数据点是像素,而相似性度量可以基于像素之间的亮度、颜色和纹理等特征进行计算。通过聚合性聚类,我们可以将图像分割成不同的区域,从而提取出有用的图像特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值