论文笔记: 可解释神经聚类 (鹏鹏专用)

摘要: 分享对论文的理解, 原文见 Xi Peng, Yunfan Li, Ivor W. Tsang, Hongyuan Zhu, Jiancheng Lv, Joey Tianyi Zhou,
XAI Beyond Classification: Interpretable Neural Clustering, Journal of Machine Learning Research 22 (2021) 1–27.

1. 符号系统

符号风格按照本贴作者的习惯有所修改.

符号 涵义 备注
X = { x 1 , … , x n } \mathbf{X} = \{\mathbf{x}_1, \dots, \mathbf{x}_n\} X={x1,,xn} 数据集 n n n 为实例个数
x i = ( x i 1 , … , x i m ) \mathbf{x}_i = (x_{i1}, \dots, x_{im}) xi=(xi1,,xim) 对象/实例 m m m 为特征个数/数据维度
S = { S 1 , … , S k } \mathcal{S} = \{\mathbf{S}_1, \dots, \mathbf{S}_k\} S={S1,,Sk} 聚类结果/数据集划分 k k k 为簇数
S i = { s i 1 , … , s i n i } ⊂ X \mathbf{S}_i = \{\mathbf{s}_{i1}, \dots, \mathbf{s}_{i n_i}\} \subset \mathbf{X} Si={si1,,sini}X i i i ∑ i = 1 k n i = n \sum_{i = 1}^k n_i = n i=1kni=n
Ω = ( ω 1 , … , ω k ) \mathbf{\Omega} = (\mathbf{\omega}_1, \dots, \mathbf{\omega}_k) Ω=(ω1,,ωk) 聚类中心点
ω i = ( ω i 1 , … , ω i m ) \mathbf{\omega}_i = (\omega_{i1}, \dots, \omega_{im}) ωi=(ωi1,,ωim) ω i = 1 n i ∑ j = 1 n i s i j \mathbf{\omega}_i = \frac{1}{n_i}\sum_{j=1}^{n_i} \mathbf{s}_{ij} ωi=ni1j=1nisij S i \mathbf{S}_i Si 的均值

下面给出一个数据集:

0.2, 0.3
0.1, 0.4
0.5, 0.6
0.6, 0.8
0.7, 0.2
0.9, 0.3

其中, n = 6 n = 6 n=6, m = 2 m = 2 m=2. (鹏鹏作业: 做一个 n = 20 n = 20 n=20 的人造数据集.)

2. k k kMeans 算法

k k kMeans 的目标是求一个最优聚类方案 (划分)
S ∗ = arg min ⁡ S ∑ j = 1 k ∑ x i ∈ S j ∥ x i − Ω j ∥ 2 2 . (1) \mathcal{S}^* = \argmin_{\mathcal{S}} \sum_{j = 1}^k \sum_{\mathbf{x}_i \in \mathbf{S}_j} \|\mathbf{x}_i - \mathbf{\Omega}_j\|_2^2. \tag{1} S=Sargminj=1kxiSjxiΩj22.(1)
换言之, 就是最大化各簇的"内聚性"之和.
为尽可能降低理解难度, 解释如下:
∥ x i − Ω j ∥ 2 2 = ∑ l = 1 m ( x i l − ω j l ) 2 = ( x i 1 − ω j 1 ) 2 + ⋯ + ( x i m − ω j m ) 2 \|\mathbf{x}_i - \mathbf{\Omega}_j\|_2^2 = \sum_{l = 1}^m (x_{il} - \omega_{jl})^2 = (x_{i1} - \omega_{j1})^2 + \dots + (x_{im} - \omega_{jm})^2 xiΩj22=l=1m(xilωjl)2=(xi1ωj1)2++(ximωjm)2

k k kMeans 算法描述如下:

  • Step 1. 随机选择 k k k 个数据点, 获得 Ω \mathbf{\Omega} Ω;
  • Step 2. 对于任意 x i ∈ X \mathbf{x}_i \in \mathbf{X} xiX, 计算它到 Ω \mathbf{\Omega} Ω 中各点的距离, 并确定其簇编号为
    c ( x i ) = arg min ⁡ j ∥ x i − ω j ∥ 2 2 ; (2) c(\mathbf{x}_i) = \argmin_j \|\mathbf{x}_i - \mathbf{\omega}_j\|_2^2 \tag{2}; c(xi)=jargminxiωj22;(2)
    由此构建 S j = { x i ∣ c ( x i ) = j } \mathbf{S}_j = \{\mathbf{x}_i \vert c(\mathbf{x}_i) = j\} Sj={xic(xi)=j}.
  • Step 3. 计算各簇的新中心集合 Ω ′ = ( ω 1 ′ , … , ω k ′ ) \mathbf{\Omega}' = (\mathbf{\omega}_1', \dots, \mathbf{\omega}_k') Ω=(ω1,,ωk), 其中
    ω i ′ = 1 n i ∑ j = 1 n i s i j ; (3) \mathbf{\omega}_i' = \frac{1}{n_i}\sum_{j=1}^{n_i} \mathbf{s}_{ij}; \tag{3} ωi=ni1j=1nisij;(3)
  • Step 4. 如果 Ω ′ = Ω \mathbf{\Omega}' = \mathbf{\Omega} Ω=Ω, 则表示收敛, 算法结束; 否则转到 Step 2.

该算法的 Java 代码见 第 56 天: kMeans 聚类.

  • 问题1: k k kMeans 能保证收敛到全局最优解吗?
    回答: 不能. 不同的初始聚类中心选择, 可能导致不同的聚类结果.
    (鹏鹏作业: 根据所构造例子, 用 k k kMeans 获得两种聚类结果, 并展示其过程.)
  • 问题2: 优化问题 (1) 式是一个困难问题吗?
    回答: 它是一个 NP 完全问题.
    (鹏鹏作业: 找到相应的证明, 可以不去手动证明, 贴图即可.)
  • 问题 3: 簇确定后, 为什么聚类中心点的计算为 (3) 式, 用其它的点会不会导致 (1) 式更小?
    (鹏鹏作业: 自己去证明.)

你可能感兴趣的:(论文笔记,聚类,论文阅读,算法)