机器学习k-means算法优化

ZSYL ZSYL     2022-12-11     494

关键词:

学习目标

  • 知道K-means算法的优缺点
  • 知道Canopy、K-means++、二分K-means、K-medoids的优化原理
  • 了解Kernel K-means、ISODATA、Mini-batch K-means的优化原理

k-means算法小结

优点:

  1. 原理简单(靠近中心点),实现容易

​ 2. 聚类效果中上(依赖K的选择)

​ 3. 空间复杂度O(N),时间复杂度O(IKN)

N为样本点个数,K为中心点个数,I为迭代次数

缺点:

  1. 对离群点,噪声敏感 (中心点易偏移)

  2. 很难发现大小差别很大的簇及进行增量计算

  3. 结果不一定是全局最优,只能保证局部最优(与K的个数及初值选取有关)

1. Canopy算法配合初始聚类

1.1 Canopy算法配合初始聚类实现流程

1.2 Canopy算法的优缺点

优点:

  1. Kmeans对噪声抗干扰较弱,通过Canopy对比,将较小的NumPoint的Cluster直接去掉有利于抗干扰。

  2. Canopy选择出来的每个Canopy的centerPoint作为K会更精确。

  3. 只是针对每个Canopy的内做Kmeans聚类,减少相似计算的数量。

缺点:

  1. 算法中 T1、T2的确定问题 ,依旧可能落入局部最优解

2. K-means++


其中:


为方便后面表示,把其记为 A




Kmeans++目的,让选择的质心尽可能的分散

如下图中,如果第一个质心选择在圆心,那么最优可能选择到的下一个点在P(A)这个区域(根据颜色进行划分)

3. 二分k-means

实现流程:

  • 1.所有点作为一个簇。

  • 2.将该簇一分为二。

  • 3.选择能最大限度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。

  • 4.以此进行下去,直到簇的数目等于用户给定的数目k为止。

隐含的一个原则

因为聚类误差平方和能够衡量聚类性能,该值越小表示数据点越接近于他们的质心,聚类效果就越好。所以需要对误差平方和最大的簇进行再一次划分,因为误差平方和越大,表示该簇聚类效果越不好,越有可能是多个被当成了一个,所以我们首先需要对这个进行划分。

二分K均值算法可以加速K-means算法的执行速度,因为它的相似度计算少了并且不受初始化问题的影响,因为这里不存在随机点的选取,且每一步都保证了误差最小

4. k-medoids(k-中心聚类算法)

K-medoidsK-means是有区别的,不一样的地方在于中心点的选取

  • K-means中,将中心点取为当前cluster中所有数据点的平均值,对异常点很敏感!

  • K-medoids中,将从当前cluster 中选取到其他所有(当前cluster中的)点的距离之和最小的点作为中心点。

算法流程:

( 1 )总体n个样本点中任意选取k个点作为medoids

( 2 )按照与medoids最近的原则,将剩余的n-k个点分配到当前最佳的medoids代表的类中

( 3 )对于第i个类中除对应medoids点外的所有其他点,按顺序计算当其为新的medoids时,代价函数的值,遍历所有可能,选取代价函数最小时对应的点作为新的medoids

( 4 )重复2-3的过程,直到所有的medoids点不再发生变化或已达到设定的最大迭代次数

( 5 )产出最终确定的k个类

k-medoids对噪声鲁棒性好。

:当一个cluster样本点只有少数几个,如(1,1)(1,2)(2,1)(1000,1000)。其中(1000,1000)是噪声。如果按照k-means质心大致会处在(1,1)(1000,1000)中间,这显然不是我们想要的。这时k-medoids就可以避免这种情况,他会在(1,1)(1,2)(2,1)(1000,1000)中选出一个样本点使cluster的绝对误差最小,计算可知一定会在前三个点中选取。

k-medoids只能对小样本起作用,样本大,速度就太慢了,当样本多的时候,少数几个噪音对k-means的质心影响也没有想象中的那么重,所以k-means的应用明显比k-medoids多。

5. Kernel k-means

kernel k-means实际上,就是将每个样本进行一个投射到高维空间的处理,然后再将处理后的数据使用普通的k-means算法思想进行聚类。

6. ISODATA

类别数目随着聚类过程而变化;

对类别数会进行合并,分裂,

合并”:(当聚类结果某一类中样本数太少,或两个类间的距离太近时)

分裂”:(当聚类结果中某一类的类内方差太大,将该类进行分裂)

7. Mini Batch K-Means

适合大数据的聚类算法

大数据量是什么量级?通常当样本量大于1万做聚类时,就需要考虑选用Mini Batch K-Means算法。

Mini Batch KMeans使用了Mini Batch(分批处理)的方法对数据点之间的距离进行计算。

Mini Batch计算过程中不必使用所有的数据样本,而是从不同类别的样本中抽取一部分样本来代表各自类型进行计算。由于计算样本量少,所以会相应的减少运行时间,但另一方面抽样也必然会带来准确度的下降。

该算法的迭代步骤有两步:

(1)从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心

(2)更新质心

Kmeans相比,数据的更新在每一个小的样本集上。对于每一个小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化是逐渐减小的,直到质心稳定或者达到指定的迭代次数,停止计算。

8. 小结

  • k-means算法优缺点总结

    • 优点:
      • ​ 1.原理简单(靠近中心点),实现容易
      • ​ 2.聚类效果中上(依赖K的选择)
      • ​ 3.空间复杂度O(N),时间复杂度O(IKN)
    • 缺点:
      • 1.对离群点,噪声敏感 (中心点易偏移)
      • ​2.很难发现大小差别很大的簇及进行增量计算
      • ​3.结果不一定是全局最优,只能保证局部最优(与K的个数及初值选取有关)
  • 优化方法


加油!

感谢!

努力!

机器学习算法优化(代码片段)

目录1Canopy算法配合初始聚类1.1实现流程1.2Canopy算法优缺点2K-means++3二分k-means4k-medoids(k-中心聚类算法)5Kernelk-means6ISODATA7MiniBatchK-Means8小结1Canopy算法配合初始聚类k-means算法小结优点:1.原理简单(靠近中心... 查看详情

机器学习算法:知道canopyk-means++二分k-meansk-medoids的优化原理(代码片段)

学习目标知道k-means算法的优缺点知道canopy、K-means++、二分K-means、K-medoids的优化原理了解kernelK-means、ISODATA、Mini-batchK-means的优化原理k-means算法小结优点:​1.原理简单(靠近中心点),实现容易​2.聚类效果... 查看详情

机器学习---算法---k-means算法

转自:https://blog.csdn.net/zhihua_oba/article/details/73832614 k-means算法详解主要内容k-means算法简介k-means算法详解k-means算法优缺点分析k-means算法改进算法k-means++1、k-means算法简介??k-means算法是一种聚类算法,所谓聚类,即根据相似性... 查看详情

机器学习笔记之一深入浅出学习k-means算法

摘要:在数据挖掘中,K-Means算法是一种clusteranalysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。在数据挖掘中,K-Means算法是一种clusteranalysis的算法,其主要是来计算数据聚集的算法,... 查看详情

机器学习:k-means算法

3.K-means算法:    3.1Clustering中的经典算法,数据挖掘十大经典算法之一   3.2 算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一      ... 查看详情

简单易学的机器学习算法——k-means++算法(代码片段)

一、K-Means算法存在的问题由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指定,这一点对于一些未知数据存在很大的... 查看详情

机器学习实战之k-means算法

一,引言  先说个K-means算法很高大上的用处,来开始新的算法学习。我们都知道每一届的美国总统大选,那叫一个竞争激烈。可以说,谁拿到了各个州尽可能多的选票,谁选举获胜的几率就会非常大。有人会说,这跟K-means算... 查看详情

视觉机器学习------k-means算法

K-means(K均值)是基于数据划分的无监督聚类算法。一、基本原理   聚类算法可以理解为无监督的分类方法,即样本集预先不知所属类别或标签,需要根据样本之间的距离或相似程度自动进行分类。聚类算法可以分为基... 查看详情

[机器学习]二分k-means算法详解(代码片段)

二分k-means算法  二分k-means算法是分层聚类(Hierarchicalclustering)的一种,分层聚类是聚类分析中常用的方法。分层聚类的策略一般有两种:聚合。这是一种自底向上的方法,每一个观察者初始化本身为一类,然后两两结合分裂... 查看详情

机器学习算法实践——k-means算法与图像分割

一、理论准备1.1、图像分割图像分割是图像处理中的一种方法,图像分割是指将一幅图像分解成若干互不相交区域的集合,其实质可以看成是一种像素的聚类过程。通常使用到的图像分割的方法可以分为:基于边缘的技术基于区... 查看详情

机器学习:k-means算法

机器学习:K-Means算法任务描述数据处理Encoder:归一化:Kmeans前置内容聚类基础概念模型运作方式模型改进方式:任务描述以竞品分析为背景,通过数据的聚类,为汽车提供聚类分类。对于指定的车型,... 查看详情

k-means聚类算法原理分析与代码实现

...言      在前面的文章中,涉及到的机器学习算法均为监督学习算法。      所谓监督学习,就是有训练过程的学习。再确切点,就是有"分类标签集"的学 查看详情

机器学习-聚类kmeans(代码片段)

图解K-Means算法本文中介绍的是一种常见的无监督学习算法,名字叫做K均值算法:K-Means算法。K-Means算法在无监督学习,尤其是聚类算法中是最为基础和重要的一个算法。它实现起来非常简单。聚类效果也很不错的ÿ... 查看详情

机器学习入门-k-means算法

无监督问题,我们手里没有标签聚类:相似的东西聚在一起难点:如何进行调参 K-means算法      需要制定k值,用来获得到底有几个簇,即几种类型     质心:均值,即向量各维取平均... 查看详情

☀️机器学习入门☀️图解k-means聚类算法|附加小练习(代码片段)

物以类聚经典的无监督学习算法——K-Means聚类算法目录1.K-Means定义2.K-Means步骤3.K-Means和KNN对比4.小练习4.1第一题4.2第二题4.3第三题最后1.K-Means定义K-means聚类算法首先是随机选取K个对象作为初始的聚类中心,然后计算每个样... 查看详情

机器学习之k-means算法

前言      以下内容是个人学习之后的感悟,转载请注明出处~  简介  在之前发表的线性回归、逻辑回归、神经网络、SVM支持向量机等算法都是监督学习算法,需要样本进行训练,且样本的类别是... 查看详情

机器学习算法精讲20篇-k-means聚类算法应用案例(附示例代码)

前言k-means算法是非监督聚类最常用的一种方法,因其算法简单和很好的适用于大样本数据,广泛应用于不同领域,本文详细总结了k-means聚类算法原理。以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持... 查看详情

机器学习-k-means聚类及算法实现(基于r语言)

K-means聚类将n个观测点,按一定标准(数据点的相似度),划归到k个聚类(用户划分、产品类别划分等)中。重要概念:质心K-means聚类要求的变量是数值变量,方便计算距离。 算法实现 R语言实现 k-means算法是将数值... 查看详情