聚类算法-层次,密度和谱聚类算法

1.首先来介绍下聚类的衡量指标:
 (1)有类别标记
   均一性: p = 1 k ∑ i = 1 k N ( C i = = K i ) N ( K i ) \mathrm{p}=\frac{1}{k} \sum_{i=1}^{k} \frac{N\left(C_{i}==K_{i}\right)}{N\left(K_{i}\right)} p=k1i=1kN(Ki)N(Ci==Ki),一个簇只包含一个类别的样本,则满足均一性。 K i K_i Ki是某个簇, C i C_i Ci是实际分类, N ( C i = = K i ) N(C_i==K_i) NCi==Ki表示一个簇分类正确的样本, N ( K i ) N(K_i) N(Ki)表示簇的样本总数,该公式含义是正确分类样本占簇的样本数,又可以称之为正确率。
   完整性: r = 1 k ∑ i = 1 k N ( C i = = K i ) N ( C i ) r=\frac{1}{k} \sum_{i=1}^{k} \frac{N\left(C_{i}==K_{i}\right)}{N\left(C_{i}\right)} r=k1i=1kN(Ci)N(Ci==Ki),同类别样本被归类到相同簇中,则满足完整性。每个聚簇中正确分类的样本数占类型的总样本数比例的和,又称为召回率。
   V-measure:均一性和完整性的加权平均,
v β = ( 1 + β 2 ) ⋅ p r β 2 ⋅ p + r v_{\beta}=\frac{\left(1+\beta^{2}\right) \cdot \mathrm{pr}}{\beta^{2} \cdot p+r} vβ=β2p+r(1+β2)pr
 (2)无类别标记
   ARI(兰德系数):数据集S共有N个元素,两个聚类结果分别是:
X = { X 1 , X 2 , ⋯ X r } Y = { Y 1 , Y 2 , ⋯ Y s } X=\left\{X_{1}, X_{2}, \cdots X_{r}\right\} \quad Y=\left\{Y_{1}, Y_{2}, \cdots Y_{s}\right\} X={X1,X2,Xr}Y={Y1,Y2,Ys}
C Y 1 Y 2 ⋯ Y s s u m X 1 n 11 n 12 ⋯ n 1 s a 1 X 2 n 21 n 22 ⋯ n 2 s a 2 ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ X r n r 1 n r 2 ⋯ n r s a r s u m b 1 b 2 ⋯ b s N \begin{array}{c|cccc|c} C & Y_{1} & Y_{2} & \cdots & Y_{s} & s u m \\ \hline X_{1} & n_{11} & n_{12} & \cdots & n_{1 s} & a_{1} \\ X_{2} & n_{21} & n_{22} & \cdots & n_{2 s} & a_{2} \\ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ X_{r} & n_{r 1} & n_{r 2} & \cdots & n_{r s} & a_{r} \\ \hline s u m & b_{1} & b_{2} & \cdots & b_{s} & N \end{array} CX1X2XrsumY1n11n21nr1b1Y2n12n22nr2b2Ysn1sn2snrsbssuma1a2arN
      X和Y的元素个数为: a = { a 1 , a 2 , ⋯ a r } b = { b 1 , b 2 , ⋯ b s } a=\left\{a_{1}, a_{2}, \cdots a_{r}\right\} \quad b=\left\{b_{1}, b_{2}, \cdots b_{s}\right\} a={a1,a2,ar}b={b1,b2,bs}
      记: n i j = ∣ X i ∩ Y i ∣ n_{i j}=\left|X_{i} \cap Y_{i} \right| nij=XiYi
       A R I = Index  − EIndex MaxIndex − EIndex = ∑ i , j C n i 2 − [ ( ∑ i C a i 2 ) ⋅ ( ∑ j C b i 2 ) ] / C n 2 1 2 [ ( ∑ i C a i 2 ) + ( ∑ j C b i 2 ) ] − [ ( ∑ i C a i 2 ) ⋅ ( ∑ j C b i 2 ) ] / C n 2 \begin{array}{l} \qquad A R I=\frac{\text {Index }-\text {EIndex}}{\text {MaxIndex}-\text {EIndex}}=\frac{\sum_{i, j} C_{n_{i}}^{2}-\left[\left(\sum_{i} C_{a_{i}}^{2}\right) \cdot\left(\sum_{j} C_{b_{i}}^{2}\right)\right] / C_{n}^{2}}{\frac{1}{2}\left[\left(\sum_{i} C_{a_{i}}^{2}\right)+\left(\sum_{j} C_{b_{i}}^{2}\right)\right]-\left[\left(\sum_{i} C_{a_{i}}^{2}\right) \cdot\left(\sum_{j} C_{b_{i}}^{2}\right)\right] / C_{n}^{2}} \end{array} ARI=MaxIndexEIndexIndex EIndex=21[(iCai2)+(jCbi2)][(iCai2)(jCbi2)]/Cn2i,jCni2[(iCai2)(jCbi2)]/Cn2
   轮廓系数:是对聚类结果的有效性的解释和验证,计算样本i到同簇其他样本的平均距离 a i a_i ai a i a_i ai越小,说明样本i越应该聚类到本簇,将 a i a_i ai称为样本i的簇内不相似度,簇C中所有样本的 a i a_i ai均值称为簇C的簇不相似度。计算样本i到所有其他某簇 C j C_j Cj的所有样本的平均距离 b i j b_{ij} bij,称为样本i和簇 C j C_j Cj的不相似度,定义为样本i的簇间不相似度 b i = min ⁡ { b i 1 , b i 2 , ⋯ ⋯ b i , K } b_{i}=\min \left\{b_{i 1}, b_{i 2}, \cdots \cdots b_{i, K}\right\} bi=min{bi1,bi2,bi,K}
    根据样本i的簇内不相似度和簇间不相似度,定义样本i的轮廓系数:
s ( i ) = b ( i ) − a ( i ) max ⁡ { a ( i ) , b ( i ) } s(i)=\frac{b(i)-a(i)}{\max \{a(i), b(i)\}} s(i)=max{a(i),b(i)}b(i)a(i)
s ( i ) = { 1 − a ( i ) b ( i ) , a ( i ) < b ( i ) 0 , a ( i ) = b ( i ) b ( i ) a ( i ) − 1 , a ( i ) > b ( i ) s(i)=\left\{\begin{array}{cc} 1-\frac{a(i)}{b(i)}, & a(i)<b(i) \\ 0, & a(i)=b(i) \\ \frac{b(i)}{a(i)}-1, & a(i)>b(i) \end{array}\right. s(i)=1b(i)a(i),0,a(i)b(i)1,a(i)<b(i)a(i)=b(i)a(i)>b(i)
     s i s_i si接近1,说明样本i聚类合理; s i s_i si接近-1,说明样本应该聚类到其他的簇;若 s i s_i si接近0,则说明样本i应该聚类到两个簇的边界上。
    所有样本 s i s_i si的均值称为聚类结果的轮廓系数,是该类是否合理的有效度量。
2.层次聚类:
   层次聚类对给定的数据集进行层次的分解,直到某种条件满足为止。
     凝聚的层次聚类(AGENS算法):
     一种自底而上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到某个终结条件被满足。
     分裂的层次聚类(DIANA算法):
     采用自顶向下的策略,它首先将所有簇位于一个簇中,然后逐渐细分为越来越小的簇 ,直到到达了某个终结条件。
在这里插入图片描述
   AGNES簇间距离的不同定义:
     最小距离:两个集合中最近的两个样本,容易形成链状结构。
     最大距离:两个集合中最远的两个样本,若存在异常值则不稳定;
     平均距离:两个集合中样本间两两距离的平均值,两个集合中样本间两两距离的平方和。
3.密度聚类:
   密度聚类方法的指导思想是,只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。这类算法能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感。但计算密度单元的计算复杂度大,需要建立空间索引来降低计算量。
   (1)DBSCAN算法:
     一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”的数据中发现任意形状的聚类。
     DBSCAN算法的若干概念
       对象的ε-邻域:给定对象在半径ε内的区域。
       核心对象:对于给定的数目m,如果一个对象的ε-邻域至少包含m个对象,则称该对象为核心对象。
       直接密度可达:给定一个对象集合D,如果p是在q的ε-邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。
       密度可达:如果存在一个对象链p1p2…pn,p1=q,pn=p,对pi∈D,(1≤i ≤n),pi+1是从pi关于ε和m直接密度可达的,则对象p是从对象q关于ε和m密度可达的。
       密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于ε和m密度可达的,那么对象p和q是关于ε和m密度相连的。
       簇:一个基于密度的簇是最大的密度相连对象的集合。
       噪声:不包含在任何簇中的对象称为噪声。
在这里插入图片描述
   DBSCAN算法流程:
       如果一个点p的ε-邻域包含多于m个对象,则创建一个p作为核心对象的新簇;
       寻找并合并核心对象直接密度可达的对象;
       没有新点可以更新簇时,算法结束。
   由DBSCAN算法可知:
       每个簇至少包含一个核心对象;
       非核心对象可以是簇的一部分,构成了簇的边缘(edge);
       包含过少对象的簇被认为是噪声。
   (2)密度最大值聚类:
       密度最大值聚类是一种简洁优美的聚类算法, 可以识别各种形状的类簇, 并且参数很容易确定。
       定义:局部密度 ρ i \rho \mathbf{i} ρi
ρ i = ∑ j χ ( d i j − d c ) , 其 中 , χ ( x ) = { 1 x < 0 0  otherwise  \rho_{i}=\sum_{j} \chi\left(d_{i j}-d_{c}\right), \quad 其中, \quad \chi(x)=\left\{\begin{array}{cc} 1 & x<0 \\ 0 & \text { otherwise } \end{array}\right. ρi=jχ(dijdc),,χ(x)={10x<0 otherwise 
       dc是一个截断距离, ρi即到对象i的距离小于dc的对象的个数。由于该算法只对ρi的相对值敏感, 所以对dc的选择是稳健的,一种推荐做法是选择dc,使得平均每个点的邻居数为所有点的1%-2%
       定义:高局部密度点距离δi
δ i = min ⁡ j : ρ j > ρ i ( d i j ) \delta_{i}=\min _{j: \rho_{j}>\rho_{i}}\left(d_{i j}\right) δi=j:ρj>ρimin(dij)
       在密度高于对象i的所有对象中,到对象i最近的距离,即高局部密度点距离。
       簇中心的识别:那些有着比较大的局部密度ρi和很大的高密距离δi的点被认为是簇的中心;高密距离δi较大但局部密度ρi较小的点是异常点;确定簇中心之后,其他点按照距离已知簇的中心最近进行分类,也可按照密度可达的方法进行分类。
       举例:
       左图是所有点在二维空间的分布, 右图是以ρ为横坐标, 以δ为纵坐标绘制的决策图。可以看到,1和10两个点的ρi和δi都比较大,作为簇的中心点。26、27、28三个点的δi也比较大,但是ρi较小,所以是异常点。
在这里插入图片描述
       边界和噪声的重认识:
       在聚类分析中,通常需要确定每个点划分给某个簇的可靠性:在该算法中,可以首先为每个簇定义一个边界区域(border region),亦即划分给该簇但是距离其他簇的点的距离小于dc的点的集合。然后为每个簇找到其边界区域的局部密度最大的点,令其局部密度为ρh。该簇中所有局部密度大于ρh的点被认为是簇核心的一部分(亦即将该点划分给该类簇的可靠性很大),其余的点被认为是该类簇的光晕(halo),亦即可以认为是噪声。
在这里插入图片描述
4.谱聚类:
   谱聚类是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的目的。方阵作为线性算子,它的所有特征值的全体统称方阵的谱,方阵的谱半径为最大的特征值,矩阵A的谱半径:( A T A A^TA ATA)的最大特征值。
   谱分析的整体过程:
     给定一组数据x1,x2,…xn,记任意两个点之间的相似度(―距离”的减函数)为sij=<xi,xj>,形成相似度图(similarity graph):G=(V,E) 。如果xi和xj之间的相似度sij大于一定的阈值,那么,两个点是连接的,权值记做sij。
     接下来,可以用相似度图来解决样本数据的聚类问题:找到图的一个划分,形成若干个组(Group),使得不同组之间有较低的权值,组内有较高的权值。
   若干概念:
     无向图G=(V,E)
     邻接矩阵 W = ( w i j ) i , j = 1 , … , n W=\left(w_{i j}\right)_{i, j=1, \ldots, n} W=(wij)i,j=1,,n
     顶点的度di 度矩阵D (对角阵)
d i = ∑ j = 1 n w i j d_{i}=\sum_{j=1}^{n} w_{i j} di=j=1nwij
     子图A的指示向量
1 A = ( f 1 , … , f n ) ′ ∈ R n f i = 1  if  v i ∈ A f i = 0  otherwise  \begin{array}{l} \mathbb{1}_{A}=\left(f_{1}, \ldots, f_{n}\right)^{\prime} \in \mathbb{R}^{n} \\ \qquad \begin{array}{l} f_{i}=1 \text { if } v_{i} \in A \\ f_{i}=0 \text { otherwise } \end{array} \end{array} 1A=(f1,,fn)Rnfi=1 if viAfi=0 otherwise 
     A和B是图G的不相交子图,则定义子图的连接权:
W ( A , B ) : = ∑ i ∈ A , j ∈ B w i j W(A, B):=\sum_{i \in A, j \in B} w_{i j} W(A,B):=iA,jBwij
   相似度图G的建立方法:
     全连接图:距离越大,相似度越小
     高斯相似度
s ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) s\left(x_{i}, x_{j}\right)=\exp \left(\frac{-\left\|x_{i}-x_{j}\right\|^{2}}{2 \sigma^{2}}\right) s(xi,xj)=exp(2σ2xixj2)
     ε近邻图
     k近邻图(k-nearest neighbor graph)
   拉普拉斯矩阵及其性质:拉普拉斯矩阵:L = D – W
f T L f = f T D f − f T W f = ∑ i = 1 n d i f i 2 − ∑ i , j = 1 n f i f j w i j = 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n f i f j w i j + ∑ j = 1 n d j f j 2 ) = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 \begin{aligned} &f^{T} L f=f^{T} D f-f^{T} W f=\sum_{i=1}^{n} d_{i} f_{i}^{2}-\sum_{i, j=1}^{n} f_{i} f_{j} w_{i j}\\ &=\frac{1}{2}\left(\sum_{i=1}^{n} d_{i} f_{i}^{2}-2 \sum_{i, j=1}^{n} f_{i} f_{j} w_{i j}+\sum_{j=1}^{n} d_{j} f_{j}^{2}\right)\\ &=\frac{1}{2} \sum_{i, j=1}^{n} w_{i j}\left(f_{i}-f_{j}\right)^{2} \end{aligned} fTLf=fTDffTWf=i=1ndifi2i,j=1nfifjwij=21(i=1ndifi22i,j=1nfifjwij+j=1ndjfj2)=21i,j=1nwij(fifj)2
     L是对称半正定矩阵,最小特征值是0,相应的特征向量是全1向量。
   (1)未正则拉普拉斯矩阵
     输入:n个点{pi},簇的数目k
     计算n×n的相似度矩阵W和度矩阵D;
     计算拉普拉斯矩阵L=D-W;
     计算L的前k个特征向量u1,u2,…,uk;
     将k个列向量u1,u2,…,uk组成矩阵U,U∈Rn×k;
     对于i=1,2,…,n,令yi∈Rk是U的第i行的向量;
     使用k-means算法将点(yi)i=1,2,…,n聚类成簇C1,C2,…Ck;
     输出簇A1,A2,…Ak,其中,Ai={j|yj∈Ci}
   (2)随机游走拉普拉斯矩阵
输入:n个点{pi},簇的数目k
     计算n×n的相似度矩阵W和度矩阵D;
     计算正则拉普拉斯矩阵Lrw=D-1(D-W);
     计算Lrw的前k个特征向量u1,u2,…,uk;
     将k个列向量u1,u2,…,uk组成矩阵U,U∈ Rn×k ;
     对于i=1,2,…,n,令yi∈Rk是U的第i行的向量;
     使用k-means算法将点(yi)i=1,2,…,n聚类成簇C1,C2,…Ck ;
     输出簇A1,A2,…Ak,其中,Ai={j|yj∈Ci}
   (3)对称拉普拉斯矩阵
输入:n个点{pi},簇的数目k
     计算n×n的相似度矩阵W和度矩阵D;
     计算正则拉普拉斯矩阵Lsym=D-1/2(D-W) D-1/2;
     计算Lsym的前k个特征向量u1,u2,…,uk;
     将k个列向量u1,u2,…,uk组成矩阵U,U∈Rn×k;
     对于i=1,2,…,n,令yi∈Rk是U的第i行的向量;
     对于i=1,2,…,n,将yi∈Rk依次单位化,使得|yi|=1;
     使用k-means算法将点(yi)i=1,2,…,n聚类成簇C1,C2,…Ck;
     输出簇A1,A2,…Ak,其中,Ai={j|yj∈Ci}
   进一步思考:
     谱聚类中的K如何确定?
k ∗ = arg ⁡ max ⁡ ∣ λ k + 1 − λ k ∣ k^{*}=\arg \max \left|\lambda_{k+1}-\lambda_{k}\right| k=argmaxλk+1λk
     最后一步K-Means的作用是什么?
     目标函数是关于子图划分指示向量的函数,该向量的值根据子图划分确定,是离散的。该问题是NP的,转换成求连续实数域上的解,最后用K-Means算法离散化。
     未正则/对称/随机游走拉普拉斯矩阵,首选哪个?随机游走拉普拉斯矩阵
   (4)标签传递算法
     对于部分样本的标记给定,而大多数样本的标记未知的情形,为半监督学习问题。标签传递算法(Label Propagation Algorithm,LPA),将标记样本的标记通过一定的概率传递给未标记样本,直到最终收敛。
     标签传递过程
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值