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算法對於孤立點是敏感的。為了解決這個問題,不採用簇中的平均值作為參照點,可以選用簇中位置最中心的對象,即中心點作為參照點。這樣劃分方法仍然是基於最小化所有對象與其參照點之間的相異度之和的原則來執行的。


分享到:


相關文章: