聚类(Clustering)基础知识3

文章目录

一、聚类的性能评价

1、聚类性能评价

(1)聚类性能评价方法:

聚类性能评价方法主要分为两种:

  • 外部评价法 (external criterion):评估聚类结果与参考结果的相似程度。
  • 内部评价法 (internal criterion):评估聚类的本质特征,无需参考结果。

2、参考模型 (reference model)

(1)数据集:

  • 数据集: D = { x 1 , x 2 , . . . , x N } D = \{x_1, x_2, ..., x_N\} D={x1,x2,...,xN}

(2)聚类结果:

  • 聚类结果: C = { C 1 , C 2 , . . . , C K } C = \{C_1, C_2, ..., C_K\} C={C1,C2,...,CK},其中 C k C_k Ck表示属于类别 k k k的样本的集合。

(3)参考模型:

  • 参考模型: C ∗ = { C 1 ∗ , . . . , C K ∗ } C^* = \{C_1^*, ..., C_K^*\} C∗={C1∗,...,CK∗}

(4)标记向量:

  • λ \lambda λ 和 λ ∗ \lambda^* λ∗ 分别为 C C C和 C ∗ C^* C∗ 的标记向量。

(5)样本对数目计算:

  • a = # { ( x i , x j ) ∣ x i , x j ∈ C k ; x i , x j ∈ C l ∗ } a = \#\{(x_i, x_j) | x_i, x_j \in C_k; \ x_i, x_j \in C_l^*\} a=#{(xi,xj)∣xi,xj∈Ck; xi,xj∈Cl∗}
    • 在两种聚类结果中,两个样本的所属簇相同。
  • d = # { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ; x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } d = \#\{(x_i, x_j) | x_i \in C_{k1}, x_j \in C_{k2}; \ x_i \in C_{l1}^*, x_j \in C_{l2}^*\} d=#{(xi,xj)∣xi∈Ck1,xj∈Ck2; xi∈Cl1∗,xj∈Cl2∗}
    • 在两种聚类结果中,两个样本的所属簇不同。
  • b = # { ( x i , x j ) ∣ x i , x j ∈ C k ; x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } b = \#\{(x_i, x_j) | x_i, x_j \in C_k; \ x_i \in C_{l1}^*, x_j \in C_{l2}^*\} b=#{(xi,xj)∣xi,xj∈Ck; xi∈Cl1∗,xj∈Cl2∗}
  • c = # { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ; x i , x j ∈ C l ∗ } c = \#\{(x_i, x_j) | x_i \in C_{k1}, x_j \in C_{k2}; \ x_i, x_j \in C_l^*\} c=#{(xi,xj)∣xi∈Ck1,xj∈Ck2; xi,xj∈Cl∗}

(6)外部评价指标:

利用 ( a , b , c , d ) (a, b, c, d) (a,b,c,d)定义外部评价指标:

N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2 参考模型 相同 不同
聚类结果 相同 a a a b b b
不同 c c c d d d

3、外部索引

(1)Jaccard 系数 (JC)

  • J C = a a + b + c JC = \frac{a}{a+b+c} JC=a+b+ca
  • J C ∈ [ 0 , 1 ] JC \in [0,1] JC∈[0,1], J C ↑ JC \uparrow JC↑,一致性 ↑ \uparrow ↑

Fowlkes and Mallows 指数 (FMI)

  • F M I = a a + b ⋅ a a + c FMI = \sqrt{\frac{a}{a+b} \cdot \frac{a}{a+c}} FMI=a+ba⋅a+ca
  • F M I ∈ [ 0 , 1 ] FMI \in [0,1] FMI∈[0,1], F M I ↑ FMI \uparrow FMI↑,一致性 ↑ \uparrow ↑

(2)Rand 指数 (Rand Index), RI

  • R I = 2 ( a + d ) N ( N − 1 ) RI = \frac{2(a+d)}{N(N-1)} RI=N(N−1)2(a+d)
  • R I ∈ [ 0 , 1 ] RI \in [0,1] RI∈[0,1], R I ↑ RI \uparrow RI↑,一致性 ↑ \uparrow ↑

4、无参考模型

(1)大部分时候只有聚类结果,没有参考模型,只能用内部评价法评估聚类的性能:

  • 簇内相似度越高,聚类质量越好。
  • 簇间相似度越低,聚类质量越好。

5、簇内相似度

(1)平均距离:

  • a v g ( C k ) = 1 ∣ C k ∣ ( ∣ C k ∣ − 1 ) ∑ x i , x j ∈ C k d i s t ( x i , x j ) avg(C_k) = \frac{1}{|C_k|(|C_k|-1)} \sum_{x_i, x_j \in C_k} dist(x_i, x_j) avg(Ck)=∣Ck∣(∣Ck∣−1)1∑xi,xj∈Ckdist(xi,xj)
    • 其中 ∣ C k ∣ |C_k| ∣Ck∣表示簇 C k C_k Ck中元素的数目。

(2)最大距离:

  • d i a m ( C k ) = max ⁡ x i , x j ∈ C k d i s t ( x i , x j ) diam(C_k) = \max_{x_i, x_j \in C_k} dist(x_i, x_j) diam(Ck)=maxxi,xj∈Ckdist(xi,xj)

(3)簇的半径 (diameter):

  • d i a m ( C k ) = 1 ∣ C k ∣ ∑ x i ∈ C k ( d i s t ( x i , μ k ) ) 2 diam(C_k) = \sqrt{\frac{1}{|C_k|} \sum_{x_i \in C_k} (dist(x_i, \mu_k))^2} diam(Ck)=∣Ck∣1∑xi∈Ck(dist(xi,μk))2
    • 其中 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=∣Ck∣1∑xi∈Ckxi

6、簇间相似度/距离

(1)最小距离:

  • d m i n ( C k , C l ) = min ⁡ x i ∈ C k , x j ∈ C l d i s t ( x i , x j ) d_{min}(C_k, C_l) = \min_{x_i \in C_k, x_j \in C_l} dist(x_i, x_j) dmin(Ck,Cl)=minxi∈Ck,xj∈Cldist(xi,xj)

(2)类中心之间的距离:

  • d c e n ( C k , C l ) = d i s t ( μ k , μ l ) d_{cen}(C_k, C_l) = dist(\mu_k, \mu_l) dcen(Ck,Cl)=dist(μk,μl),
    • 其中 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=∣Ck∣1∑xi∈Ckxi

7、内部评价指标

(1)DB 指数 (DBI)

D B I = 1 K ∑ k = 1 K max ⁡ k ≠ l a v g ( C k ) + a v g ( C l ) d c e n ( C k , C l ) DBI = \frac{1}{K} \sum_{k=1}^{K} \max_{k \neq l} \frac{avg(C_k) + avg(C_l)}{d_{cen}(C_k, C_l)} DBI=K1∑k=1Kmaxk=ldcen(Ck,Cl)avg(Ck)+avg(Cl),

簇内距离/簇间距离

D B I ↓ DBI \downarrow DBI↓,聚类质量 ↑ \uparrow ↑

(2)Dunn 指数 (DI)

D I = min ⁡ 1 ≤ k < l ≤ K d m i n ( C k , C l ) max ⁡ 1 ≤ k ≤ K d i a m ( C k ) DI = \min_{1 \leq k < l \leq K} \frac{d_{min}(C_k, C_l)}{\max_{1 \leq k \leq K} diam(C_k)} DI=min1≤k<l≤Kmax1≤k≤Kdiam(Ck)dmin(Ck,Cl),

最小簇间距离/最大簇的半径

D I ↑ DI \uparrow DI↑,聚类质量 ↑ \uparrow ↑

8、Calinski-Harabaz Index (CHI)

C H I = t r ( B ) t r ( W ) × N − K K − 1 CHI = \frac{tr(B)}{tr(W)} \times \frac{N - K}{K - 1} CHI=tr(W)tr(B)×K−1N−K,

C H I ↑ CHI \uparrow CHI↑,聚类质量 ↑ \uparrow ↑   计算快

其中 W W W为簇内散度矩阵: W = ∑ k = 1 K ∑ x i ∈ C k ( x i − μ k ) ( x i − μ k ) ⊤ W = \sum_{k=1}^{K} \sum_{x_i \in C_k} (x_i - \mu_k)(x_i - \mu_k)^\top W=∑k=1K∑xi∈Ck(xi−μk)(xi−μk)⊤

其中簇中心 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=∣Ck∣1∑xi∈Ckxi

t r ( W ) = ∑ k = 1 K ∑ x i ∈ C k d i s t ( x i , μ k ) tr(W) = \sum_{k=1}^{K} \sum_{x_i \in C_k} dist(x_i, \mu_k) tr(W)=∑k=1K∑xi∈Ckdist(xi,μk),为矩阵 W W W的迹

B B B为簇间散度矩阵: B = ∑ k = 1 K ∣ C k ∣ ( μ k − μ ) ( μ k − μ ) ⊤ B = \sum_{k=1}^{K} |C_k|(\mu_k - \mu)(\mu_k - \mu)^\top B=∑k=1K∣Ck∣(μk−μ)(μk−μ)⊤

其中 μ = 1 N ∑ i = 1 N x i \mu = \frac{1}{N} \sum_{i=1}^{N} x_i μ=N1∑i=1Nxi

t r ( B ) = ∑ k = 1 K ∣ C k ∣ d i s t ( μ k , μ ) tr(B) = \sum_{k=1}^{K} |C_k|dist(\mu_k, \mu) tr(B)=∑k=1K∣Ck∣dist(μk,μ)

9、轮廓指数 (Silhouette Index)

对于其中的一个样本点 i i i,记:

- a ( i ) a(i) a(i):样本点 i i i到与其所属簇中其它点的平均距离

- d ( i , C k ) ‾ \overline{d(i, C_k)} d(i,Ck):样本点 i i i到其他簇 C k ( x i ∉ C k ) C_k (x_i \notin C_k) Ck(xi∈/Ck)内所有点的平均距离

- b ( i ) b(i) b(i):所有 d ( i , C k ) ‾ \overline{d(i, C_k)} d(i,Ck)的最小值

则样本点 i 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 , 1 ] s(i) \in [-1, 1] s(i)∈[−1,1]

S I ↑ SI \uparrow SI↑,聚类质量 ↑ \uparrow ↑

平均轮廓值为: S I = 1 N ∑ i = 1 N s ( i ) SI = \frac{1}{N} \sum_{i=1}^{N} s(i) SI=N1∑i=1Ns(i)

(1)例:轮廓指数

SI值小的点为边缘点

(2)例:根据SI选择聚类数目

2个簇轮廓分数高,但2个簇的大小不均衡

4个簇轮廓分数高,且每个簇的轮廓大小比较均衡

3个簇和5个簇比较糟糕:因为存在低于平均轮廓分数的聚类,轮廓图的大小波动很大

10、聚类小结

聚类与应用高度相关

聚类很难评估,但实际应用中很有用

聚类方法

  • 基于中心的模型:如K均值聚类
  • 基于连接性的模型:如层次聚类(BIRCH、CURE、CHAMELEON、GRIN)
  • 基于分布的模型:基于数据点的产生分布确定模型,如高斯混合模型
  • 基于密度的模型:如DBSCAN、OPTICS、DENCLUE、Mean-shift
  • 基于图模型的聚类:谱聚类
  • 基于网格的聚类:STING、CLIQUE
  • 基于模型的聚类:SOM、基于神经网络的聚类

两个通用工具

  • EM
  • 图及其拉普拉斯矩阵

11、Scikit-Learn中的聚类算法

(1)Classes sklearn.cluster

Classes Description
cluster.AffinityPropagation(...) Perform Affinity Propagation Clustering of data.
cluster.AgglomerativeClustering(...) Agglomerative Clustering.
cluster.Birch(...) Implements the BIRCH clustering algorithm.
cluster.DBSCAN(...) Perform DBSCAN clustering from vector array or distance matrix.
cluster.FeatureAgglomeration(...) Agglomerate features.
cluster.KMeans(...) K-Means clustering.
cluster.MiniBatchKMeans(...) Mini-Batch K-Means clustering.
cluster.MeanShift(...) Mean shift clustering using a flat kernel.
cluster.OPTICS(...) Estimate clustering structure from vector array.
cluster.SpectralClustering(...) Apply clustering to a projection of the normalized Laplacian.
cluster.SpectralBiclustering(...) Spectral biclustering (Kluger, 2003).
cluster.SpectralCoClustering(...) Spectral Co-Clustering algorithm (Dhillon, 2001).

Scikit-Learn 官方文档

12、Scikit-Learn中的聚类算法示例

13、采用Scikit-Learn进行聚类算法的实例

相关推荐
hans汉斯2 分钟前
国产生成式人工智能解决物理问题能力研究——以“智谱AI”、“讯飞星火认知大模型”、“天工”、“360智脑”、“文心一言”为例
大数据·人工智能·算法·aigc·文心一言·汉斯出版社·天工
v_for_van5 分钟前
力扣刷题记录3(无算法背景,纯C语言)
c语言·算法·leetcode
ValhallaCoder9 分钟前
hot100-矩阵
数据结构·python·算法·矩阵
散峰而望9 分钟前
【基础算法】穷举的艺术:在可能性森林中寻找答案
开发语言·数据结构·c++·算法·随机森林·github·动态规划
心.c12 分钟前
Vue3+Node.js实现文件上传分片上传和断点续传【详细教程】
前端·javascript·vue.js·算法·node.js·哈希算法
散峰而望12 分钟前
【基础算法】算法的“预谋”:前缀和如何改变游戏规则
开发语言·数据结构·c++·算法·github·动态规划·推荐算法
We་ct12 分钟前
LeetCode 48. 旋转图像:原地旋转最优解法
前端·算法·leetcode·typescript
爱尔兰极光13 分钟前
LeetCode--长度最小的子数组
算法·leetcode·职场和发展
仰泳的熊猫14 分钟前
题目1432:蓝桥杯2013年第四届真题-剪格子
数据结构·c++·算法·蓝桥杯·深度优先·图论
有一个好名字21 分钟前
力扣-电话号码组合
算法·leetcode·职场和发展