k-means算法性能分析与改进方法

1、k-means算法的性能分析

主要优点:

是解决聚类问题的一种经典算法,简单、快速。

对处理大数据集,该算法是相对可伸缩和高效率的。因为它的复杂度是0 (n k t ) , 其中, n 是所有对象的数目, k 是簇的数目, t 是迭代的次数。通常k <

当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好。

主要缺点

在簇的平均值被定义的情况下才能使用,这对于处理符号属性的数据不适用。

必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同结果。

它对于“躁声”和孤立点数据是敏感的,少量的该类数据能够对平均值产生极大的影响。

K-Means算法对于不同的初始值,可能会导致不同结果。解决方法:

1.多设置一些不同的初值,对比最后的运算结果)一直到结果趋于稳定结束,比较耗时和浪费资源

2.很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这也是 K-means 算法的一个不足。有的算法是通过类的自动合并和分裂,得到较为合理的类型数目 K.

2、k-means算法的改进方法——k-prototype算法

k-Prototype算法:可以对离散与数值属性两种混合的数据进行聚类,在k-prototype中定义了一个对数值与离散属性都计算的相异性度量标准。

K-Prototype算法是结合K-Means与K-modes算法,针对混合属性的,解决2个核心问题如下:

1.度量具有混合属性的方法是,数值属性采用K-means方法得到P1,分类属性采用K-modes方法P2,那么D=P1+a*P2,a是权重,如果觉得分类属性重要,则增加a,否则减少a,a=0时即只有数值属性

2.更新一个簇的中心的方法,方法是结合K-Means与K-modes的更新方法。

3、k-means算法的改进方法——k-中心点算法

k-中心点算法:k -means算法对于孤立点是敏感的。为了解决这个问题,不采用簇中的平均值作为参照点,可以选用簇中位置最中心的对象,即中心点作为参照点。这样划分方法仍然是基于最小化所有对象与其参照点之间的相异度之和的原则来执行的。


分享到:


相關文章: