博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kmeans优化算法
阅读量:4169 次
发布时间:2019-05-26

本文共 1047 字,大约阅读时间需要 3 分钟。

k-means算法的优、缺点

1、优点:

①简单、高效、易于理解

②聚类效果好

2、缺点:

①算法可能找到局部最优的聚类,而不是全局最优的聚类。使用改进的二分k-means算法。

②算法的结果非常依赖于初始随机选择的聚类中心的位置,可以通过多次执行该算法来减少初始中心敏感的影响。方法1:选择彼此距离尽可能远的k个点作为初始簇中心。方法2:先使用canopy算法进行初始聚类,得到k个canopy中心,以此或距离每个canopy中心最近的点作为初始簇中心。

③聚类结果对k值的依赖性比较大。目前并没有一个通用的理论来确定这个k值。

④可能发生距离聚类中心最近的样本集为空的情况,因此这个聚类中心不变无法得到更新。

⑤对离群点和孤立点敏感。通过LOF(局部离群因子)检测算法对数据集进行预处理,去除离群点后再进行聚类。

⑥性能问题。原始的k-means算法,每一次迭代都要计算每一个观测点与所有聚类中心的距离,当观测点的数目很多时,算法的性能并不理想。时间复杂度为O(nkl),l为迭代次数,n为数据集容量。为了解决这一问题,我们可以使用kd树以及ball 树(数据结构)来提高k-means算法的效率。

优化方法

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

Canopy算法:首先给定两个距离T1和T2,T1>T2。从数据集中随机有放回地选择一个点作为一个canopy中心,对于剩余数据集中的每个点计算其与每个canopy中心的距离,若距离小于T1,则将该点加入该canopy中;若距离小于T2,则将其加入该canopy的同时,从数据集中删除该点,迭代上述过程,直至数据集为空为止。

canopy算法会得到若干个canopy,可以认为每个canopy都是一个簇,只是数据集中的点可能同时属于多个不同的canopy,可以先用canopy算法进行粗聚类,得到k值和k个初始簇中心后再使用k-means算法进行细聚类。

k-means算法的k值自适应优化算法:首先给定一个较大的k值,进行一次k-means算法得到k个簇中心,然后计算每两个簇中心之间的距离,合并簇中心距离最近的两个簇,并将k值减1,迭代上述过程,直至簇类结果(整个数据集的误差平方和)不变或者变化小于某个阈值或者达到指定迭代次数为止。

 

参考:

转载地址:http://veyai.baihongyu.com/

你可能感兴趣的文章
牛客网 数字游戏
查看>>
逆波兰表达式
查看>>
逆波兰表达式
查看>>
K-means中K值的选取
查看>>
kmeans优化算法
查看>>
牛客网 构造队列
查看>>
牛客网 跳石板
查看>>
牛客网 最大的奇约数
查看>>
python大坑:AttributeError: 'module' object has no attribute 'Workbook'
查看>>
python 协程
查看>>
在写计算器时学到的
查看>>
小Q的歌单
查看>>
牛客网 计算机网络 选择题及知识点 (1)
查看>>
0-1背包问题
查看>>
TCP-IP详解卷1:协议 学习笔记(5) RARP ICMP
查看>>
Java核心技术 卷I 基础知识 学习笔记(3)
查看>>
TCP-IP详解卷1:协议 学习笔记(6) Ping
查看>>
Java核心技术 卷I 基础知识 学习笔记(4)
查看>>
Java核心技术 卷I 基础知识 学习笔记(5)
查看>>
Java核心技术 卷I 基础知识 学习笔记(6)
查看>>