k-means方法存在的主要缺点是:1.K值的选取不好把握;2. 对不是凸的数据集比较难收敛;3. 各隐含类别的数据不平衡聚类效果不佳;4. 采用迭代方法得到的结果只是局部优异;5. 对噪音和异常点比较的敏感;6. 初始聚类中心的选择。
一、k-means方法
缺点
1.K值的选取不好把握;
2.对于不是凸的数据集比较难收敛;
3.如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳;
4.采用迭代方法,得到的结果只是局部优异;
5.对噪音和异常点比较的敏感;
6.初始聚类中心的选择。
改进方法
改进1
对于离群点和孤立点敏感,离群点检测的LOF算法,通过去除离群点后再聚类,可以减少离群点和孤立点对于聚类效果的影响。
改进2
k值的选择问题,在安徽大学李芳的硕士论文中提到了k-Means算法的k值自适应优化方法。下面将针对该方法进行总结。
首先该算法针对K-means算法的以下主要缺点进行了改进:
必须首先给出k(要生成的簇的数目),k值很难选择。事先并不知道给定的数据应该被分成什么类别才是优异的。
初始聚类中心的选择是K-means的一个问题。
李芳设计的算法思路是这样的:可以通过在一开始给定一个适合的数值给k,通过一次K-means算法得到一次聚类中心。对于得到的聚类中心,根据得到的k个聚类的距离情况,合并距离最近的类,因此聚类中心数减小,当将其用于下次聚类时,相应的聚类数目也减小了,最终得到合适数目的聚类数。可以通过一个评判值E来确定聚类数得到一个合适的位置停下来,而不继续合并聚类中心。重复上述循环,直至评判函数收敛为止,最终得到较优聚类数的聚类结果。
改进3
对初始聚类中心的选择的优化。一句话概括为:选择批次距离尽可能远的K个点。具体选择步骤如下。
首先随机选择一个点作为名列前茅个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。
对于该问题还有个解决方案。之前我也使用过。熟悉weka的同学应该知道weka中的聚类有一个算法叫Canopy算法。
选用层次聚类或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。该方法对于k值的选择也是十分有效的。
点击获取参考资料
改进4
只能获取球状簇的根本原因在于,距离度量的方式。在李荟娆的硕士论文K_means聚类方法的改进及其应用中提到了基于2种测度的改进,改进后,可以去发现非负、类椭圆形的数据。但是对于这一改进,个人认为,并没有很好的解决K-means在这一缺点的问题,如果数据集中有不规则的数据,往往通过基于密度的聚类算法更加适合,比如DESCAN算法。
延伸阅读:
二、聚类与KMeans
与分类、序列标注等任务不同,聚类是在事先并不知道任何样本标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类别样本之间的相似度高,不同类别之间的样本相似度低(即增大类内聚,减少类间距)。
聚类属于非监督学习,K均值聚类是最基础常用的聚类算法。它的基本思想是,通过迭代寻找K个簇(Cluster)的一种划分方案,使得聚类结果对应的损失函数最小。其中,损失函数可以定义为各个样本距离所属簇中心点的误差平方和
以上就是关于k-means方法的内容希望对大家有帮助。