机器学习常识 8: kMeans

news/2024/11/29 0:50:09/

摘要: k k kMeans 是数据分布未知时最合适的聚类算法.

1. 基本思想

最大化簇的内聚性 (即同一簇的点距离较近), 最小化簇间的耦合性 (即不同簇的点距离较远).
其优化目标可以写为
min ⁡ ∑ i d ( x i , c ( x i ) ) , (1) \min \sum_i d(x_i, c(x_i)), \tag{1} minid(xi,c(xi)),(1)
其中 c ( x i ) c(x_i) c(xi) 是第 i i i 个对象 x i x_i xi 所处的簇的中心 (即将该簇所有点的特征值取平均获得的虚拟中心).

2. 算法

  • Step 1. (确定老大) 随机选择 k k k 个点作为中心点.
  • Step 2. (分派别) 对于任意对象, 计算它到这 k k k 个点的距离, 离谁最近, 就与它属于同一簇.
  • Step 3. (重新选择老大) 每个簇求虚拟中心, 将其作为老大.
  • Step 4. (判断是否收敛) 如果本轮的中心点与上一轮的中心点相同, 则结束; 否则转 Step 2.

3. 算法特点

  • k k kNN 的共同点在于, 都使用某个距离度量.
  • 涉及迭代, 因此比 k k kNN 复杂.
  • 初始点的选择会影响最终的结果. 很可能只收敛到局部最优解.
  • 适合"球型"数据. 即每一簇从三维的角度来看都像一个球. 而并不适合于有较多离群点的数据. 所谓离群点, 可以认为是指离所有聚类中心的都挺远的数据点. 它会对 k k kMeans 的重心计算产生较大影响.
  • 并不是在所有的数据集上, 都能很快收敛. 我试过的数据中, 有 50 轮都未收敛的, 干脆就凑合了.

4. 参数设置与距离度量

只有一个 k k k.
显然, k k k 越大, (1) 式的值就越小. 确定 k k k 值多大合适, 有可能比确定如何聚类更困难.
距离度量参见 k k kNN. 这方面两个算法确实相同.

5. 简单改进

  • 删除离群点.
  • 多次初始化聚类中心点, 选择 (1) 式最小化那个. 当数据集不大的时候, 局部最优解的个数并不多.

6. 常见误区

  • 不知道 k k kMeans 是有优化目标的 (反正我初学的时候就不知道).
  • 不知道 k k kMeans 仅保证局部最优.
  • 小瞧了 k k kMeans 的适应性 (与小瞧 k k kNN 同理).

http://www.ppmy.cn/news/104987.html

相关文章

Gradle使用教程完整分享【2023年更新】

Gradle是一个基于Apache Ant和Apache Maven概念的自动化构建工具。它是一个灵活、功能强大的构建工具,用于构建、测试和部署软件项目。 以下是Gradle的一些具体应用: 1. 项目构建:Gradle主要用于构建软件项目。它可以管理项目中的依赖关系、编…

PHPMySQL基础(二):通过PHP对MySQL进行增、删、改、查

PHP&MySQL基础(一):创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客 前面创建了一个数据库和表,并且用 mysqli()实例化了一个连接对象$link 这篇记一下怎么用实例化对象去对表进行一个增删改查操作 目录 一、连接数据库&#xf…

Flume实现Kafka数据持久化存储到HDFS

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

简洁架构之道_读书笔记

1. 编程范式 1.结构化编程 Bohm和jocopini证明了可以使用顺序结构、分支结构、循环结构构造出任何程序 goto是有害的 顺序结构、分支结构和循环结构均可以证明其正确性,并且用这三种结构可以构造出任何程序。那么这就意味着可以将模块可以按功能进行降解拆分为…

EMNLP - 征集系统演示

Call For System Demonstrations - EMNLP 2023 EMNLP 2023 系统演示计划委员会邀请演示计划的提案。演示范围从早期研究原型到成熟的生产就绪系统。特别感兴趣的是公开可用的开源或开放访问系统。鉴于自然语言处理领域的理论和应用研究的现状,我们还强烈鼓励展示技术…

java.awt.datatransfer.Clipboard剪切板复制粘贴String

java.awt.datatransfer.Clipboard剪切板复制粘贴String java.awt.Toolkit 是一个可用来获取操作剪切板的工具 Toolkit toolkit Toolkit.getDefaultToolkit(); 获得 tookit Clipboard systemClipboard toolkit.getSystemClipboard(); 获得操作系统级的剪切板 Toolkit toolk…

【SpringCloud——Docker】

一、什么是Docker 二、Docker的基本操作 1、Docker操作镜像 镜像名称一般由两部分组成:[repository]:[tag] 在没有指定tag时,默认是latest,代表最新版本的镜像。 1.1、启动Docker服务 systemctl start docker1.2、查看Docker运行状态 syst…

NLP基础知识(语法语义、LDA、N-gram、词嵌入)

文章目录 本节课大纲Hyper-simplified linguisticsTerm spotting handling negation, uncertaintyML to expand termspre-NN ML to identify entities and relationsLatent Dirichlet Allocation (LDA)Statistical Models of Language: Zipfs lawvector space embeddings base…