Skip to content

Commit 3930bbc

Browse files
committed
km
1 parent 1b63e0c commit 3930bbc

File tree

8 files changed

+76
-0
lines changed

8 files changed

+76
-0
lines changed

Clustering/K-means.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# K均值 K-means
2+
3+
[Material Adapted from Dr. Shuo Wang @ UoB]
4+
5+
K均值算法的核心思想是用平均值描述每个聚类。对于聚类 $c$,其平均值被定义为
6+
7+
$$
8+
\mu_c = \frac{1}{|c|}\sum_{\mathbf{x}\in c}\mathbf{x}
9+
$$
10+
11+
其算法目标是最小化所有聚类的聚类内方差。我们可以将方差认为是所有点到均值的距离的平方和。
12+
13+
## 算法
14+
15+
K 均值算法并不复杂。其步骤如下:
16+
17+
我们以 $K=2$ 为例:
18+
19+
**步骤 1:初始化聚类并分配**
20+
21+
随机初始化 $K$ 个聚类中心 $\mu_1, \mu_2, ..., \mu_K$。如图,我们初始化两个聚类中心。
22+
23+
对于每个数据点 $\mathbf{x}$,计算其到每个聚类中心的距离,然后将其分配到距离最近的聚类中心。
24+
25+
![](./img/KM-1.png)
26+
27+
**步骤 2:调整聚类中心**
28+
29+
根据每个聚类中的数据点,计算其不同维度的平均值,然后将其作为新的聚类中心。
30+
31+
![](./img/KM-2.png)
32+
33+
**步骤 3:重新分配数据点**
34+
35+
和步骤 1 类似,我们重新计算每个数据点到新的聚类中心的距离,然后重新分配数据点到最近的聚类中心点。
36+
37+
![](./img/KM-3.png)
38+
39+
**步骤 4:重新调整聚类中心**
40+
41+
和步骤 2 一致,我们重新计算每个聚类中心的平均值作为新的聚类中心。
42+
43+
![](./img/KM-4.png)
44+
45+
**步骤 5:重复**
46+
47+
重复步骤 3 和 4 直到聚类中心不再变化。
48+
49+
![](./img/KM-5.png)
50+
51+
## 不确定性 Non-determinism
52+
53+
![](./img/KM-diff.png)
54+
55+
上述算法非常简单,但是也存在问题:不同的初始化聚类中心,可能会有不同的聚类结果。如图是相同数据但是不同初始化的聚类结果。
56+
57+
因此多次启动通常是需要的。
58+
59+
## 算法定义
60+
61+
初始化:
62+
- 数据为 $\mathbf{x}_{1:N}$ : 有 N 个数据点
63+
- 选择初始聚类均值 $\mu_{1:K}$,其与数据有相同维度
64+
65+
重复:
66+
- 分配每个点到最近的聚类中心
67+
$$
68+
z_n = \argmin_{i\in K} \text{dist}(\mathbf{x}_n, \mu_i)
69+
$$
70+
- 计算新的聚类中心
71+
$$
72+
\mu_k = \frac{1}{N_k}\sum_{n:z_n=k}\mathbf{x}_n
73+
$$
74+
75+
直到分配 $z_{1:N}$ 不再发生变化。

Clustering/img/KM-1.png

141 KB
Loading

Clustering/img/KM-2.png

130 KB
Loading

Clustering/img/KM-3.png

116 KB
Loading

Clustering/img/KM-4.png

120 KB
Loading

Clustering/img/KM-5.png

120 KB
Loading

Clustering/img/KM-diff.png

177 KB
Loading

SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
- [聚类算法](./Clustering/README.md)
5050
- [层次聚类](./Clustering/Hierarchical.md)
51+
- [K均值聚类](./Clustering/K-means.md)
5152
- [K近邻 [WIP]](./Clustering/kNN.md)
5253
- [DBScan [WIP]](./Clustering/DBScan.md)
5354
- [高斯混合模型 GMM [WIP]](./Clustering/GMM.md)

0 commit comments

Comments
 (0)