K均值聚类(K-Means)算法介绍及示例
K均值聚类(K-Means)是一种常用的无监督学习算法,主要用于将数据集划分为 KK 个不同的簇(clusters)。其目标是使得同一簇内的数据点尽可能相似,而不同簇之间的数据点尽可能不同。以下是K均值聚类算法的介绍及示例。
K均值聚类算法介绍
1. 算法步骤
K均值聚类的基本步骤如下:
- 选择K值:确定要分成的簇的数量 KK。
- 初始化中心:随机选择 KK 个数据点作为初始簇中心(centroids)。
- 分配簇:
- 对于每个数据点,计算其与每个簇中心的距离(通常使用欧几里得距离)。
- 将每个数据点分配给距离最近的簇中心。
- 更新中心:
- 重新计算每个簇的中心,即簇中所有数据点的均值。
- 迭代:重复步骤3和4,直到簇中心不再变化或达到预设的迭代次数。
2. 优缺点
优点:
- 简单易实现,计算效率高,适用于大规模数据集。
- 结果易于解释和可视化。
缺点:
- 需要预先指定 KK 值,可能会影响结果。
- 对噪声和离群点敏感。
- 可能会收敛到局部最优解,结果依赖于初始簇中心的选择。
3. 应用场景
- 客户细分
- 图像压缩
- 市场分析
- 文本聚类
示例
假设我们有以下二维数据点:
(1, 2)
(1, 4)
(1, 0)
(4, 2)
(4, 4)
(4, 0)
我们希望将这些数据点分为 K=2K=2 个簇。
步骤详解
选择K值:设定 K=2K=2。
初始化中心:随机选择两个点作为初始中心,例如选择 (1, 2) 和 (4, 2)。
分配簇:
- 计算每个点到两个中心的距离,并分配给最近的中心。
- 假设分配结果为:
- 簇1: (1, 2), (1, 4), (1, 0)
- 簇2: (4, 2), (4, 4), (4, 0)
更新中心:
迭代:重复步骤3和4,直到中心不再变化。
最终结果
经过若干次迭代后,假设簇中心不再变化,最终的簇划分可能为:
- 簇1: (1, 2), (1, 4), (1, 0)
- 簇2: (4, 2), (4, 4), (4, 0)
总结
K均值聚类是一种简单而有效的聚类算法,适用于多种应用场景。尽管存在一些局限性,但通过合理选择 KK 值和初始中心,可以获得良好的聚类效果。