K-means(K均值聚类算法)算法笔记

K-means 算法,是比较简单的无监督的算法,通过设定好初始的类别k,然后不断循环迭代,将给定的数据自动分为K个类别。事实上,大家都知道K-means是怎么算的,但实际上,它是GMM(高斯混合模型)的一个特例,其而GMM是基于EM算法得来的,所以本文,将对K-means 算法的算法思想进行分析。

算法流程

K-means 算法的算法流程非常简单,可以从下图进行讲解

(图来自:https://www.cnblogs.com/txx120/p/11487674.html)

将上图的所有点表示成,假设我们将类别k设为2, 那么在给定这些点的同时,我们要求出每个点的类别,以及最终的中心点

首先,随机生成两个中心点,然后以一下流程进行:

1.根据设定的两个中心点,将所有的和所有的进行距离计算,并根据最近距离分配类别。

2.所有的分配好类别之后,针对每个类别,对该类别的所有点进行中心点计算,并更新所有中心点

重复以上过程,直至所有中心点,不在变更。

目标函数和分析

通过以上过程,其实可以看到,K-means 其实在求两个东西:

1.每个点到底属于哪个类别

2.每个中心点的坐标

根据上述,我们可以写出K-means 的目标函数:

其中,(假设K=2)是上述要求的中心点,而是其中的隐变量(每个所对应的类别,起初我们是不知道的)。和上述定义的一样,表示的是,第i个样本所对应的类别,如果属于第k个类别,那么,而其他的都等于0,这里你可以理解为一个one-hot 编码,这样做也是为了方便描述目标函数。进一步进行解释,就是你可以认为有一个“类别矩阵”的每一行,对应的就是每个样本的类别向量。也即(假设此时类别K=2,且这时属于第二类)。

通过上面的介绍,我们能够很明显看到EM算法的影子在里面,首先,对于每个类别,就是对应的隐变量(我们并不知道每个类属于哪个类别)。其次是中心点,就是我们所要求的参数。

(EM算法可以参考https://blog.csdn.net/Willen_/article/details/105004785)

1.通过首先对预设中心点,即假设中心点已知,来求每个点的类别,所以相当于E步,求取隐变量的期望

2.其次,在确定隐变量后,再对所求中心点进行更细 ,即M步,即最大似然估计,也就是最小化目标函数。

通过如此往复的计算,最后得到结果。

为什么说K-means 是GMM的特例呢?

GMM是严格意义上的隐变量模型,它从EM进行推导是能直接推的,但是K-means算法不行,没有严格意义上的证明。

K-means 定义了每个点,有严格意义的类别。而GMM是根据对每个点进行一些概率的估计,即可能某个点,有0.3的概率属于第一个高斯模型,有0.4的概率属于第二个高斯模型,有0.3的概率属于第三个高斯模型,所以其对于每个点的分类,比较“soft”。

欢迎交流,批评指正。

K-means(K均值聚类算法)算法笔记相关推荐

  1. Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法

    聚类的分割 1.K-均值聚类 (1)K-均值聚类介绍 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心 ...

  2. 机器学习算法之K-means(K均值聚类)算法

    聚类 聚类,简单来说,就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好.它是一种无监督的学习(Unsupervised Learning)方法,不需 ...

  3. 模糊聚类的代码实现python_Fuzzy C-Means(模糊C均值聚类)算法原理详解与python实现...

    目录 模糊理论 Fuzzy C-Means算法原理 算法步骤 python实现 参考资料 本文采用数据集为iris,将iris.txt放在程序的同一文件夹下.请先自行下载好. 模糊理论 模糊控制是自动 ...

  4. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  5. 聚类之K均值聚类和EM算法

    这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...

  6. 机器学习实战-61:K均值聚类算法(K-Means)

    K均值聚类算法(K-Means) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是聚类(clust ...

  7. pythonk均值实现_python实现k均值算法示例(k均值聚类算法)

    简易完成平面图的点K平均值剖析,应用欧几里得间距,并且用pylab展现. 编码以下: import pylab as pl #calc Euclid squire def calc_e_squire( ...

  8. python机器学习案例系列教程——k均值聚类、k中心点聚类

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...

  9. 基于K均值聚类的葡萄酒品种判别

    特别注意:主要思路.程序和分析过程来源于:https://www.kaggle.com/xvivancos/tutorial-clustering-wines-with-k-means.本文在此基础上 ...

  10. spss实现k均值聚类

    机器学习中的k均值聚类属于无监督学习,所谓k指的是簇类的个数,也即均值向量的个数.算法初始状态下,要根据我们设定的k随机生成k个中心向量,随机生成中心向量的方法既可以随机从样本中抽取k个样本作为中心向 ...

最新文章

  1. 专题 13 IPC之信号量
  2. 主定理(master theorem)学习小记
  3. 1380C. Create The Teams
  4. python模拟浏览器请求的库_基于Python模拟浏览器发送http请求
  5. L1-046 整除光棍 (20 分)567
  6. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...
  7. geoserver rest 导入shape文件错误
  8. selenium--python如何定位一组元素并返回文本值
  9. 论文总结与展望怎么写?
  10. 方正璞华研发的社保股权管理系统初见成效
  11. 一日一技:Python + Excel——飞速处理数据分析与处理
  12. 110 AddressBook
  13. mysql migration 使用_DbMigration的使用方法
  14. 尺寸公差分析尺寸链计算软件:新能源电池行业—模组散热系统之弹簧长度计算
  15. Ubuntu下GloVe中文词向量模型训练
  16. Tableau数据分析-Chapter07多边形地图和背景地图
  17. 多任务学习MTL-MMOE
  18. 计算机的发展与什么息息相关,第一单元第二课《计算机的发展与应用》.doc
  19. unity撤销上一步_Unity3D撤回命令开发详解|chu
  20. 经典面试题扔鸡蛋(Google面试题附带LeetCode例题)

热门文章

  1. 六、硬盘全盘MBR转GPT格式化(注意备份全盘重要数据)
  2. Android系统服务Fuzz测试
  3. 十进制数转换为十六进制数_十进制数制到十六进制数制的转换
  4. jdbc:oracle:thin:@192.168.3.98:1521:orcl(简单介绍)
  5. STM32库函数详解----(外部中断/事件控制器 EXTI)
  6. 多目视频跟踪问题中的物体表示方法探究
  7. dw测试服务器打不开文件,dw重新设置测试服务器
  8. YY--MM--DD格式的日期加一天
  9. Spring循环依赖详解
  10. ESET NOD32官方活动送一年激活码(9月4号更新)