层次聚类——linkage方法

      最近在使用层次聚类时,简单了解了一下合并类簇时所使用的几种linkage方法,在这里作一下简单的总结。


      1963年,Ward J H提出了使用离差平方(Error Sum of Square)和或者说是信息缺失量作为目标函数的思想来决定究竟应该怎么一步一步合并小类簇为一个大类簇,他在文献中指出,类簇合并后的离差平方和应当最小,即最好的目标函数就是使得类簇合并后的信息缺失最小。

但是,他没有提出具体的类簇合并计算公式

只是给出了离差平方和的公式:
ESS=i=1nx2i12(i=1nxi)2

(1)The first step in grouping is to select two of these n subsets                       which , when united , will reduce by one the number of subsets while producing the least impairment of the optimal value of the objective function .
(2)The n-1 resulting subsets then are examined to determine if a third member should be united with the first pair or another pairing made in order to secure the optional value of the objective function for n-2 groups.
(3)This procedure can be continued until all n members of original arraty are in one group.
(4)As each union is considered in turn, the value of the corresponding objective function is computed and hypothesized to be "equal to or better than" that of any preceding union.
(5)第一次合并需要计算n(n-1)/2次样本间的相似度,第二次合并需要计算(n-1)(n-2)/2次,以此类推;

      1967年,G. N. Lance, W. T. Williams在ward的基础上,于文献中提出了5中计算类簇合并的方法,分别为:

1.NearestNeifgbour
2.FurthestNeighbour
3.Centroid
4.Median
5.GroupAverage

      作者在文献中提出了一种组合策略(combinatorial),并提出使用以下线性实例假设上述策略:

dhk=αpdhp+αqdhq+βdpq+γ|dhpdhq|

      其中 Sk=SpSq ,即是类簇 k 为类簇 p q 合并后的新类簇。

(1)Nearest-Neighbour

      两个类簇的距离即是两个类簇中距离最近的两个样本,即
d(u,v)=min(dist(u[i],v[j]))
此时有:
αp=αq=12;β=0;γ=12

(2)Furthest-Neighbour

      两个类簇的距离即是两个类簇中距离最远的两个样本,即
d(u,v)=max(dist(u[i],v[j]))
。此时有:
αp=αq=12;β=0;γ=12

(3)Centroid-Squared Euclidean Distance

      两个类簇的距离即是两个类簇中心之间的距离,即
d(u,v)=||cucv||2

      其中 cu,cv 分别是类簇 u,v 的中心。

      假设类簇 Sk=SpSq p,q,k 的样本大小分别为 np,nq,nk 则有 np+nq=nk ,类簇 p 的中心为 xp ,类簇 q 的中心为 xq ,则有类簇 k 的中心为 (npxp+nqxq)/nk ,则类簇 k 与类簇 h 之间的距离为:

dhk=[xh(npxp+nqxq)/nk]2
=[np+nqnkxh(npxp+nqxq)/nk]2
=[npnk(xhxp)+nqnk(xhxq)]
=[npnk(xhxp)]2+[nqnk(xhxq)]2+2npnqn2k(xhxp)(xhxq)
=npnh(xhxp)[npnk(xhxp)+nqnk(xhxq)]+nqnh(xhxq)[npnk(xhxq)+nqnk(xhxp)]
=npnh(xhxp)[xhnpnkxpnqnkxq]+nqnh(xhxq)[xhnqnkxqnpnkxp]
=npnh(xhxp)[xhxp+nqnkxpnqnkxq]+nqnh(xhxq)[xhxq+npnkxqnpnkxp]
=npnh(xhxp)[xhxp+nqnk(xpxq)]+nqnh(xhxq)[xhxq+npnk(xqxp)]
=npnk(xhxp)2+npnk(xhxp)nqnk(xpxq)+nqnk(xhxq)2+nqnk(xhxq)npnk(xqxp)
=npnk(xhxp)2+npnk(xhxp)nqnk(xpxq)+nqnk(xhxq)2nqnk(xhxq)npnk(xpxq)
=npnk(xhxp)2+nqnk(xhxq)2+npnknqnk(xpxq)[(xhxp)(xhxq)]
=npnk(xhxp)2+nqnk(xhxq)2+npnknqnk(xpxq)(xqxp)
=npnk(xhxp)2+nqnk(xhxq)2npnknqnk(xpxq)2
=npnkdhp+nqnkdhqnpnknqnkdpq

      有上式可以看出:
αp=npnk;αq=nqnk;β=αpαq;γ=0

(4)Median

      假如类簇 p,q,k 分别为三角形的三条边,则 p q 组成的类簇 k 为最短边的中点,而类簇 k 与类簇 h 的距离为三角形的中心:
αp=αq=12;β=14;γ=0

(5)Group-Average

      两个簇内所有元素之间距离的均值假设两个单个元素之间的距离为 Spq
dhk=1nknkh,kShk
=npnk1nhnph,pShp+nqnk1nhnqh,qShq
=npnkdhq+nqnkdhq

      根据上式可得:
αp=npnk;αq=nqnk;β=γ=0


      1969年,Wishart D在上述基础上,结合信息增益的概念又提出了 wardsmethod ,即是现在的 linkage=ward 。该方法的基本思想是:
      首先,计算样本两两之间的距离,构成矩阵距离,此时每个样本均为一个类簇,那么每个样本构成的类簇的ESS即离差平方和均为0;
      然后,找出距离矩阵中最小的值并将其对应的两个样本合并为一个新类簇;
      在接下来的合并类簇中步骤中,依次计算类簇两两结合后ESS的增量(任何两个类簇合并后均会导致新类别的离差平方和较之之前的两个类簇有所增加),新的类簇合并原则是:选择ESS增加最小的那两个类簇进行合并,直到所有的样本合并为一个大类簇为止。
      假设数据属于 n×m 的二维矩阵:

The two clusters whose fusion results in the minimum increase in the error sum of squares are combined.
The first fusion clearly involves those two points which are closest.

      假设 Xijt 表示包含 kt 个样本的类簇 St 的第 j 样本的第 i 个变量的值, X^jt 表示 St 的第 j 个属性的均值,那么 St 的误差平方和为:

Et=i=1ktj=1m(XijtX^jt)2
Et=i=1ktj=1mX2ijtktU2t(1)

       U2t 表示 UU Ut=(X^1t,X^2t,...,X^mt) 表示均值向量
      根据以上表述,所有类簇的误差平方和的总和即是整个目标函数 E 的的值:

E=t=1TEt

      在有两个类簇 Sq Sp 合并后,即 Sk=SpSq ,目标函数 E 的增量为:
Ipq=EkEpEq

      通过公式(1),可得:
Ipq=i=1nkj=1mX2ijknkU2ki=1npj=1mX2ijp+npU2pi=1nqj=1mX2ijq+nqU2q

由于 nk=np+nq ,所以平方项 X2ij 的和相消,得:
Ipq=npU2p+nqU2qnkU2k(2)

但是:
n2kU2k=(npUp+nqUq)2
=n2pU2p+n2qU2q+2npnqUpUq
=n2pU2p+n2qU2q+npnq(U2p+U2q(UpUq)2)

化简后得:
U2k=npnkU2p+nqnkU2qnpnqn2k(UpUq)2(3)

结合公式(3),公式(2)可以变为:
Ipq=npnqnk(UpUq)2

由于 (UpUq)2=d2pq ,又可得:
Ipq=npnqnkd2pq(4)

ppq 获得最小值时,类簇 Sq Sp 才会合并。

Sq Sp 合并为 Sk 后, Sk 与其他的任一个类簇 Sh 的新合并会使得目标函数有一个增加:

Ihk=nhnknh+nkd2hk(5)

类簇 Sh Sk 中心之间的距离为:
d2hk=(UhUk)2

以与(3)相同的方式化简后得:
d2hk=npnkd2hp+nqnkd2hqnpnqn2kd2pq(6)

结合公式(5),公式(6)可以转变为:
Ihk=1nk+nh[(nh+np)Ihp+(nh+nq)IhqnhIpq](7)

由公式(4)得,当两个单个元素进行合并时有:

Ipq=12d2pq

如果记 Sp=SpSq ,则距离矩阵 D 的元素
d2hp=2Ihp;h=1,2,...,n;hp,q(8)

SpSq 合并为 Sp 之后变为一个新的元素,那么距离矩阵 D 中的第 q 列就成为多余的列。

将公式(7)和(8)结合,可以得到:

d2hp=2nk+nh[(nh+np)Ihp+(nh+nq)IhqnhIpq]

=1nk+nh[(nh+np)d2hp+(nh+nq)d2hqnhd2pq](9)

此时有:
αp=nh+npnh+nk;αq=nh+nqnh+nk;β=nhnh+nk;γ=0

      综上所述:以上6种均可由 dhk=αpdhp+αqdhq+βdpq+γ|dhpdhq| 改变不同的系数而得到。


参考文献:

  1. Wakd q H. Hpekakchpcal Gkouppng to Optpmpze an Obqectpve Functpon[q]. Publpcatpons of the Amekpcan Statpstpcal Assocpatpon, 1963, 58(301):236-244.

  2. G. N. Lance, W. T. Wpllpams. A Genekal Theoky of Classpfpcatoky Soktpng Stkategpes 1. Hpekakchpcal Systems[q]. Computek qouknal, 1967, 9(4):373.

  3. Wpshakt D. 256. Note: An Algokpthm fok Hpekakchpcal Classpfpcatpons[q]. Bpometkpcs, 1969, 25(1):165-170.

你可能感兴趣的:(数据挖掘,python)