首页 > 编程语言 >聚类算法学习总结

聚类算法学习总结

时间:2024-01-15 17:11:07浏览次数:54  
标签:总结 means kmeans 算法 聚类 SSE 数据

1.1 聚类的定义

聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

1.2 聚类和分类的区别

  • 聚类(Clustering):是指把相似的数据划分到一起,具体划分的时候并不关心这一类的标签,目标就是把相似的数据聚合到一起,聚类是一种无监督学习(Unsupervised Learning)方法。
  • 分类(Classification):是把不同的数据划分开,其过程是通过训练数据集获得一个分类器,再通过分类器去预测未知数据,分类是一种监督学习(Supervised Learning)方法。

1.3 聚类的一般过程

  1. 数据准备:特征标准化和降维
  2. 特征选择:从最初的特征中选择最有效的特征,并将其存储在向量中
  3. 特征提取:通过对选择的特征进行转换形成新的突出特征
  4. 聚类:基于某种距离函数进行相似度度量,获取簇
  5. 聚类结果评估:分析聚类结果,如距离误差和(SSE)

二、数据聚类方法

数据聚类方法主要可以分为划分式聚类方法(Partition-based Methods)基于密度的聚类方法(Density-based methods)层次化聚类方法(Hierarchical Methods)等。

 

 

划分式聚类方法需要事先指定簇类的数目或者聚类中心,通过反复迭代,直至最后达到"簇内的点足够近,簇间的点足够远"的目标。经典的划分式聚类方法有k-means及其变体k-means++bi-kmeanskernel k-means等。

2.1.2 k-means算法

经典的k-means算法的流程如下:

经典k-means源代码,下左图是原始数据集,通过观察发现大致可以分为4类,所以取�=4,测试数据效果如下右图所示。

 

一般来说,经典k-means算法有以下几个特点:

  1. 需要提前确定k值
  2. 对初始质心点敏感
  3. 对异常数据敏感

2.1.2 k-means++算法

k-means++是针对k-means中初始质心点选取的优化算法。该算法的流程和k-means类似,改变的地方只有初始质心的选取,该部分的算法流程如下

k-means++源代码,使用k-means++对上述数据做聚类处理,得到的结果如下

2.1.3 bi-kmeans算法

一种度量聚类效果的指标是SSE(Sum of Squared Error),他表示聚类后的簇离该簇的聚类中心的平方和,SSE越小,表示聚类效果越好。 bi-kmeans是针对kmeans算法会陷入局部最优的缺陷进行的改进算法。该算法基于SSE最小化的原理,首先将所有的数据点视为一个簇,然后将该簇一分为二,之后选择其中一个簇继续进行划分,选择哪一个簇进行划分取决于对其划分是否能最大程度的降低SSE的值。

该算法的流程如下:

bi-kmeans算法源代码,利用bi-kmeans算法处理上节中的数据得到的结果如下图所示。

这是一个全局最优的方法,所以每次计算出来的SSE值基本也是一样的(但是还是不排除有部分随机分错的情况),我们和前面的k-meansk-means++比较一下计算出来的SSE

可以看到,k-means每次计算出来的SSE都较大且不太稳定,k-means++计算出来的SSE较稳定并且数值较小,而bi-kmeans 4次计算出来的SSE都一样,并且计算的SSE都较小,说明聚类的效果也最好。

2.2 基于密度的方法

k-means算法对于凸性数据具有良好的效果,能够根据距离来讲数据分为球状类的簇,但对于非凸形状的数据点,就无能为力了,当k-means算法在环形数据的聚类时,我们看看会发生什么情况。

从上图可以看到,kmeans聚类产生了错误的结果,这个时候就需要用到基于密度的聚类方法了,该方法需要定义两个参数m和n,分别表示密度的邻域半径和邻域密度阈值。DBSCAN就是其中的典型。

标签:总结,means,kmeans,算法,聚类,SSE,数据
From: https://www.cnblogs.com/copyjames/p/17965826

相关文章

  • 全视通2023年度总结大会 | 风雨不改凌云志,长空无崖任搏击
    时间记录坚实的脚步,岁月镌刻奋斗的历程,沉淀来路方可擘画长远。2023年,全视通在智慧医康养领域大放异彩,全视通人奋力争先,取得了显著的成就。1月13日,我们以“风雨不改凌云志,长空无崖任搏击”为主题,在珠海总部报告厅召开了2023年度工作总结大会。珠海总部的员工以及各地的驻外员工跨越......
  • 图像算法(掩膜)
    在图像处理中,掩膜(Mask)是一个用于指定图像中感兴趣区域的二进制图像或矩阵。掩膜通常用于选择、过滤或操作图像的特定区域。掩膜通常表示为一个二进制图像,其中白色像素表示感兴趣的区域,而黑色像素表示不感兴趣的区域。在计算机科学中,掩膜(mask)通常是一个二进制模式,用于对另一个数......
  • 只要3步,教你搞定网工领导满意的年终总结
    你们好,我是老杨。2024年的总结你们都写完了吗?早的大厂都已经收了一波总结了,等着大年三十之前再搞个年终述职,这一年就算是齐活了。老生常谈,但每年又不得不谈的总结,咱们今天就聊聊这个。不管你是初入职场第一次接触,还是老油条浑水摸鱼,80%的人写年终总结的时候,都会下意识有这种感慨:“......
  • 【scikit-learn基础】--『监督学习』之 层次聚类
    层次聚类算法是机器学习中常用的一种无监督学习算法,它用于将数据分为多个类别或层次。该方法在计算机科学、生物学、社会学等多个领域都有广泛应用。层次聚类算法的历史可以追溯到上世纪60年代,当时它主要被用于社会科学中。随着计算机技术的发展,这种方法在90年代得到了更为广泛的......
  • 吴师兄学算法day07 11. 盛最多水的容器
    题目:11. 盛最多水的容器难点:如何确定,每次只移动最短边,因为无论移动哪边的柱子,下面的底部一定是缩短的,剩下的就是取决于高度。如果移动的是,两侧高的那个,整体的面积一定是缩小的。如果移动的是,两侧底的那个,后面的柱子有可能是遇到高的,也有可能是低的,所以,整体面积可能大,也可......
  • 京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队
    ​ 1前言在《ElasticSearch降本增效常见的方法》一文中曾提到过zstd压缩算法[1],一步一个脚印我们终于在京东ES上线支持了zstd;我觉得促使目标完成主要以下几点原因:Elastic官方原因:zstd压缩算法没有在Elastic官方的开发计划中;Elastic的licenes变更,很多功能使用受限ES产品......
  • Redis 做缓存常见的几个问题总结
     1.数据一致性我们知道,Redis主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用Redis做缓存,那么就会存在数据同步的问题。一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请......
  • 精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现
    这是《百图解码支付系统设计与实现》专栏系列文章中的第(15)篇,也是流量控制系列的第(2)篇。点击上方关注,深入了解支付系统的方方面面。上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis实现的核心代码。本篇重点讲清楚分布式环境下滑动时间窗口算法原理和应用场景,以及使......
  • PHP面试常用的几种算法(建议收藏)
    1.冒泡排序,对像可以是数组functionbubble_sort($array){$count=count($array);if($count<=0){returnfalse;}for($i=0;$i<$count;$i++){for($j=$count-1;$j>$i;$j--){if($array[$j]<$array[$j-1]){......
  • 这个插件厉害了!助你一键生成网页、视频总结!
    大家好,我是Java陈序员。如今是信息时代,想必大家经常上网冲浪!互联网的信息纷乱繁杂,各种广告、标题党等,大大的影响了我们获取信息的效率!那么有没有一款工具可以帮助我们快速高效的总结网页信息呢?答案是有的,今天给大家介绍一个浏览器插件,基于AI实现总结网页、视频等资源信息。......