K-means 是常用的基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大,属于无监督学习方法。在K-Means算法中,簇的个数K是一个超参数,需要人为输入来确定。K-Means的核心任务就是根据设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。

1、算法步骤

  1. 选择初始化的k个样本作为初始聚类中心;
  2. 针对数据集中每个样本计算它到k个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
  3. 针对每个类别重新计算它的聚类中心(所有样本的质心);
  4. 重复上面 2 3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化、质心不变等)。

2、三要素

  从K-Means的算法流程中可以发现,k值的选择、初始质心点、中止条件对分类结果的影响较大。

(1)k值选择

  K 值的选取对 K-means 影响很大,这也是 K-means 算法调优的重点,常见的选取 K 值的方法有:手肘法、Gap statistic 方法。

  • 手肘法的核心指标是SSE(sum of the squared errors,误差平方和),寻找k值与SSE关系图的拐点。
  • Gap statistic计算随机样本的损失和实际样本的损失之差,Gap取得最大值所对应的K值就是最佳簇数。

(2) 初始化质心

  初始质心放置的位置不同,聚类的结果很可能也会不一样,一个好的质心选择可以让K-Means避免更多的计算,让算法收敛稳定且更快。在之前讲解初始质心的放置时,是采用“随机”的方法在样本点中抽取k个样本作为初始质心。常见的改进算法有k-Means++。

(3) 中止条件(收敛)

  k-means是基于欧氏距离的聚类算法,根据上诉算法描述也可以知道**k-means的目标就是最小化各个类别中点到中心点的距离。**基于这个目标,k-means的中止条件基本上集中在以下几个里面:

  • 没有(或最小数目)对象被重新分配给不同的聚类:所有对象都分配到了最佳类别。
  • 没有(或最小数目)聚类中心再发生变化:已经找到最佳聚类中心。
  • 误差平方和局部最小。
  • 迭代次数:当数据量较大的时候,聚类中心、误差平方和收敛会比较慢,这时候就需要设定一定的迭代次数,防止程序一直运行无法终止。

3 k-Means算法调优

  针对 K-means 算法的缺点,我们可以有很多种调优方式:如数据预处理(去除异常点),合理选择 K 值,高维映射等。

3.1 数据预处理

  K-means 的本质是基于欧式距离的数据划分算法,均值和方差大的维度将对数据的聚类产生决定性影响。所以需要对数据做归一化处理(简单理解为统一单位)。常见的数据预处理方式有:数据归一化,数据标准化。
  离群点或者噪声数据会对均值产生较大的影响,导致中心偏移,因此还需要对数据进行异常点检测。

3.2 合理选择k值

  K 值的选取对 K-means 影响很大,这也是 K-means 最大的缺点,常见的选取 K 值的方法有:手肘法、Gap statistic 方法。(见2中的k值选择)

3.3 初始值选取

  (见2中初始化质心)K-Means++,选择离已选中心点最远的点。

3.4 采用核函数

  面对非凸的数据分布形状时可以引入核函数来优化,这时算法又称为核 K-means 算法,是核聚类方法的一种。

K-Means算法解析相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  3. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  4. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

  5. 视觉激光融合——VLOAM / LIMO算法解析

    视觉激光融合--VLOAM / LIMO算法解析 视觉激光融合--VLOAM / LIMO算法解析 1. VLOAM算法 1.1 总体框架 1.2 视觉里程计 1.3 激光里程计 1.4 实验结果 2 ...

  6. AI学习笔记(七)图像滤波器、OpenCV算法解析

    AI学习笔记之图像滤波器.OpenCV算法解析 图像滤波器 图像噪声 噪声的产生 信噪比 高斯噪声 椒盐噪声 其他噪声 图像滤波 滤波的目的 滤波的要求 各种滤波器 均值滤波 中值滤波 最大最小值滤波 ...

  7. 回归算法分类,常用回归算法解析

    回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...

  8. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...

  9. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

  10. 刻意练习:机器学习实战 -- Task01. K邻近算法

    背景 这是我们为拥有 Python 基础的同学推出的精进技能的"机器学习实战" 刻意练习活动,这也是我们本学期推出的第三次活动了. 我们准备利用8周时间,夯实机器学习常用算法,完成 ...

最新文章

  1. Share一个整理美化JavaScript代码的在线工具
  2. 活动目录系列之十:活动目录数据库的维护
  3. Java连接数据库(1)
  4. SAP新总账下的利润中心内部转移定价
  5. fabric sdk php,基于 Fabric-SDK-Go 的Web项目实战之使用Fabric-SDK-Go满足依赖
  6. C语言开发笔记(七)const和指针
  7. es6 super关键字
  8. 伪代码 嵌套循环_大学开始,跟着别人的代码敲对自己编程提高有用吗?
  9. 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
  10. python 如何加密自己的脚本
  11. 利用drozer进行Android渗透测试
  12. python中home定义是什么_关于python中的module你需要了解的
  13. 如何设计会员体系中心
  14. socket php建立聊天室,PHP搭建socket聊天室
  15. Excel换行显示的几种方法,你知道吗?
  16. java中怎么输入中文_MultiMC下载-MultiMC中文实用版 v1.0
  17. 新手预算2000元左右买什么吉他好?高性价比单板民谣吉他推荐
  18. FPGA的UART信息回显
  19. XP系统如何连接Win10共享打印机--win10专业版
  20. lstm预测股票_股票相关性与lstm预测误差

热门文章

  1. 移动机器人——运动模型
  2. CMD哈希工具certutil -hashfile
  3. Excel按照模板导出并下载
  4. opencv Mser的用法
  5. 2.3.Josephus_problem_bidirectional 双向约瑟夫问题
  6. CITECT HMI添加周期任务的方法
  7. 雅克比矩阵 Jacobi matrix
  8. 死磕Java——ReentrantLock
  9. 通过Windows版jigdo下载debian10.4dvd镜像
  10. 多组两两比较用什么检验方法_多组均数两两比较时,若不用q检验而用t检验,则:...