K-means聚类算法(无监督学习算法)

一、K-means算法简介
1.1、基本原理和思想
  K-means算法是基于数据划分的无监督聚类算法,是数据挖掘领域的十大算法之一。其中K表示类别数,means表示均值。K-means是一种通过均值对数据点进行聚类的算法。它不需要给训练数据打上标签。直接预设一个分类个数K即可,然后数据会利用K-means算法自动划分K个类别。K-means算法通过预先设定的K值及每个类别的初始质心对相似的数据点进行划分。并通过划分后的均值迭代优化获得最优的聚类结果。
  K-means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心(这个点可以不是样本点),从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值或者簇心不再移动。
1.2、K值的选取
  K值就是质心的数量(聚类类别的个数)。而选择最优的K值没有固定的公式或方法,需要人工来指定,一般根据实际的业务需求,或通过层次聚类(Hierarchical Clustering)的方法获得数据的类别数量作为选择K值的参考。若k的取值过小,预测结果会对噪音样本点显得异常敏感。特别地,当k等于1时,kNN退化成最近邻算法,没有了显式的学习过程。若k值过大,会有较大的邻域训练样本进行预测,可以减小噪音样本点的减少;但是距离较远的训练样本点对预测结果会有贡献,以至于造成预测结果错误。

这里写图片描述

1.3、要解决的问题
   以下面这个图为例,就是为了解决实际过程的分类问题,我们要利用计算机程序将没有标签的数据进行分类,相似度大的分到一类去。

这里写图片描述

二、K-means算法的核心原理
2.1、算法步骤
K-means算法主要分为一下三个步骤:
  (1)第一步是为待聚类的点寻找聚类中心;
  (2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去;
  (3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心;
  反复执行(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止。
2.2、利用K-means算法聚类(例子)

这里写图片描述

   以上面的问题为例说明K-means算法的聚类步骤。我们刚开始需要给K赋值,初始化K的值,这里我们选取K=2。上图(a)—>(f)为聚类过程。
  (a) 未聚类的初始点集;
  (b) 随机选取两个点作为聚类中心;
  (c) 计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去;
  (d) 计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心;
  (e) 重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去;
  (f) 重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心。
2.3相关距离公式
(1)欧几里得距离

这里写图片描述

(2)曼哈顿距离

这里写图片描述

(3)闵可夫斯基距离

这里写图片描述

三、K-means算法的优缺点
3.1、K-means算法的优点
  (1) 算法快速、简单;
  (2) 对大数据集有较高的效率并且是可伸缩性的;
  (3)时间复杂度近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(n*k*t) ,其中n代表元素个数,t代表着算法迭代的次数,k代表着簇的数目;
  (4)聚类效果较优;
  (5)需要调节的参数仅仅只是簇数K。
3.2、K-means算法的缺点
  (1)在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这也是 K-means 算法的一个不足。
  (2)在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,容易陷入局部最小值,可能无法得到有效的聚类结果,这也成为 K-means算法的一个主要问题。对于该问题的解决,许多算法采用遗传算法(GA)。
  (3) K-means 算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。所以需要对算法的时间复杂度进行分析、改进,提高算法应用范围。
  (4)不能处理不同尺寸,不同密度的簇及不能处理非球形的簇。
  (5)离群值可能有较大干扰,它对噪声或者异常点比较敏感(因此要先剔除)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值