机器学习——聚类算法总结(一)

机器学习——聚类算法总结(一)

1 聚类算法介绍

1.1、基本形式描述

聚类算法是无监督学习的一个重要的应用方向,聚类算法将样本集中的样本划分成若干个不想交的子集,每个子集称为一个“簇”,通过这样的划分,每个簇可能对应于一些潜在的类别。需要说明的是这些分类事先是未知的,聚类仅仅能够自动的形成簇,但是簇对应的概念语义需要我们自己来命名和理解。

聚类算法的一般形式为:

  1. 给定样本集 D = [ X 1 , X 2 , . . . , X m ] D=[X_1,X_2,...,X_m] D=[X1,X2,...,Xm],D中包含m个没有标签的样本。
  2. 每一个样本 X i X_i Xi的形式为 [ X i 1 , X i 2 , . . . . X i n ] [X_{i1},X_{i2},....X_{in}] [Xi1,Xi2,....Xin]也就是每一个样本包含n个特征。
  3. 聚类算法将样本集合D划分成k个不同的簇,表示为 C 1 = [ X 1 , X 2 , . . . X k ] C_1=[X_1,X_2,...X_k] C1=[X1,X2,...Xk] C 2 = [ X k + 1 , . . . . X k + i ] C_2=[X_{k+1},....X_{k+i}] C2=[Xk+1,....Xk+i] C 3 C_3 C3,…∪ C k C_k Ck。并且有 C 1 ∩ C 2 ∩ C 3 , . . . ∩ C k = ∅ C_1∩C_2∩C_3,...∩C_k=∅ C1C2C3,...Ck=,我们自定义一个簇的表示为 λ i λ_i λi,则将所有的簇的表示可以描述为: [ λ 1 , λ 2 , . . . λ k ] [λ_1,λ_2,...λ_k] [λ1,λ2,...λk]
1.2 聚类的性能度量

聚类的性能度量方法主要可以分成两个类别,第一个类别是将聚类的结果和某一个“参考模型”进行比较,这称为是外部指标,另外一种方式是直接比较聚类的结果,而不去参考其他模型的结果。这称为是内部指标。

1.2.1 外部指标的性能度量

假设,我们采用聚类算法划分出来的簇为 [ C 1 , C 2 , . . , C k ] [C_1,C_2,..,C_k] [C1,C2,..,Ck],而参考模型的聚类结果为 [ C 1 ∗ , C 2 ∗ , C 3 ∗ , . . . . . C s ∗ ] [C_{1}^*,C_{2}^*,C_{3}^*,.....C_{s}^*] [C1,C2,C3,.....Cs],同样,我们采用 λ i λ_i λi λ i ∗ λ_i^* λi作为聚类结果中第i个簇的表示,用 λ i ∗ λ_i^* λi作为参考模型中第i个簇的表示。下面定义一些计算为:

  1. a = ∣ S S ∣ , S S = { ( X i , X j ) ∣ X i ∈ λ i , X j ∈ λ i , X i ∈ λ i ∗ , X j ∈ λ i ∗ , i < j } a=|SS|,SS=\{(X_i,X_j)|X_i∈λ_i,X_j∈λ_i,X_i∈λ_i^*,X_j∈λ_i^*,i<j\} a=SSSS={(Xi,Xj)Xiλi,Xjλi,Xiλi,Xjλi,i<j}
    简单的解释以下就是,SS表示的是 X i , X j X_i,X_j Xi,Xj无论是在聚类结果还是参考模型中都属于一个簇的样本集合。
  2. b = ∣ S D ∣ , S D = { ( X i , X j ) ∣ X i ∈ λ i , X j ∈ λ i , X i ∈ λ i ∗ , X j ∉ λ i ∗ , i < j } b=|SD|,SD=\{(X_i,X_j)|X_i∈λ_i,X_j∈λ_i,X_i∈λ_i^*,X_j∉λ_i^*,i<j\} b=SDSD={(Xi,Xj)Xiλi,Xjλi,Xiλi,Xj/λi,i<j}
    简单的解释一下就是,SD表示 X i , X j X_i,X_j Xi,Xj在聚类结果中同一个簇,但是在参考模型中不属于一个簇的样本集合。
  3. c = ∣ D S ∣ , D S = { D S } , D S = { ( X i , X j ) ∣ X i ∈ λ i , X j ∉ λ i , X i ∈ λ i ∗ , X j ∈ λ i ∗ , i < j } c=|DS|,DS=\{DS\},DS=\{(X_i,X_j)|X_i∈λ_i,X_j∉λ_i,X_i∈λ_i^*,X_j∈λ_i^*,i<j\} c=DSDS={DS}DS={(Xi,Xj)Xiλi,Xj/λi,Xiλi,Xjλi,i<j}
    DS表示 X i , X j X_i,X_j Xi,Xj在聚类结果中不属于一个簇,但是在参考模型中属于一个簇的样本集合。
  4. d = ∣ D D ∣ , D D = { ( X i , X j ) ∣ X i ∈ λ i , X j ∉ λ i , X i ∈ λ i ∗ , X j ∉ λ i ∗ , i < j } d=|DD|,DD=\{(X_i,X_j)|X_i∈λ_i,X_j∉λ_i,X_i∈λ_i^*,X_j∉λ_i^*,i<j\} d=DDDD={(Xi,Xj)Xiλi,Xj/λi,Xiλi,Xj/λi,i<j}
    DD表示的是在聚类结果中属于同一个簇,在参考模型中也不属于一个簇的样本集合。

由于,每一个样本只能属于一个簇,所以有 a + b + c + d = m ( m − 1 ) 2 a+b+c+d=\frac{m(m-1)}{2} a+b+c+d=2m(m1)
外部指标1:Jaccard 系数
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca
外部指标2:FMI指数
F M I = a a + b ∗ a a + c FMI=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}} FMI=a+baa+ca
外部指标3:Rand指数
R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m1)2(a+d)
对于上面的指标,值越大聚类的效果就越好。

1.2.2 内部指标度量

对于聚类生成的结果,定义如下几个公式:
a v g ( C i ) = 2 ∣ C i ∣ ( ∣ C i ∣ − 1 ) ∑ 1 ≤ i < j ≤ ∣ C i ∣ d i s t ( X i , X j ) avg(C_i)=\frac{2}{|C_i|(|C_i|-1)}∑_{1≤i<j≤|C_i|}dist(X_i,X_j) avg(Ci)=Ci(Ci1)21i<jCidist(Xi,Xj)
其中dist用于计算的是不同的两个样本 X i , X j X_i,X_j Xi,Xj之间的距离, a v g ( C i ) avg(C_i) avg(Ci)表示计算簇 C i C_i Ci下面的样本的之间的距离的平均值。
d i a m ( C i ) = m a x 1 ≤ i < j ≤ ∣ C ∣ d i s t ( X i , X j ) diam(C_i)=max_{1≤i<j≤|C|}dist(X_i,X_j) diam(Ci)=max1i<jCdist(Xi,Xj)
d i a m ( C i ) diam(C_i) diam(Ci)表示簇 C i C_i Ci下面所有样本中距离最大的两个样本之间的距离值。
d m i n ( C i , C j ) = m i n X i ∈ C i , X j ∈ C j d i s t ( X i , X j ) d_{min}(C_i,C_j)=min_{X_i∈C_i,X_j∈C_j}dist(X_i,X_j) dmin(Ci,Cj)=minXiCi,XjCjdist(Xi,Xj)
d m i n ( C i , C j ) d_{min}(C_i,C_j) dmin(Ci,Cj)表示两个簇之间的样本的最小距离。
d c e n ( C i , C j ) = d i s t ( μ i , μ j ) d_{cen}(C_i,C_j)=dist(μ_i,μ_j) dcen(Ci,Cj)=dist(μi,μj)
d c e n ( C i , C j ) d_{cen}(C_i,C_j) dcen(Ci,Cj)表示两个簇之间的中心点之间的距离, μ i μ_i μi表示第i个簇的中心点。
μ i = 1 C i ∑ i = 1 ∣ C i ∣ X i , X i ∈ ∣ C ∣ μ_i=\frac{1}{C_i}∑_{i=1}^{|C_i|}X_i,X_i∈|C| μi=Ci1i=1CiXiXiC

内部指标1:DB 系数
D B I = 1 k ∑ i = 1 k m a x j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( C i , C j ) ) DBI=\frac{1}{k}∑_{i=1}^kmax_{j≠i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}) DBI=k1i=1kmaxj=i(dcen(Ci,Cj)avg(Ci)+avg(Cj))
DBI指数就是不同簇内部距离的平均值和不同簇之间的距离的比值的求和。
内部指标2:Dunn指数
D I = m i n 1 ≤ i ≤ k { m i n j ≠ i d m i n ( C i , C j ) m a x 1 ≤ l ≤ k d i a m ( C l ) } DI = min_{1≤i≤k}\{min_{j≠i}\frac{d_{min}(C_i,C_j)}{max_{1≤l≤k}diam(C_l)}\} DI=min1ik{minj=imax1lkdiam(Cl)dmin(Ci,Cj)}

DBI指数越小越好,DI指数越大越好。

1.3 距离计算

对于上面的公式,我们可以发现,其基础在于dist距离的计算,其中最常见的距离计算为闵可夫斯基距离的计算。其基本公式为:
d i s t m k ( X i , X j ) = ( ∑ u = 1 n ∣ X i u − X j u ∣ p ) 1 p dist_{mk}(X_i,X_j)=(∑_{u=1}^n|X_{iu}-X_{ju}|^p)^{\frac{1}{p}} distmk(Xi,Xj)=(u=1nXiuXjup)p1
其中,n表示样本的维度。

  1. 当p等于1的时候,上述公式变成了:
    d i s t m k ( X i , X j ) = ( ∑ u = 1 n ∣ X i u − X j u ∣ ) dist_{mk}(X_i,X_j)=(∑_{u=1}^n|X_{iu}-X_{ju}|) distmk(Xi,Xj)=(u=1nXiuXju)
    这种距离的计算方式称为曼哈顿距离。
  2. 当p等于2的时候,上述公式变成了:
    d i s t m k ( X i , X j ) = ( ∑ u = 1 n ∣ X i u − X j u ∣ 2 ) 1 2 dist_{mk}(X_i,X_j)=(∑_{u=1}^n|X_{iu}-X_{ju}|^2)^{\frac{1}{2}} distmk(Xi,Xj)=(u=1nXiuXju2)21
    这种距离的计算方式也称为欧式距离。

2、K-means聚类

K-means聚类是最为简单的一种聚类方式,假设聚类结果一共有k个簇, u i u_i ui表示第i个簇的中心点,我们的目标是最小化平方误差:
E = ∑ i = 1 k ∑ X ∈ C i ∣ ∣ X − u i ∣ ∣ 2 E=∑_{i=1}^k∑_{X∈C_i}||X-u_i||^2 E=i=1kXCiXui2
也就是先对每一个簇下面的各个样本计算与中心的距离之和,然后在对所有簇求和。当距离达到最小的时候,意味着聚类的效果达到了最优。但是想要找到最小的距离值是一个NP问题,所以在K-means中采用了贪心算法,找到近似解。

2.1 K-means算法描述

在这里插入图片描述
注意:在K-means算法,唯一的参数是指定的分成簇的个数K

2.2 学习向量化算法LVQ

在上述描述的K-means算法中,所有的样本初始的时候都是没有类标签的,也就是K-means是一种完全监督的学习。在LVQ算法中,假设数据样本时带有类别的标签的,学习的过程会利用这些标签信息来辅助进行聚类。
在LVQ算法中,样本集合D的形式如下:
D = { ( X 1 , Y 1 ) , ( X 2 , Y 2 ) , . . . . , ( X m , Y m ) } D=\{(X_1,Y_1),(X_2,Y_2),....,(X_m,Y_m)\} D={(X1,Y1),(X2,Y2),....,(Xm,Ym)}
其中 Y i Y_i Yi表示样本 X i X_i Xi的类别标签。每一个样本的维度为n,也就是 X i = [ X i 1 , X i 2 , . . . , X i n ] X_i=[X_{i1},X_{i2},...,X_{in}] Xi=[Xi1,Xi2,...,Xin]

LVQ的目标
LVQ学习的目标是学习出各个簇的表示向量 p 1 , p 2 , . . . , p k {p_1,p_2,...,p_k} p1,p2,...,pk,一共有k个簇,每一个 p i p_i pi的维度为n。

首先,我们对各个簇的表示向量 p i p_i pi进行随机初始化。并且给这些向量分配k个标签,用于后续的计算。记为 [ t 1 , t 2 , . . . , t k ] [t_1,t_2,...,t_k] [t1,t2,...,tk]

训练的过程是一个迭代的过程,随机从样本集合中抽取一个样本 ( X i , Y i ) (X_i,Y_i) (Xi,Yi),分别计算其和每一个簇的表示向量的的距离, d j i = ∣ ∣ X i − p j ∣ ∣ 2 d_{ji}=||X_i-p_j||^2 dji=Xipj2,找到距离最小的 p j p_j pj,将 Y i Y_i Yi p j p_j pj的标签进行比较,如果两个标签相同,则有新的 p j p_j pj为:
p j n e w = p j + η ∗ ( X i − p j ) p_j^{new}=p_j+η*(X_i-p_j) pjnew=pj+η(Xipj)
否则:
p j n e w = p j − η ∗ ( X i − p j ) p_j^{new}=p_j-η*(X_i-p_j) pjnew=pjη(Xipj)

2.2.1 LVQ算法的形式化描述

在这里插入图片描述

2.2.3 更新公式的分析

在上面的描述中,我们给出了两个簇的表示向量的更新公式:

如果两个标签相同,则有新的 p j p_j pj为:
p j n e w = p j + η ∗ ( X i − p j ) p_j^{new}=p_j+η*(X_i-p_j) pjnew=pj+η(Xipj)
否则:
p j n e w = p j − η ∗ ( X i − p j ) p_j^{new}=p_j-η*(X_i-p_j) pjnew=pjη(Xipj)

我们来简单的分析一下,当标签相同的时候,更新后的 p j n e w p_j^{new} pjnew与样本 X i X_i Xi的距离为:
∣ ∣ X i − p j n e w ∣ ∣ 2 = ∣ ∣ X i − p j − η ∗ ( X i − p j ) ∣ ∣ 2 = ( 1 − η ) ∣ ∣ X i − p j ∣ ∣ 2 ||X_i-p_j^{new}||_2=||X_i-p_j-η*(X_i-p_j)||_2=(1-η)||X_i-p_j||_2 Xipjnew2=Xipjη(Xipj)2=(1η)Xipj2
其中η∈[0,1],所以可以判断出距离变小,也就是 p j p_j pj更加接近于 X i X_i Xi
当标签不同的时候:
∣ ∣ X i − p j n e w ∣ ∣ 2 = ∣ ∣ X i − p j + η ∗ ( X i − p j ) ∣ ∣ 2 = ( 1 + η ) ∣ ∣ X i − p j ∣ ∣ 2 ||X_i-p_j^{new}||_2=||X_i-p_j+η*(X_i-p_j)||_2=(1+η)||X_i-p_j||_2 Xipjnew2=Xipj+η(Xipj)2=(1+η)Xipj2
可以判断出距离变大,也就是 p j p_j pj更加疏远于 X i X_i Xi

训练结束之后,我们就获得了最终的所有簇的向量表示 p 1 , p 2 , . . . , p k {p_1,p_2,...,p_k} p1,p2,...,pk,下一步就可以利用这些簇的表示对其他的样本空间,根据距离进行划分。

3 参考

  1. 周志华 《机器学习》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中的聚类算法是一种无监督学习方法,用于将数据集中的样本分成不同的组,使得同一组内的样本具有相似的特征,而不同组之间的样本具有较大的差异。 聚类算法的目标是通过分析数据的相似性和差异性,将数据集划分成不同的类别或簇,以便更好地理解和分析数据。聚类算法通常包括以下几个步骤: 1. 选择距离度量方法:聚类算法通常基于样本之间的距离或相似性来进行聚类。常见的距离度量方法有欧氏距离、曼哈顿距离等。 2. 选择聚类算法:根据数据的性质和需求选择适当的聚类算法。常见的聚类算法有K均值算法、层次聚类算法等。 3. 初始化聚类中心:对于K均值算法等需要选择聚类中心的算法,需要初始化聚类中心。常见的初始化方法有随机选择、采样选择等。 4. 迭代聚类:根据数据样本的距离或相似性进行迭代计算,直到满足停止准则或达到最大迭代次数为止。迭代的过程中,不断更新聚类中心以获得更合理的聚类结果。 5. 聚类评估和结果解释:对于聚类结果,需要进行评估和解释。常见的评估指标有聚类精度、互信息等。 机器学习聚类算法的应用非常广泛,例如在数据挖掘、图像处理、社交网络分析等领域中都有大量的应用。聚类算法可以帮助我们发现数据的隐藏结构、分析数据的特征以及归纳数据集的规律,从而实现更好的数据管理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值