k-means算法基本原理:

(1) 随机选取k个中心点;

(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;

(3) 更新中心点为每类的均值;

(4) j<-j+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数,误差不变.

空间复杂度o(N)   时间复杂度o(I*K*N)

其中N为样本点个数,K为中心点个数,I为迭代次数

  • 手肘法
  • Elbow method就是“肘”方法,对于n 个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中心的距离的平方和,可以想象到这个平方和是会逐渐变小的,直到k==n 时平方和为0,因为每个点都是它所在的簇中心本身。但是在这个平方和变化过程中,会出现一个拐点也即“肘”点,下图可以看到下降率突然变缓时即认为是最佳的k值。
  • 我们知道K-means是以最小化样本与质点平方误差作为目标函数,将每个簇的质点与簇内样本点的平方距离误差和称为畸变程度(distortions),那么,对于一个簇,它的畸变程度越低,代表簇内成员越紧密,畸变程度越高,代表簇内结构越松散。 畸变程度会随着类别的增加而降低,但对于有一定区分度的数据,在达到某个临界点时畸变程度会得到极大改善,之后缓慢下降,这个临界点就可以考虑为聚类性能较好的点。
  • 轮廓系数法
  • 轮廓系数(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。该值处于-1~1 之间,值越大,表示聚类效果越好。具体计算方法如下:
  • 对于每个样本点i ,计算点i 与其同一个簇内的所有其他元素距离的平均值,记作a(i) ,用于量化簇内的凝聚度。
  • 选取i 外的一个簇b ,计算ib 中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作b(i) ,即为i 的邻居类,用于量化簇之间分离度。
  • 对于样本点i ,轮廓系数s(i) = (b(i)–a(i))/max{a(i),b(i)} 。计算所有i 的轮廓系数,求出平均值即为当前聚类的整体轮廓系数,度量数据聚类的紧密程度。从上面的公式,不难发现若s(i) 小于0,说明i 与其簇内元素的平均距离小于最近的其他簇,表示聚类效果不好。如果a(i) 趋于0,或者b(i) 足够大,即a(i)<<b(i) ,那么s(i) 趋近与1,说明聚类效果比较好。
  • Calinski-Harabasz准则
  • 其中SSB是类间方差,  ,m为所有点的中心点,mi为某类的中心点;SSW是类内方差,;(N-k)/(k-1)是复杂度;
  • 比率越大,数据分离度越大.

简述k-means算法基本原理,并针对如何自适应确定k值相关推荐

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

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

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

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

  3. 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。

    1.运行结果:(注:图中方块标注的点为随机选取的初始样本点) k=2时: 本次选取的2个初始向量为[[0.243, 0.267], [0.719, 0.103]] 共进行61轮 共耗时0.10s k= ...

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

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

  5. K means 图片压缩

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

  6. 为了联盟还是为了部落 | K means

    1. 问题 人类有个很有趣的现象,一群人在一起,过一段时间就会自发的形成一个个的小团体.好像我们很擅长寻找和自己气质接近的同类.其实不只是人类,数据也有类似情况,这就是聚类(Clustering)的意 ...

  7. 机器学习第七章之K近邻算法

    K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...

  8. 机器学习:K近邻算法(K-NN)

    K近邻(K-Nearest Neighbor, KNN)是一种最经典和最简单的有监督学习方法之一,它非常有效而且易于掌握. 1 K近邻算法概述 一个样本与数据集中的k个样本最相似, 如果这k个样本中的 ...

  9. k近邻算法C++二维情况下的实现

    k近邻算法C++二维实现 这是一个k近邻算法的二维实现(即K=2的情况). #include <cstdio> #include <cstring> #include < ...

最新文章

  1. 剑指offer青蛙跳台阶问题
  2. SAP MM ME57界面看到的供应源跟Source List主数据不一致?
  3. 【剑道之道】亦是生存之道
  4. 跟着鸟哥学Linux系列笔记1
  5. Prufer序列相关
  6. python学习-装饰器(可变参装饰器、完善装饰器)
  7. RabbitMQ控制台详解
  8. 【水】对于算法的个人理解
  9. python 报错traceback-python-traceback捕获并打印异常
  10. DAO层、ENTITY层、SERVICE层、CONTROLLER层
  11. 使用CleanMyMac的空间透镜功快速决策清理垃圾
  12. Rabbitmq 延迟队列
  13. 硅谷产品联盟合伙人:每一个伟大产品的背后
  14. ConfigUtil.class.getResource
  15. linux local root exploit,Linux非交互环境下本地提权思路与反思 linux localroot exploit
  16. 【转】Photoshop 用户名.组织或序列号丢失或无效.应用程序无法继续.
  17. 马未都说收藏:陶瓷篇(6、7)宋代八大民窑
  18. WhatsApp使用教程
  19. 微信公众号订阅通知(go+vue)
  20. 【活动推荐】美团外卖两千万日订单背后的客户端技术架构

热门文章

  1. GDC2016【For Honor-荣耀战魂】的次世代动画技术
  2. [转]内容匹配广告投放技术
  3. oracle存储过程--存量数据批量刷入
  4. 苹果x屏幕出现一条绿线_苹果屏幕出现条纹换屏幕有用吗?检测过后才恍然大悟!_...
  5. c和e语言,e-c c-e(英汉语言对比).ppt
  6. (CAD转JPG、PDF、DXF、EMF)CAD转换全攻略,教你一步完成批量转换!
  7. html+css3 学生信息表
  8. android今日头条点赞效果,类似今日头条点赞长按动画效果-CAEmitterLayer
  9. 华为P30发布争议不断,红米总裁发文嘲讽,是实话还是狗急跳墙?
  10. 从《我是歌手》学习淘宝运营