机器学习之K-均值算法
K-means(K-均值)聚类算法是一种无监督学习算法。它的主要目标是将一组未标记的数据点划分为
𝐾个簇(cluster),使得每个数据点都属于离它最近的簇中心(centroid),并且每个簇内部的数据点尽可能相似,而簇与簇之间的数据点尽可能不相似。
𝐾个簇(cluster),使得每个数据点都属于离它最近的簇中心(centroid),并且每个簇内部的数据点尽可能相似,而簇与簇之间的数据点尽可能不相似。 欧几里得距离(Euclidean Distance),也称欧氏距离,是在多维空间中衡量两点之间直线距离的方法。它基于勾股定理,是我们在平面几何中最直观、最常用的距离概念的扩展。
注意与曼哈顿距离(Manhattan Distance, 差的绝对值之和)区别。
1. K-means 算法的工作流程
K-means 算法是一个迭代过程,它交替进行两个主要步骤:分配(Assignment)和更新(Update)。
- 初始化:
- 首先,需要预先确定聚类的数量𝐾

- 然后,随机选择𝐾个数据点作为初始的簇中心(也称质心)。

- 首先,需要预先确定聚类的数量𝐾
- 分配数据点(Expectation 步骤):
- 计算每个数据点到所有𝐾个簇中心的距离(通常使用欧几里得距离)。

- 将每个数据点分配给距离它最近的簇中心所代表的簇。
- 计算每个数据点到所有𝐾个簇中心的距离(通常使用欧几里得距离)。
- 更新簇中心(Maximization 步骤):
- 重新计算每个簇的中心。新的簇中心是该簇中所有数据点的平均值(质心)。
- 重复迭代:
- 重复执行“分配数据点”和“更新簇中心”这两个步骤,直到满足以下任一停止条件:
- 簇中心的位置不再发生显著变化。
- 数据点不再重新分配到新的簇。
- 达到预设的最大迭代次数。
- 重复执行“分配数据点”和“更新簇中心”这两个步骤,直到满足以下任一停止条件:
2. K-means 的优缺点
优点
- 简单且高效:算法实现起来非常简单,并且计算效率高,尤其适用于处理大规模数据集。
- 易于理解和解释:其原理直观易懂,结果也容易解释。
缺点
- 需要预先确定𝐾值:用户必须提前指定簇的数量𝐾值,而这个值的选择往往没有明确的指导。不恰当的𝐾值会导致糟糕的聚类结果。


- 对初始簇中心敏感:K-means 的结果依赖于初始簇中心的选择。不同的初始位置可能导致不同的最终聚类结果,甚至陷入局部最优。
- 对异常值敏感:由于簇中心是均值,少数异常值会显著影响簇中心的位置,从而扭曲聚类结果。
- 难以处理非凸形状的簇:K-means 倾向于发现球形或类似球形的簇。对于月牙形、环形等非凸形状的簇,它的效果较差。
- 对数据尺度敏感:如果数据特征的尺度差异很大,欧几里得距离会偏向于尺度大的特征。因此,通常需要对数据进行归一化处理。
3. K-means 的应用场景
- 客户细分:根据购买行为、消费习惯等将客户分成不同群体,以便进行精准营销。
- 图像分割:将图像中的像素点根据颜色或纹理相似性进行聚类,从而实现图像分割。
- 文档聚类:将相似主题的文档分组,有助于信息检索和整理。
- 异常检测:将正常数据点聚类后,远离任何簇中心的数据点可以被视为异常值。
- 推荐系统:通过对用户或物品进行聚类,可以为用户推荐同一簇内的物品。
参考资料:
- 《机器学习》周志华
- K-means 笔记(三)数学原理
- K-means 怎么选 K?
- 【机器学习】K-means
- 明可夫斯基距离
浙公网安备 33010602011771号