K-means 聚类算法学习
一、聚类算法概述
聚类是机器学习中的一种无监督学习方法,核心思想是将相似的样本划分到同一组(簇),而不依赖于预先给定的标签。与监督学习不同,聚类问题中没有明确的 “答案” 作为参考,其主要难点在于如何评估聚类效果以及合理调参。
二、距离度量
在聚类中,样本间的相似度通常通过距离来衡量,常用的距离度量方式有以下两种:
(一)欧式距离
欧式距离是最常见的距离度量方式,衡量的是多维空间中两个点之间的绝对距离。
二维空间公式:d 等于 x1 减 x2 的平方加上 y1 减 y2 的平方,整体开根号
三维空间公式:在二维基础上增加 z1 减 z2 的平方项,整体开根号
n 维空间公式:d 等于从 i=1 到 n,每个维度上 x1i 减 x2i 的平方和,整体开根号
特点:直观反映两点间的直线距离,适用于多数常规场景。
(二)曼哈顿距离
曼哈顿距离又称出租车距离,指两个点在标准坐标系上的绝对轴距总和。
平面上两点((x1,y1)\)与((x2,y2)\)的曼哈顿距离公式:d(i,j)=∣x1−x2∣+∣y1−y2∣
特点:更适合描述网格状空间中两点的实际移动距离(如城市中出租车的行驶路径)。
三、K-means 算法步骤
K-means 是最经典的聚类算法之一,其核心流程如下:
初始化:设定聚类簇数k,随机选择k个样本点作为初始聚类中心。
样本聚类:计算每个样本到各个聚类中心的距离,将样本指派到距离最近的中心所属的簇中,形成当前聚类结果。
更新中心:针对每个簇,计算簇内所有样本的均值,将该均值作为新的聚类中心。
迭代收敛:重复步骤 2 和 3,直到聚类中心不再明显变化(收敛)或达到最大迭代次数,输出最终聚类结果。
四、算法评估 ——CH 指标
CH 指标是评估聚类效果的常用指标,其计算基于类内紧密度和类间分离度:
类内紧密度:通过类中各点与类中心的距离平方和衡量。
类间分离度:通过各类中心点与数据集总中心点的距离平方和衡量。
特点:CH 值越大,表明簇内样本越紧密、簇间差异越明显,聚类效果越好。
五、K-means 算法的优缺点
(一)优点
原理简单直观,易于理解和实现。
计算效率高,处理大规模数据集时表现良好,复杂度与样本数量呈线性关系。
适用于常规分布的数据集,聚类效果稳定。
(二)缺点
需预先指定簇数k,而k的最优值往往难以确定。
对初始聚类中心的选择敏感,不同初始值可能导致不同聚类结果。
难以处理非凸形状、密度差异大的簇,对噪声和离群值较敏感。
六、代码实现相关工具
(一)数据集生成:make_blobs()
该函数用于生成适合聚类的模拟数据集,主要参数如下:
参数 | 说明 |
---|---|
| 数据样本点个数,默认值为 100 |
| 每个样本的特征数(数据维度),默认值为 2 |
| 类别数(簇的数量),默认值为 3 |
| 每个类别的方差,控制簇内样本的分散程度 |
| 聚类中心的取值范围,默认值为 (-10.0, 10.0) |
| 是否打乱数据,默认值为 True |
| 随机种子,用于固定生成的数据,便于结果复现 |
(二)聚类实现:KMeans()
该类用于执行 K-means 聚类算法,主要参数如下:
参数 | 说明 |
---|---|
| 聚类簇的数量(即k值) |
| 最大迭代次数,默认值为 300 |
| 算法运行次数(每次使用不同初始中心),默认值为 10 |
| 随机种子,控制初始中心的选择,保证结果可复现 |