K-medoids 和 K-means++ 聚类算法详解及实例应用
K-medoids 和 k-means++ 是聚类算法中常用的两种方法。在本文中,我们将详细介绍这两种算法,并使用相关实例来说明它们的应用。
K-medoids 算法
K-medoids 是一种基于中心点的聚类算法,它的本质是通过选择代表样本(即中心点)来表示每个类别。该算法的步骤如下:
- 随机选择 k 个样本作为中心点;
- 对于每个样本,计算其与每个中心点之间的距离,并将其归类到距离最近的中心点所代表的类别;
- 对于每个类别,选择一个新的中心点,它是该类别中与其他样本距离之和最小的样本;
- 重复步骤 2 和 3,直到中心点不再改变或达到最大迭代次数。
以下是一个使用 K-medoids 算法进行聚类的示例。假设我们有以下数据:
| 数据点 | X | Y | | ------ | - | - | | A | 1 | 1 | | B | 1 | 2 | | C | 2 | 1 | | D | 7 | 6 | | E | 8 | 5 | | F | 9 | 4 |
我们将 k 设置为 2,并随机选择两个样本作为中心点。假设我们选择 A 和 D 作为初始中心点。现在我们计算每个样本到中心点 A 和 D 的距离:
| 数据点 | 到中心点 A 的距离 | 到中心点 D 的距离 | 所属类别 | | ------ | -------------- | -------------- | -------- | | A | 0 | 7 | A | | B | 1 | 6 | A | | C | 1 | 5 | A | | D | 7 | 0 | D | | E | 8 | 1 | D | | F | 9 | 2 | D |
现在我们选择每个类别中与其他样本距离之和最小的样本作为新的中心点。对于类别 A,我们选择 B 作为新的中心点。对于类别 D,我们选择 E 作为新的中心点。现在我们再次计算每个样本到中心点 B 和 E 的距离:
| 数据点 | 到中心点 B 的距离 | 到中心点 E 的距离 | 所属类别 | | ------ | -------------- | -------------- | -------- | | A | 0 | 7 | B | | B | 0 | 5 | B | | C | 1 | 4 | B | | D | 7 | 1 | E | | E | 5 | 0 | E | | F | 6 | 1 | E |
我们可以看到,现在每个样本都被正确地分配到了类别 B 或 E 中。由于中心点不再改变,算法停止并输出最终结果。
K-means++ 算法
K-means++ 是一种改进的 K-means 算法,它通过选择更好的初始中心点来提高聚类的准确性。K-means++ 算法的步骤如下:
- 随机选择一个样本作为第一个中心点;
- 对于每个样本,计算其到最近中心点的距离(即该样本所属类别的内部距离),并将所有内部距离的和作为概率分布;
- 随机选择下一个中心点,使其被选中的概率与其到最近中心点的内部距离成正比;
- 重复步骤 2 和 3,直到选择 k 个中心点。
以下是一个使用 K-means++ 算法进行聚类的示例。假设我们有以下数据:
| 数据点 | X | Y | | ------ | - | - | | A | 1 | 1 | | B | 1 | 2 | | C | 2 | 1 | | D | 7 | 6 | | E | 8 | 5 | | F | 9 | 4 |
我们将 k 设置为 2,并使用 K-means++ 算法选择初始中心点。首先,我们随机选择一个样本作为第一个中心点。假设我们选择 A。现在我们计算每个样本到中心点 A 的内部距离,并将其归一化得到概率分布:
| 数据点 | 到中心点 A 的内部距离 | 概率 | | ------ | ------------------ | ---- | | A | 0 | 1.00 | | B | 1 | 0.50 | | C | 1 | 0.50 | | D | 9 | 0.00 | | E | 10 | 0.00 | | F | 13 | 0.00 |
现在我们随机选择下一个中心点,使其被选中的概率与其到最近中心点的内部距离成正比。假设我们选择 B 作为第二个中心点。现在我们再次计算每个样本到中心点 A 和 B 的内部距离,并将其归一化得到概率分布:
| 数据点 | 到中心点 A 的内部距离 | 到中心点 B 的内部距离 | 概率 | | ------ | ------------------ | ------------------ | ---- | | A | 0 | 1 | 0.33 | | B | 1 | 0 | 0.67 | | C | 1 | 1 | 0.00 | | D | 9 | 5 | 0.00 | | E | 10 | 6 | 0.00 | | F | 13 | 9 | 0.00 |
现在我们随机选择下一个中心点,使其被选中的概率与其到最近中心点的内部距离成正比。假设我们选择 D 作为第三个中心点。现在我们再次计算每个样本到中心点 A、B 和 D 的内部距离,并将其归一化得到概率分布:
| 数据点 | 到中心点 A 的内部距离 | 到中心点 B 的内部距离 | 到中心点 D 的内部距离 | 概率 | | ------ | ------------------ | ------------------ | ------------------ | ---- | | A | 0 | 1 | 81 | 0.02 | | B | 1 | 0 | 65 | 0.01 | | C | 1 | 1 | 80 | 0.02 | | D | 81 | 65 | 0 | 0.95 | | E | 98 | 82 | 1 | 0.00 | | F | 145 | 129 | 10 | 0.00 |
现在我们随机选择下一个中心点,使其被选中的概率与其到最近中心点的内部距离成正比。假设我们选择 E 作为第四个中心点。由于我们已经选择了 k 个中心点,算法停止并输出最终结果。
结论
K-medoids 和 K-means++ 是两种常用的聚类算法。K-medoids 算法通过选择代表样本(即中心点)来表示每个类别,而 K-means++ 算法通过选择更好的初始中心点来提高聚类的准确性。在实际应用中,我们可以根据数据的特点选择合适的算法进行聚类分析。
原文地址: http://www.cveoy.top/t/topic/n0QE 著作权归作者所有。请勿转载和采集!