一文详尽系列之K-means算法
点击上方“Datawhale”,选择“星标”公众号
第一时间获取价值内容
算法
有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个村民又去了离自己最近的布道点……就这样,牧师每个礼拜更新自己的位置,村民根据自己的情况选择布道点,最终稳定了下来。
- 选择初始化的 k 个样本作为初始聚类中心 ;
- 针对数据集中每个样本 计算它到 k 个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
- 针对每个类别 ,重新计算它的聚类中心 (即属于该类的所有样本的质心);
- 重复上面 2 3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)。
优缺点
- 容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了;
- 处理大数据集的时候,该算法可以保证较好的伸缩性;
- 当簇近似高斯分布的时候,效果非常不错;
- 算法复杂度低。
- K 值需要人为设定,不同 K 值得到的结果不一样;
- 对初始的簇中心敏感,不同选取方式会得到不同结果;
- 对异常值敏感;
- 样本只能归为一类,不适合多分类任务;
- 不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类。
算法调优与改进
- 随机选取一个中心点 ;
- 计算数据到之前 n 个聚类中心最远的距离 ,并以一定概率 选择新中心点 ;
- 重复第二步。
收敛证明
每次确认中心点以后重新进行标记
对应 EM 算法中的 E 步 求当前参数条件下的 Expectation
。而 根据标记重新求中心点
对应 EM 算法中的 M 步 求似然函数最大化时(损失函数最小时)对应的参数
。
参考
一文详尽系列之K-means算法相关推荐
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- python机器学习案例系列教程——K最近邻算法(KNN)、kd树
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 K最近邻简介 K最近邻属于一种估值或分类算法,他的解释很容易. 我们假设一个人的优秀成为设定为1.2.3.4.5.6.7.8.9.10 ...
- 机器学习算法系列之K近邻算法
本系列机器学习的文章打算从机器学习算法的一些理论知识.python实现该算法和调一些该算法的相应包来实现. 目录 K近邻算法 一.K近邻算法原理 k近邻算法 通俗解释 近邻距离的度量 k值的选择 KN ...
- Python反反爬系列(一)----K近邻算法与CSS动态字体加密
声明:文章仅源自个人兴趣爱好,不涉及他用,侵权联系删. 网站不好直接给出,给出论坛无法过审,观看破解过程即可. 1.字体反爬 字体反爬也就是自定义字体加密映射,通过调用自定义的字体文件来渲染网页中的文 ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- 一文详尽系列之EM算法
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 EM 算法,全称 Expectation Maximization Algorithm ...
- 一文详尽系列之逻辑回归
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 模型介绍 Logistic Regression 是一个非常经典的算法,其中也包含了非 ...
- 一文详尽系列之模型评估指标
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针 ...
- 一文详尽之支持向量机算法!
Datawhale干货 作者:小一,Datawhale优秀学习者 寄语:本文介绍了SVM的理论,细致说明了"间隔"和"超平面"两个概念:随后,阐述了如何最大化间 ...
最新文章
- oracle12c审计功能,oracle 12c开启关闭统一审计
- NTU 课程笔记 CV6422 Statistical Methods Applications (1) 基本统计知识
- 二项分布均值和方差的简单推导
- canvas画布属性globalAlpha 和 createRadialGradient函数出现的设置问题
- 【深度学习】NetAug(网络增强)—Dropout的反面
- 每日两SQL(6),欢迎交流~
- .NET Worker Service 作为 Windows 服务运行及优雅退出改进
- 手把手教用XNA开发winphone7游戏(三)
- 【Python】Matplotlib绘制极坐标螺旋线图
- 昆仑通态触摸屏数据转发上传_说说昆仑通态(MCGS)的数组功能
- C++语音识别接口快速入门(Microsoft Speech SDK)
- hcia第五天 结课
- C++二叉树的 前中后序遍历(学C++必看必会)深度优先遍历详解
- CentOS8 离线安装 汉语拼音
- lisp princ详解_LISP - 输入和输出(Input Output)
- 阿里研究院副院长:数字化转型的十个本质
- 关于MYSQL:什么是MySQL?为什么用MySQL?
- NeHe OpenGL第二十九课:Blt函数
- 链表---给定一个排序链表,删除所有重复的元素每个元素只留下一个
- input输入框只能输入整数