首页 > 编程语言 >K-means(K均值聚类算法)算法笔记

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

时间:2023-06-09 15:05:31浏览次数:49  
标签:每个 GMM means 算法 中心点 聚类 类别


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

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

算法流程

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


K-means(K均值聚类算法)算法笔记_最大似然估计

将上图的所有点表示成

K-means(K均值聚类算法)算法笔记_机器学习_02

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

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


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

1.根据设定的两个中心点,将所有的

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

和所有的

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

进行距离计算,并根据最近距离分配类别。2.所有的

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

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

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


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

目标函数和分析

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

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

K-means(K均值聚类算法)算法笔记_机器学习_08

2.每个中心点的坐标

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

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

K-means(K均值聚类算法)算法笔记_最大似然估计_10

其中

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

,(假设K=2)是上述要求的中心点,而

K-means(K均值聚类算法)算法笔记_距离计算_12

是其中的隐变量(每个

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

所对应的类别,起初我们是不知道的)。和上述定义的一样,

K-means(K均值聚类算法)算法笔记_距离计算_12

表示的是,第i个样本所对应的类别,如果

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

属于第k个类别,那么

,而其他的都等于0,这里你可以理解为一个one-hot 编码,这样做也是为了方便描述目标函数。进一步进行解释,就是你可以认为有一个“类别矩阵”

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


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

的每一行,对应的就是每个样本的类别向量。也即

(假设此时类别K=2,且

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

这时属于第二类)。通过上面的介绍,我们能够很明显看到EM算法的影子在里面,首先,对于每个类别,

K-means(K均值聚类算法)算法笔记_距离计算_12

就是对应的隐变量(我们并不知道每个类属于哪个类别)。其次是中心点,

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

就是我们所要求的参数。


1.通过首先对预设中心点,即假设

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

中心点已知,来求每个点的类别,所以相当于E步,求取隐变量

K-means(K均值聚类算法)算法笔记_距离计算_12

的期望2.其次,在确定隐变量

K-means(K均值聚类算法)算法笔记_距离计算_12

后,再对所求中心点

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

进行更细 ,即M步,即最大似然估计,也就是最小化目标函数。

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

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

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

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

欢迎交流,批评指正。

 

标签:每个,GMM,means,算法,中心点,聚类,类别
From: https://blog.51cto.com/u_11384719/6447876

相关文章

  • EM算法笔记
    EM算法笔记背景    EM(Expectation-Maximum)算法也称期望最大化算法,是最常见的隐变量估计方法,它的思想在很多算法上有所体现。例如高斯混合模型(Gaussianmixturemodel,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断、还有VAE、GAN等等。    在机器学习算......
  • RALB负载均衡算法的应用 | 京东云技术团队
    一、背景搜索推荐算法架构为京东集团所有的搜索推荐业务提供服务,实时返回处理结果给上游。部门各子系统已经实现了基于CPU的自适应限流,但是Client端对Server端的调用依然是RR轮询的方式,没有考虑下游机器性能差异的情况,无法最大化利用集群整体CPU,存在着Server端CPU不均衡的问题。京......
  • 密码学(1):常见算法分类
    前言有任何问题欢迎提出,便于及时修正......
  • 使用Kmeans对Word2vec的输出做聚类
    Word2vec会产出每个词语的权重向量使用这个向量,可以直接对所有的词语聚类以下代码,以word2vec的model作为输入,进行kmeans训练,同时进行K的迭代计算,选出WSSSE最小的K值Scala *将word2vec的结果,作为kmeans的输入进行聚类;进行K的多次迭代,选出WSSSE最小的K*@paramspark......
  • 0010.有监督学习之K-均值聚类
    一、聚类分析概述1.簇的定义2.常用的聚类算法二、K-均值聚类算法1.K-均值算法的python实现1.1导入数据集1.2构建距离计算函数1.3编写自动生成随机质心的函数1.4编写K-Means聚类函数2.算法验证3.误差平方和SSE计算三、模型收敛稳定性探讨四、二分K-均值算法1......
  • 0011.有监督学习之Apriori算法
    一、关联分析概述1.关联分析2.频繁项集的评估标准2.1支持度2.2置信度2.3提升度3.关联规则发现二、Apriori算法原理三、使用Apriori算法来发现频繁项集1.生成候选项集2.项集迭代函数四、Apriori关联规则挖掘1.挖掘关联规则的流程2.关联规则的python实现五......
  • 【技术积累】算法中的贪心算法【二】
    如何证明一个问题可以使用贪心算法解决?判断一个问题是否可以使用贪心算法解决,通常需要满足两个条件:贪心选择性质:问题的最优解可以通过一系列局部最优解得到。也就是说,在每一步选择中,都选择当前最优解,而不考虑之后的影响。最优子结构性质:问题的子问题的最优解可以推导出原问题......
  • 3. 密码算法和密码消息的ASN.1描述(openssl应用举例)
    密码算法和密码消息的ASN.1描述(openssl应用举例)目录密码算法的描述密码算法的ASN.1格式密码算法的OID密码消息的描述密码消息的ASN.1描述通用内容消息的格式Data的格式SignedData的格式SignerInfo的格式EnvelopedData的格式SignedAndEnvelopeDdata的格式Dige......
  • 【技术积累】算法中的贪心算法【一】
    贪心算法是什么贪心算法是一种常见的算法思想,主要应用于优化问题中,特别是在计算机科学和运筹学领域中。贪心算法的核心思想是每一步都选择当前最好的选项,从而得到全局最优解。贪心算法通常包括以下步骤:确定问题的最优子结构:即在问题中寻找那些可以自行解决的子问题。开始......
  • 【数据结构与算法】算法的时间复杂度和空间复杂度
    前言关于时空复杂度的分析,是每一个程序员的必备技能,本文将带你了解什么是时空复杂度?熟知怎样去计算一个算法的时间复杂度和空间复杂度。1.算法效率1.1.如何衡量一个算法的好坏如何衡量一个算法的好坏呢?我们先看一段代码:intFib(intN){if(N<3)return1;......