数据挖掘 7.1~7.4 Clustering聚类
7.1 How to go beyond classification, regression and dimensionality reduction
7.2 Applied SRM in Barebones Pytorch
7.3 Clustering
7.4 Clustering in sklearn
7.1 如何超越分类、回归和降维
7.2 在 Barebones Pytorch 中应用 SRM
7.3 聚类
7.4 在 Sklearn 中进行聚类
Clustering聚类
- Clustering 聚类
- 聚类的目标 (Grouping objects)
- 评价指标 (Metrics)
- (1) 内部评价指标(只用训练数据本身,无标签)
- (2) 外部评价指标(需要外部真值标签 ground truth)
- K-means 聚类算法 (K-means Clustering)
- 1. 输入与参数
- 2. 算法步骤
- (1) 初始化 (Initialization)
- (2) 迭代优化 (Repeat)
- (3) 收敛条件 (Convergence)
- 3. 关键说明
- 4. REO
- 4.1 表示方式 (Representation)
- 4.2 评价目标 (Evaluation)
- 4.3 优化 (Optimization)
- 4.4 隐含超参数 (Hidden Hyperparameters)
- 5 Clustering Distortion 聚类中的失真度量
- 5.1 单个样本的失真
- 5.2 整体失真 (Overall Distortion)
- 5.3 作为目标函数 (Objective Function)
Clustering 聚类
通常输入是一个 数据矩阵 XXX,聚类是一种 无监督学习 (Unsupervised technique),数据没有标签。
聚类的目标 (Grouping objects)
目标:同一簇 (cluster) 内的对象彼此相似,而不同簇之间的对象差异较大
这就是所有聚类方法的基本优化问题
评价指标 (Metrics)
(1) 内部评价指标(只用训练数据本身,无标签)
Davies-Bouldin Index (DB 指数)
Dunn’s Index (Dunn 指数)
Silhouette Coefficient (轮廓系数)
这些指标是用 数据的紧密度和分离度 来评价聚类效果。
(2) 外部评价指标(需要外部真值标签 ground truth)
Purity (纯度)
Jaccard Index (杰卡德指数)
Dice Index (Dice 系数)
K-means 聚类算法 (K-means Clustering)
K-means 是最常用的聚类算法之一,通过迭代优化,将数据划分为 kkk 个簇,使得簇内样本尽可能相似。
1. 输入与参数
- 输入 (Input): 数据矩阵 XXX
- 超参数 (Hyper-parameters):
- 聚类数 kkk (分成多少部分)
- 初始聚类中心
- 输出 (Output): 每个样本所属的簇(cluster assignment)
上图 K=5K=5K=5。
2. 算法步骤
(1) 初始化 (Initialization)
随机选择 kkk 个样本作为初始聚类中心:
mi,i=1,…,km_i, \quad i = 1, \dots, k mi,i=1,…,k
(2) 迭代优化 (Repeat)
样本分配 (Assignment Step):
对于每个样本 xtx^txt,分配给最近的簇中心:
bit={1,if ∥xt−mi∥=minj∥xt−mj∥0,otherwiseb_i^t = \begin{cases} 1, & \text{if } \|x^t - m_i\| = \min_j \|x^t - m_j\| \\ 0, & \text{otherwise} \end{cases} bit={1,0,if ∥xt−mi∥=minj∥xt−mj∥otherwise
中心更新 (Update Step):
对于每个簇中心 mim_imi,更新为该簇所有样本的均值:
mi←∑tbitxt∑tbitm_i \leftarrow \frac{\sum_t b_i^t x^t}{\sum_t b_i^t} mi←∑tbit∑tbitxt
(3) 收敛条件 (Convergence)
当所有 mim_imi 不再变化或变化很小,算法结束。
3. 关键说明
- bit=1b_i^t = 1bit=1 当且仅当第 iii 个簇中心是样本 xtx^txt 最近的中心。
- 否则 bit=0b_i^t = 0bit=0。
- K-means 的优化目标是最小化 簇内平方误差 (Within-Cluster Sum of Squares, WCSS):
minb,m∑i=1k∑tbit∥xt−mi∥2\min_{b, m} \sum_{i=1}^k \sum_t b_i^t \|x^t - m_i\|^2 b,mmini=1∑kt∑bit∥xt−mi∥2
4. REO
4.1 表示方式 (Representation)
每个样本 xxx 被分配到最近的“质心 (centroid)”。
聚类中心集合:
M={m1,m2,…,mK}M = \{ m_1, m_2, \dots, m_K \} M={m1,m2,…,mK}
聚类分配规则(最近邻原则):
c(x)=argminj=1…Kd(x,mj),c(x)∈{1,…,K}c(x) = \arg\min_{j=1 \dots K} d(x, m_j), \quad c(x) \in \{1, \dots, K\} c(x)=argj=1…Kmind(x,mj),c(x)∈{1,…,K}
4.2 评价目标 (Evaluation)
目标:确定聚类中心 M={m1,…,mK}M = \{ m_1, \dots, m_K \}M={m1,…,mK},并将样本划分到集合
S={S1,S2,…,SK}S = \{ S_1, S_2, \dots, S_K \} S={S1,S2,…,SK}
要求:最小化簇内样本与中心的距离。
数学形式:
minS∑j=1K∑x∈Sjd(x,mj)\min_S \sum_{j=1}^K \sum_{x \in S_j} d(x, m_j) Sminj=1∑Kx∈Sj∑d(x,mj)
其中,聚类中心为簇内所有样本的均值:
mj=1∣Sj∣∑x∈Sjxm_j = \frac{1}{|S_j|} \sum_{x \in S_j} x mj=∣Sj∣1x∈Sj∑x
4.3 优化 (Optimization)
这是一个 NP-Hard 问题,全局最优解难以计算。
K-means 使用近似迭代算法,可以收敛到一个 局部最优解。
4.4 隐含超参数 (Hidden Hyperparameters)
距离度量 (Distance Metric):
- 欧几里得距离
d(x,y)=∑i=1n(xi−yi)2d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=i=1∑n(xi−yi)2 - 曼哈顿距离 (Manhattan Distance)
d(x,y)=∑i=1n∣xi−yi∣d(x, y) = \sum_{i=1}^n |x_i - y_i| d(x,y)=i=1∑n∣xi−yi∣ - 其他相似度指标
- 不同的距离度量可能导致不同的聚类结果。
5 Clustering Distortion 聚类中的失真度量
在基于样本 (exemplar-based) 的聚类方法中(例如 K-means),我们用一组聚类中心 C={C1,C2,…,CK}C = \{C_1, C_2, \dots, C_K\}C={C1,C2,…,CK} 来表示数据集。
为了衡量聚类效果,可以通过计算样本点与其分配的聚类中心的距离来定义 失真 (distortion)。
5.1 单个样本的失真
如果一个点 xxx 被分配到中心 CjC_jCj,其失真定义为:
d(x;C)=∥x−Cj∥2d(x; C) = \|x - C_j\|^2 d(x;C)=∥x−Cj∥2
也可以写成:
d(x;C)=minj∈{1,…,K}∥x−Cj∥2d(x; C) = \min_{j \in \{1, \dots, K\}} \|x - C_j\|^2 d(x;C)=j∈{1,…,K}min∥x−Cj∥2
如果 C=xC=xC=x,则失真为0。
5.2 整体失真 (Overall Distortion)
对于整个训练集 X={x1,x2,…,xN}X = \{x_1, x_2, \dots, x_N\}X={x1,x2,…,xN},总失真为:
D(X;C)=∑i=1Nd(xi;C)D(X; C) = \sum_{i=1}^N d(x_i; C) D(X;C)=i=1∑Nd(xi;C)
即所有点到其最近聚类中心的平方距离和。
5.3 作为目标函数 (Objective Function)
失真函数是聚类的优化目标:
- 较低的失真:表示样本点和聚类中心更接近,聚类效果更好
- 较高的失真:表示样本点距离聚类中心较远,聚类效果较差