【机器学习】机器学习的基本分类-无监督学习-K-Means聚类

K-Means 是一种基于划分的无监督学习算法,用于数据聚类任务,它通过迭代优化将数据分组为 k 个互斥的簇,使得每个簇内数据点的相似性最大化,而簇间的相似性最小化。它通过最小化簇内样本点到簇中心的距离平方和(即误差平方和,SSE)来完成聚类任务。


1. 算法原理

目标函数

K-Means 的目标是最小化以下目标函数:

  • k:簇的数量。
  • :第 i 个簇的集合。
  • :第 i 个簇的中心(质心)。
  • :样本点 x 到质心 的欧几里得距离。
步骤
  1. 初始化:随机选择 k 个初始质心。
  2. 分配样本点到最近的质心:将每个样本点分配到最近的簇中心,形成 k 个簇。
  3. 更新质心:计算每个簇中所有样本点的均值,作为新的簇中心。
  4. 迭代:重复步骤 2 和 3,直到簇中心不再发生显著变化或达到预设迭代次数。

2. 特点

优点
  1. 简单高效:算法容易理解和实现,适合中小型数据集。
  2. 快速收敛:在大多数情况下,K-Means 收敛速度较快。
缺点
  1. 需要指定 k:聚类数 k 需要预先指定,可能难以确定。
  2. 易受初始点影响:初始质心的选择可能导致不同的聚类结果。
  3. 对异常值敏感:异常点可能显著影响簇中心的位置。
  4. 仅适用于凸簇:不能有效处理非凸形状的簇。

3. 改进方法

  1. K-Means++ 初始化:通过优化初始质心选择,减少对初始点的敏感性。
  • 随机选择第一个质心。

  • 根据与已选质心的距离概率选择后续质心。

  • 应用标准 K-Means 算法。

  1. Mini-Batch K-Means:对大数据集进行小批量更新,提高效率。
  2. 层次聚类结合:先使用层次聚类生成 k 个簇,再进行 K-Means 优化。
  3. Elkan 算法:优化距离计算,加速收敛。

4. 确定 k 的方法

肘部法则 (Elbow Method)
  1. 计算不同 k 值下的误差平方和 (SSE)。
  2. 绘制 k-SSE 曲线,找到"肘部"点(即 SSE 的下降速度明显减缓的位置)。
  3. 该点对应的 k 值通常是最佳选择。
轮廓系数 (Silhouette Coefficient)

衡量聚类的质量:

  • a:样本点与同簇中其他点的平均距离。
  • b:样本点与最近簇中点的平均距离。

5. 实现 K-Means

Python 实现(使用 scikit-learn
python 复制代码
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# 生成数据
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=42)

# K-Means 聚类
kmeans = KMeans(n_init=10, n_clusters=4, random_state=42)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title('K-Means Clustering')
plt.show()

6. 应用场景

  1. 图像压缩:将像素颜色聚类到 k 个簇。
  2. 客户分群:根据消费行为对客户进行分组。
  3. 文本聚类:将文档划分为不同主题。
  4. 基因聚类:根据基因表达模式进行分组。
  5. 推荐系统:对用户或商品分组,提供个性化推荐。

7. 实验与结果分析

评价指标
  1. SSE (Sum of Squared Errors):衡量簇内误差,值越小越好,但可能会过拟合。
  2. 轮廓系数 (Silhouette Coefficient):衡量聚类效果,值越接近 1,聚类效果越好。
  3. Davies-Bouldin 指数:值越小越好,反映簇的分离程度。
  4. Calinski-Harabasz 指数:簇的分离性和紧凑性,值越大越好。

通过以上指标,可以综合评价聚类效果,选择最佳参数 k 和优化方法。


K-Means 是一种经典而高效的聚类算法,适合初学者和实际应用。通过改进方法和调参,可以应对不同类型的数据和应用场景。

相关推荐
qinyia37 分钟前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
昨日之日20063 小时前
Wan2.2-S2V - 音频驱动图像生成电影级质量的数字人视频 ComfyUI工作流 支持50系显卡 一键整合包下载
人工智能·音视频
纪元A梦3 小时前
贪心算法应用:化工反应器调度问题详解
算法·贪心算法
深圳市快瞳科技有限公司4 小时前
小场景大市场:猫狗识别算法在宠物智能设备中的应用
算法·计算机视觉·宠物
liulilittle4 小时前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
SEO_juper6 小时前
大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
人工智能·语言模型·自然语言处理·chatgpt·llm·seo·数字营销
攻城狮7号6 小时前
腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
人工智能·hunyuan-mt-7b·腾讯混元翻译模型·30个冠军
superlls6 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
zezexihaha6 小时前
从“帮写文案”到“管生活”:个人AI工具的边界在哪?
人工智能
算家云6 小时前
nano banana官方最强Prompt模板来了!六大场景模板详解
人工智能·谷歌·ai大模型·算家云·ai生图·租算力,到算家云·nano banana 提示词