K均值聚类

    K均值聚类又叫做(k-means算法)是属于无监督学习里的一种最基础最常用聚类算法。所谓聚类即人以类聚、物以群分,将样本按照各自的特点分为不同的类别,所谓无监督即事先不知道任何样本属于哪个类别。如下图所示一些样本被分为了绿色,红色,蓝色的三类。聚类的应用非常广泛包括客户群体的划分,推荐系统,文本聚类中,国家电网用户画像,基于用户位置信息的商业选址等。下面就让我们一起快乐的学习吧!

    那么K均值聚类究竟是如何把这些样本聚成不同的类别的呢?答案是:样本到聚类中心的距离。(这里使用的就是欧式距离,至于其他的距离度量感兴趣的读者可以问一下度娘,小编在以后也会介绍到)。它的基本思想是,通过迭代方式寻找K个簇的一种划分方案,使得聚类结果对应的代价函数最小。代价函数如下所示可以定义为样本距离所属簇中心点的误差平方和。

下面给出K均值算法的具体步骤:

   在迭代时,分别先固定簇中心,调整样本所属的类别来让J函数减少,再固定类别,调整簇中心使J函数减少。这两个过程可以交替进行。是不是晕了呢,下面的流程图相信会帮助你理解的:

如果不想看上述公式可以看下图的过程:

1,首先空间里的一些样本点(a);2,随机初始换两个中心(b),中心为图中的×;3,计算当前样本属于的类别(c);4,依据每个类别中的样本重新计算聚类中心(d);5,迭代此过程(e),(f)。

说了这么多,那么真正要掌握K-means算法还要知道其优缺点以及如何调整。

   K均值聚类有很多优点,对于大数据集,K均值聚类是高效的,它的计算复杂度O(NKt)接近于线性,其中N是样本数目,K是聚类簇数,t是迭代次数。

但是它依然存在一些缺点,该算法受初始值和离群点的影响每次结果不稳定,通常的结果不是全局最优解而是局部最优解,无法很好的解决数据簇分布差别比较大的情况(比如一个类的样本是另一个类的100倍),不太适用于离散类,K值依据人为选取缺乏客观性等。

针对其缺点调优可以考虑一下步骤:

(1)进行数据归一化和离群点的处理(少量的噪声会对均值产生较大的影响)

(2)选择合理的K值,我们可以采用手肘法,如下图所示纵轴为误差平方和,横轴为不同的K值,这里我们选取K=3,因为K<3曲线下降的熟虑大于k>3。

(3)采用核函数,将空间中的样本点映射到更高的维度进行聚类,该方法又称为核K均值聚类,这样可以增加该样本点线性可分的概率。

   当然还有其他的一些好方法比如Gap statistic方法,感兴趣的读者可以自行百度。

K-means++算法和ISODATA算法就是基于此改进的模型。

   K-means++算法的思想是在迭代时选取第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率会被选为第n+1个聚类中心。

ISODATA算法的思想也很简单,当某个类别的样本数过少时,把该类去除;当属于某个类别的样本数过多、分散程度较大时,把该类分成两个字类别。属于常见的算法,其需要指定如下参数:

(1)聚类的类中心数据K,通常输出的数据是1/2K到2K;

(2)每个类要求的最少样本数目N,因为算法要进行分裂操作,避免使得分裂后的类别中的样本数目过少;

(3)最大方差Sigma,用于控制某个类别的分散程度,当样本的分散程度超过该类别时且分裂后满足(1)的进行分裂;

(4)两个聚类中心间要求的最小距离D,如果两个类别的距离小于D,那么就进行合并操作。

更多内容请扫描下方二维码关注小编公众号:程序员大管

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值