Kmeans聚类算法及聚类概念简介

在深度学习的路上,从头开始了解一下各项技术。本人是DL小白,连续记录我自己看的一些东西,大家可以互相交流。

本文参考:https://blog.csdn.net/loveliuzz/article/details/78783773

https://blog.csdn.net/linzch3/article/details/57418531

一、前言

Kmeans聚类算法算得上是最著名的聚类算法,也称K-平均或K-均值,是一种使用广泛的最基础的聚类算法。在了解Kmeans算法之前,我们可以先了解一下聚类的概念。

二、分类和聚类

首先,分类和聚类是不同的概念。二者的目标都是对数据进行分类,但是却有一定的区别。

分类是按照某种标准给对象贴标签,再根据标签来区分归类;

聚类是事先没有给出标签,刚开始并不知道如何对数据分类,由算法自己来判断各条数据之间的相似性,把相似的聚在一起。 

聚类算法的思想是:给定一个有M个对象的数据集,构建一个具有K个簇(其实就是类)的模型,其中K<=M。并且满足以下条件:

1、每个簇至少包含一个对象

2、每个对象属于且仅属于一个簇

3、将满足上述条件的k个簇称为一个合理的聚类划分。

简而言之就是,对于给定的类别数目K,首先给定初始化划分,通过迭代改变样本和簇的隶属关系,使的每次处理后的划分方式比上一次好。(让数据集之间的距离之和变小)

三、Kmeans算法思想与流程

接下来,让我们了解以下,kmeans算法是如何来处理聚类问题的。

假设输入样本为T = X1,X2...Xm;算法步骤为(欧几里得距离公式):

1、选择初始化的K个类别的中心a1,a2...ak;

2、对于每个样本Xi,将其标记为距离类别中心aj最近的类别j;(每个样本计算到所有类别中心的距离,最近的即为样本的类)

3、更新每个类别的中心点aj,值为隶属于该类别的所有样本的均值;(这就是为什么叫k-均值)

4、重复3,4步骤直到达到终止条件

终止条件:

迭代次数、最小平方误差、簇中心点变化率数值到达设定值

上图给出了Kmeans算法的简单流程,自然语言描述即是:

1>在图(a)中,选择两个类别中心点: a1(红点)、a2(蓝点),得到图(b)

2>在图(b)中,计算每个样本点到a1和a2的距离,将样本点划分为红色与蓝色,得到图(c)

3>在图(c)中,计算簇a1和簇a2的的样本均值,更新类别中心点a1和a2,得到图(d)

4>在图(d)中,更新每个样本点的簇,重新划分样本点,得到图(e)

5>在图(e)中,计算簇a1和簇a2的样本均值,更新类别中心点a1和a2,得到图(f),并且满足终止条件,结束算法。

不难看出Kmeans算法的思想其实并不困难,在实际Kmeans算法中,我们一般会多次运行图(c)和图(d),才能达到最终的比较优的类别。

四、Kmeans算法公式及优缺点

此处的Kmeans算法使用了欧几里得距离公式,对应在更新簇中心点时,使用了曼哈顿距离度量公式,当我们选用其他的距离公式来测定样本点和中心之间的距离时,也要对应的修改簇中心点更新公式,具体的对照以及涉猎的其他距离公式,可以参考博客:https://blog.csdn.net/loveliuzz/article/details/78783773

Kmeans算法的思想可谓是很简单,在我学习吴恩达教授的DeepLearning课程中,他讲述了一个概念:

我们拥有的数据量越小,需要的手工工程(“Hacks”)就越多,越需要复杂的算法;而当我们拥有的数据量越大时,我们的算法就越简单,也就意味着更少的手工工程。

最后,对于Kmeans算法,我觉得有必要让大家了解一下它的优缺点。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值