【原创】Kmeans算法 优缺点分析

优点:
原理简单(靠近中心点),实现容易(1、2 天),聚类效果中上(依赖K的选择)

缺点:
1. 无法确定K的个数 (根据什么指标确定K)
2. 对离群点敏感 (容易导致中心点偏移)
3. 算法复杂度不易控制 O(NKm), 迭代次数可能较多 (m可能会比较大)
4. 局部最优解而不是全局优 (这个和初始点选谁有关)
5. 结果不稳定 (受输入顺序影响)
6. 无法增量计算 (同5)
etc

各种改进版也是针对不同缺点的回避。

但每个问题又不是特别有普适性,所以我认为根据具体情况做出合适的改进会更好。

由于Kmeans实现简单,通过一定的数理知识回避相应的缺点也不是特别复杂,所以根据已有数据做针对性的修改更合适。

改进版:
k-modes
k-centroids
etc.

未经博主允许,不能转载任何文章。

时间: 2024-11-10 16:13:23

【原创】Kmeans算法 优缺点分析的相关文章

机器学习---算法---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聚类啦.该算法十分容易理解,也很容易实现.其实几乎所有的机器学习和数据挖掘算法都有其优点和缺点.那么K-means的缺点是什么呢? 总结为下: (1)对于离群点和孤立点敏感: (2)k值选择; (3)初始聚类中心的选择: (4)只能发现球状簇. 对于这4点呢的原因,读者可以自行思考下,不难理解.针对上述四个缺点,依次介绍改进措施. 改进1 首先针对(1),对于离群点和孤立点敏感,如何解决?笔者在前面的一篇博客中,提到过离群点检测的LOF算法,通

K-Means 聚类算法原理分析与代码实现

前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经典的聚类问题展开讨论.所谓聚类,就是事先并不知道具体分类方案的分类 (允许知道分类个数). 本文将介绍一个最为经典的聚类算法 - K-Means 聚类算法以及它的两种实现. 现实中的聚类分析问题 - 总统大选 假设 M 国又开始全民选举总统了,目前 Mr.OBM 的投票率为48%(投票数占所有选民人数的百分比

K-means算法

K-means算法 输入input:data X 输出output:data(X,S) 解释:输入没有标签的数据data X,经过训练,给每一个数据添上一个标签S{s1,s2,...,sk},对应的聚类中心为U{u1,u2,...,uk}. 效果:将输入数据分为k类,并得到其相应类别的中心点. ======================================================================================== step 1 初始化聚类中

数据挖掘算法学习(一)K-Means算法

博主最近实习开始接触数据挖掘,将学习笔记分享给大家.目前用的软件是weka,下篇文章会着重讲解. 算法简介: K-Means算法是输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类.并使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类对象相似度较小. 算法假设: 均方误差是计算群组分散度的最佳参数. 算法输入: 聚类个数k:包含n个数据对象的数据集. 算法输出: k个聚类 算法思想: (a)绿点表示数据集在二级的欧几里德空间,初始化的中心点u1和u2用红的和蓝

数据挖掘十大算法总结--核心思想,算法优缺点,应用领域

本文所涉算法均只概述核心思想,具体实现细节参看本博客"数据挖掘算法学习"分类下其他文章,不定期更新中.转载请注明出处,谢谢. 参考了许多资料加上个人理解,对十大算法进行如下分类: ?分类算法:C4.5,CART,Adaboost,NaiveBayes,KNN,SVM ?聚类算法:KMeans ?统计学习:EM ?关联分析:Apriori ?链接挖掘:PageRank 其中,EM算法虽可以用来聚类,但是由于EM算法进行迭代速度很慢,比kMeans性能差很多,并且KMeans算法 聚类效果

算法 - k-means算法

一.聚类思想 所谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征,如下图所示: 根据样本之间的距离或者说是相似性(亲疏性),把越相似.差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高. 二.k-means聚类分析算法 相关概念: K值:要得到的簇的个数 质心:每个簇的均值向量,即向量各维取平均即可 距离量度:常用欧几里得距离和余弦相似度(先标准化) 算法流程: 1.首先确定一个k值,即

Adaboost算法原理分析和实例+代码(简明易懂)

Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333     本人最初了解AdaBoost算法着实是花了几天时间,才明白他的基本原理.也许是自己能力有限吧,很多资料也是看得懵懵懂懂.网上找了一下关于Adaboost算法原理分析,大都是你复制我,我摘抄你,反正我也搞不清谁是原创.有些资料给出的Adaboost实例,要么是没有代码,要么省略很多步骤,让初学者

Java实现Kmeans算法

Kmeans算法的Java实现,源码放在github上,大家有兴趣可以下下来看看, 源码地址: https://github.com/l294265421/algorithm-kmeans 实现该算法主要阅读的书籍是: <Web数据挖掘>第二版,作者:Bing Liu,译者:俞勇 版权声明:本文为博主原创文章,未经博主允许不得转载.