【机器学习之K-means聚类算法】

文章目录

  • 前言
  • 一、什么是聚类算法?
  • 二、算法过程是怎样的?
    • 1.原理四步走
    • 2.详细解读K-means
      • 2-1.算法问题所在
      • 2-2.与普通的K-mean对比
      • 2-3.为何效率如此高?
      • 2.4.分组情况
      • 2.5.如何使用K-means?
      • 2.6.肘部法则
    • 3.问题总结
      • 3-1.K-means聚类的优缺点 ★★★☆☆
        • 3-1-1.优点
        • 3-1-2.缺点
    • 4.拔高亮点
      • 4-1.KNN和K-means的区别与相似点
      • 4-2.K-means的优缺点及改进
        • 4-2-1.二分k-means算法是什么呢?
      • 4-3.K-means如何进行评估
  • 总结


前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习K-means聚类的基础内容。


一、什么是聚类算法?

首先什么是聚类算法?聚类就是一种机器学习的技术,它涉及到数据点的分组。比如说我们给定了一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。在理论上来说,同一组中的数据点应该具有相似的属性和(或)特征,而不同组中的数据点应该具有高度不同的属性和(或)特征聚类是一种无监督学习的方法,是许多领域中常用的一种统计数据分析技术,一般是在做大数据或者数据分析的时候会用到聚类多一些,比如一些数据挖掘工作中运用的多一些。
【机器学习之K-means聚类算法】_第1张图片

二、算法过程是怎样的?

1.原理四步走

K-means是常用的一个聚类算法,它其实是一个基于距离的聚类算法,采用的是距离作为相似性的评价指标,也就是说两个对象距离越近,它们相似度就越高。它这个算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标

K-means的算法过程是怎样的呢?它能接受一个没有标记的数据集,然后将它聚类成不同的组。它是一个迭代求解的算法,步骤如下
① 首先先设定一个K值,也就是说像把数据集聚类成K个集合,我们在数据集中选K个随机的点,把它当做初始的聚类中心;
【机器学习之K-means聚类算法】_第2张图片

② 然后计算数据集中的每个数据对象,计算它们跟K个质心间的距离(如欧氏距离),将每个对象都分配给距离最近的聚类中心,然后把一个聚类中心和分给它们的对象表示为一个聚类的集合;
【机器学习之K-means聚类算法】_第3张图片

③ 然后每分配一个样本对象,聚类中心就会重新被计算,通过计算每个聚类里数据对象跟聚类中心距离的平均值,然后把该聚类的中心点移动到平均值的位置;
【机器学习之K-means聚类算法】_第4张图片

④ 然后就一直重复步骤,直到没有或者最少个数的中心点不再变化,换一句话说就是新计算出来的质心和原先的质心间的距离小于一个阈值(就是位置变化不大,趋于稳定或者收敛),误差平方和就局部最小了,我们就认为聚类达到了期望,然后算法结束。
【机器学习之K-means聚类算法】_第5张图片

2.详细解读K-means

2-1.算法问题所在

K-means这个算法本身存在一定的问题,比如说在大数据量下的计算时间过长就是一个重要问题。所以如果非要用的话,我们会选择用 Mini Batch K-means,什么情况下适合用它呢?它适合大数据量(样本量>1w)的情况下,如果数据量少的话也就用不上聚类,但是我们也需要考虑它的一个算法效率(运行时间)以及准确度。

2-2.与普通的K-mean对比

它和我们普通的K-means有什么区别?以及有什么特点呢?就一个字快!有团队试验过,3万的数据量,K-means和Mini Batch K-means相比,运行事件相差2倍多,但聚类结果差异却很小。所以说该算法能尽量保持聚类准确性下但能大幅度降低计算时间,这也是我们如果要选择聚类的话,选择该模型算法。
【机器学习之K-means聚类算法】_第6张图片

2-3.为何效率如此高?

它是怎么做到这么快的呢?该算法使用了一个种叫做Mini Batch(分批处理)的方法对数据点之间的距离进行了一个计算。Mini Batch的好处就是计算过程中不必使用所有的数据样本,而是从不同类别的样本中抽取一部分样本来代表各自类型进行计算。总结来说就是由于计算样本量少,所以会相应的减少运行时间,但是另一方面来说这样进行抽样也必然会带来准确度的下降。实际上,这种思路在梯度下降、机器学习和深度学习的深度网络算法中都有应用。

2.4.分组情况

聚类算法以很便利地将数据分为许多不同组,即便就是在没有非常明显区分的组群的情况下也是可以的。

K-means的最小化问题,就是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和。

2.5.如何使用K-means?

我们在运用K-means算法之前,肯定需要先随机初始化所有的聚类中心点。有亮点需要注意①我们应该选择K < ,也就是说聚类中心点的个数小于所有训练集实例的数量;②我们随机选择K个训练实例,然后让K个聚类中心分别跟这K个训练实例相等K-均值会存在一个问题,它有可能会停留在一个局部最小值处,然而这取决于一个初始化的情况。我们为了解决这个问题,一般我们会需要多运行几次算法模型,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。这种方法在K较小的时候,比如2到10还是可以的,但是如果K较大,这么做也可能不会有明显地改善。

2.6.肘部法则

没有什么所谓最好的选择聚类数的方法,我们通常也是需要根据不同的问题来人工选择的。这就可能引入了一个肘部法则了,关于它,我们所需要做的是改变K值,也就是聚类类别数目的总数。我们可能会得到一条类似于人胳膊肘的曲线,它会在某一个区间下降的非常快,还会有一个区间下降的速度会慢下来,中间有一个临界点,这个临界点就是我们要找的那个曲线的肘点,这就是一个选择聚类个数比较合理的一个方法。
【机器学习之K-means聚类算法】_第7张图片

3.问题总结

3-1.K-means聚类的优缺点 ★★★☆☆

3-1-1.优点

①原理比较简单,实现也是比较容易的,收敛速度快;
②当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好;
③主要需要调参的参数仅仅是簇数k。

3-1-2.缺点

①K值需要提前给定,很多情况下K值的估计是非常困难的;
②K-Means算法对初始选取的质心点是敏感的,不同的随机种子点得到的聚类结果完全不同,对结果影响很大;
③对噪音和异常点比较的敏感。可以用来检测异常值;
④ 采用迭代方法,可能只能得到局部最优解,而无法得到全局的最优解

4.拔高亮点

4-1.KNN和K-means的区别与相似点

KNN分类算法,是一个理论上比较成熟的方法,同时也是最简单的机器学习算法之一。【机器学习之K-means聚类算法】_第8张图片
相似点:都包含这样的过程,给定一个点,在数据集中找离它最近的点。

4-2.K-means的优缺点及改进

K-means算法,在大数据条件下,会耗费大量的时间和内存。所以我们需要对它进行一个优化,主要从以下几点考虑:
减少聚类的数目K。因为每个样本都要跟类中心计算距离
减少样本的特征维度。比如说,通过PCA等进行降维;
③ 考察其他的聚类算法,去测试不同聚类算法的性能,做取舍;
④ 利用hadoop集群,K-means算法是很容易进行并行计算的;
⑤ 算法可能找到局部最优的聚类,而不是全局最优的聚类。使用改进的二分k-means算法。

4-2-1.二分k-means算法是什么呢?

  1. 首先就是先将整个数据集看成一个簇;
  2. 然后进行一次k-means(k=2)算法将该簇一分为二,并计算每个簇的误差平方和;
  3. 选择平方和最大的簇迭代上述过程再次一分为二;
  4. 直至簇数达到用户指定的k为止,此时可以达到的全局最优。

4-3.K-means如何进行评估

由于数据以及需求的多样性,没有一种算法能够适用于所有的数据类型或应用场景,似乎每种情况都可能需要一种不同的评估方法或度量标准。比如说K均值聚类可以用误差平方和来评估,但是基于密度的数据簇可能不是球形,误差平方和就会失效。虽然判断聚类算法结果的好坏强烈依赖于人的主观解释,但是对算法进行评估还是必要的步骤,不可忽视。

聚类评估的任务其实就是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量这两个要点,这个过程又分为三个子任务,分别是:

  • 估计聚类趋势。就是检测分析数据中是不是有非随机的簇结构,如果数据基本随机,那么聚类的结果就没意义了,它也找不到一个合适的K对应的簇数;
  • 判定数据簇数。确定好聚类趋势之后,我们需要找到同真实数据分布最为吻合的簇数,借此来判定聚类结果的质量。方法比如说肘部法则;
  • 测定聚类质量。在无监督的情况下,我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。常见的测量指标,有轮廓系数、均方根标准偏差、R方(R-Square)、改进的HuBertΓ统计等

总结

以上就是今天要讲的内容,本文仅仅简单介绍了K-means的使用。K-means聚类方法能做到基于划分的聚类、基于层次的聚类、基于密度的聚类、基于网络的聚类、基于模型的聚类以及基于模糊的聚类。

你可能感兴趣的:(机器学习,聚类,算法,kmeans)