K-Means算法解析
K-means 是常用的基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大,属于无监督学习方法。在K-Means算法中,簇的个数K是一个超参数,需要人为输入来确定。K-Means的核心任务就是根据设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。
1、算法步骤
- 选择初始化的k个样本作为初始聚类中心;
- 针对数据集中每个样本计算它到k个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
- 针对每个类别重新计算它的聚类中心(所有样本的质心);
- 重复上面 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算法解析相关推荐
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- k均值聚类算法(K Means)及其实战案例
算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...
- K means 图片压缩
k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...
- 视觉激光融合——VLOAM / LIMO算法解析
视觉激光融合--VLOAM / LIMO算法解析 视觉激光融合--VLOAM / LIMO算法解析 1. VLOAM算法 1.1 总体框架 1.2 视觉里程计 1.3 激光里程计 1.4 实验结果 2 ...
- AI学习笔记(七)图像滤波器、OpenCV算法解析
AI学习笔记之图像滤波器.OpenCV算法解析 图像滤波器 图像噪声 噪声的产生 信噪比 高斯噪声 椒盐噪声 其他噪声 图像滤波 滤波的目的 滤波的要求 各种滤波器 均值滤波 中值滤波 最大最小值滤波 ...
- 回归算法分类,常用回归算法解析
回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...
- 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集
各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...
- 刻意练习:机器学习实战 -- Task01. K邻近算法
背景 这是我们为拥有 Python 基础的同学推出的精进技能的"机器学习实战" 刻意练习活动,这也是我们本学期推出的第三次活动了. 我们准备利用8周时间,夯实机器学习常用算法,完成 ...
最新文章
- Share一个整理美化JavaScript代码的在线工具
- 活动目录系列之十:活动目录数据库的维护
- Java连接数据库(1)
- SAP新总账下的利润中心内部转移定价
- fabric sdk php,基于 Fabric-SDK-Go 的Web项目实战之使用Fabric-SDK-Go满足依赖
- C语言开发笔记(七)const和指针
- es6 super关键字
- 伪代码 嵌套循环_大学开始,跟着别人的代码敲对自己编程提高有用吗?
- 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
- python 如何加密自己的脚本
- 利用drozer进行Android渗透测试
- python中home定义是什么_关于python中的module你需要了解的
- 如何设计会员体系中心
- socket php建立聊天室,PHP搭建socket聊天室
- Excel换行显示的几种方法,你知道吗?
- java中怎么输入中文_MultiMC下载-MultiMC中文实用版 v1.0
- 新手预算2000元左右买什么吉他好?高性价比单板民谣吉他推荐
- FPGA的UART信息回显
- XP系统如何连接Win10共享打印机--win10专业版
- lstm预测股票_股票相关性与lstm预测误差
热门文章
- 移动机器人——运动模型
- CMD哈希工具certutil -hashfile
- Excel按照模板导出并下载
- opencv Mser的用法
- 2.3.Josephus_problem_bidirectional 双向约瑟夫问题
- CITECT HMI添加周期任务的方法
- 雅克比矩阵 Jacobi matrix
- 死磕Java——ReentrantLock
- 通过Windows版jigdo下载debian10.4dvd镜像
- 多组两两比较用什么检验方法_多组均数两两比较时,若不用q检验而用t检验,则:...