ML基本知识(十五)Kmeans

核心思想

Kmeans是一个无监督的问题,想要达到的目标是把数据聚成k类。在说算法之前必须说一下Kmeans的理论基础,也就是能够进行Kmeans操作的前提是每一个簇中的数据都服从高斯分布,也就是说数据是服从混合高斯模型的,而且假设每一个高斯模型的方差都是相同的,这样才能够保证结果是正确的,即对于每一个点的概率如下,
x i ∼ N ( μ i , σ ) x_i \sim N(\mu_i, \sigma) xiN(μi,σ)

而对于所有的数据,它的似然概率为:
∏ j = 1 K ∏ i = 1 N j ( 1 2 π σ e − ( x j i − μ j ) 2 2 σ 2 ) \prod_{j=1}^{K}\prod_{i=1}^{N_j}(\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_{ji}-\mu_j)^2}{2\sigma^2}}) j=1Ki=1Nj(2π σ1e2σ2(xjiμj)2)

要想上述取值最大,取log再取符号就得让如下公式最小,
∑ j = 1 K ∑ i = 1 N j ( x j i − μ j ) 2 \sum_{j=1}^{K}\sum_{i=1}^{N_j}(x_{ji}-\mu_j)^2 j=1Ki=1Nj(xjiμj)2
而求解的结果为
μ j = 1 N j ∑ i = 1 N j x j i \mu_j = \frac{1}{N_j}\sum_{i=1}^{N_j}x_{ji} μj=Nj1i=1Njxji
这正是Kmeans的原理所在,因而如下的每一步的类别中心都是一个类中数据的几何平均,这样才能保证似然概率最大。

模型概述

首先随机选择k个样本作为初始k个类的中心,之后计算每个样本到这k个中心的距离,取最小距离的那个类作为这个样本的标记,这样就会得到一个初始化的聚类,之后把每一个类的所有样本的几何中心作为这一类的新的中心,之后再去计算每个样本点到新中心的距离,如果达到某种停止条件(MSE或者迭代次数),则终止操作,否则接着重复上述过程直到达到停止条件。整个过程类似EM算法,流程如下:

E步:确定k个类中心后,计算出每个样本的所属类别。
M步:利用每一类样本求出新的类中心。

Kmeans缺点

  1. 初始值选取很敏感。
  2. 只适用于簇呈圆球状,对于带状或者条状的分布是无效的,这是由于它的概率假设导致的。
  3. K值需要预先设定。

Kmeans++

由于Kmeans对初始值的选取是很敏感的,因而需要单独对初值的选取做文章,因而有了Kmeans++。

首先选择一个样本作为第一个簇中心,之后再计算其他样本到这个样本的距离,并且给其他样本赋权重(距离越大权重越大),而后在这些样本中选择一个样本作为下一个簇的中心,权重越大选到的概率越大。

选择一个数据作为第二个簇中心,而后再来计算剩下的样本到其最近簇中心的距离,距离越大权重越大,之后再随机选择一个样本作为第三个簇中心,这样反复选出k个数据就选取好了k个初始值,最核心的问题是如何实现权重越大,选取的概率越高这一实现。

首先计算每个点到最近簇的距离,放到一个数组中,而后把所有的距离都加起来,得到sum(D(x)), 而后用sum(D(x))乘以一个[0, 1)的随机数, 即sum(D(x))*random=Random, 之后从左向右遍历之前计算好的距离数组,每遍历一个元素,Random-=D(x), 直到Random小于等于0,这时选取当前元素作为新的簇中心。

Kmeans和KNN的区别

KNN

  1. 分类算法
  2. 监督学习
  3. 数据集是带Label的数据
  4. 没有明显的训练过程
  5. K值含义 - 要给一个样本X赋予类别标签,从数据集中在X附近找离它最近的K个数据点,将它划分为归属于类别最多的一类。

Kmeans

  1. 聚类算法
  2. 非监督学习
  3. 数据集是无Label,杂乱无章的数据
  4. 有明显的训练过程
  5. K值含义- K是事先设定的数字,将数据集分为K个簇,需要依靠人的先验知识

参考

  1. Kmeans和KNN的区别
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值