K-Means聚類和EM算法復習總結


摘要:

  1.算法概述

  2.算法推導

  3.算法特性及優缺點

  4.注意事項

  5.實現和具體例子

  6.適用場合

內容:

1.算法概述

  k-means算法是一種得到最廣泛使用的聚類算法。 它是將各個聚類子集內的所有數據樣本的均值作為該聚類的代表點。

  k-means 計算過程:

  (1)隨機選擇k個類簇的中心

  (2)計算每一個樣本點到所有類簇中心的距離,選擇最小距離作為該樣本的類簇

  (3)重新計算所有類簇的中心坐標,直到達到某種停止條件(迭代次數/簇中心收斂/最小平方誤差)

     期望最大化(Expectation Maximization)是在含有隱變量(latent variable)的模型下計算最大似然的一種算法

  image

 

其中Z是隱變量,theta是待定參數;E-step是固定參數theta,求Z的期望;M-step是theta的極大似然估計(下文會有詳細推導)

擴展:k均值的其他變種(二分k均值,kmeans++,mini-batch kmeans),層次聚類,密度聚類(DBscan,密度最大值聚類)吸引子傳播算法(AP),譜聚類,標簽傳遞算法(LPA)

擴展:聚類的衡量指標:均一性,完整性,V-measure,輪廓系數

 

2.算法推導

2.1 從kmeans目標函數/損失函數角度解釋其收斂性:

  

  從損失函數角度講,kmeans和線性回歸都是服從高斯分布的。從平方距離(L2范數球)上講,k均值適合處理類圓形數據。

  以上證明k均值聚類中心的梯度損失方向就是其類簇內的均值,從而從梯度下降算法/凸優化上解釋了kmeans是收斂的。

 

2.2 使用EM算法推導K-means:

  k-means算法是高斯混合聚類在混合成分方差相等,且每個樣本僅指派一個混合成分時候的特例。k-means中每個樣本所屬的類就可以看成是一個隱變量,在E步中,我們固定每個類的中心,通過對每一個樣本選擇最近的類優化目標函數,在M步,重新更新每個類的中心點,該步驟可以通過對目標函數求導實現,最終可得新的類中心就是類中樣本的均值。

2.3 EM算法的理論基礎

  期望--參見概率論雜記

  極大似然估計--參見數理統計與參數估計雜記

  Jensen不等式--參見凸函數與凸集雜記

2.4 EM算法的具體推導

  先貼一個圖,說明EM算法在做什么:

圖中x是隱變量,不方便直接使用對數極大似然法求解參數thera,EM的策略就是先隨便給一個條件概率p1(x1|thera),然后找到一個l(thera)的下界函數r(x1|thera),求r的最大值p2(x2|thera),再找到經過p2點的下界函數r2(x2|thera),重復該過程直到收斂到局部最大值。

 

      給定的訓練樣本是clip_image023,樣例間獨立,我們想找到每個樣例隱含的類別z,能使得p(x,z)最大。

    

  其中是樣本i為組分z的概率,最后一步可以看作是關於的期望的凹函數的Jensen不等式

  當不等式變成等式時,說明我們找到了最接近clip_image028[4]的函數。按照這個思路要想讓等式成立,需要讓隨機變量變成常數值,這里得到:

      clip_image063

      c為常數,不依賴於clip_image065。對此式子做進一步推導,我們知道clip_image067,那么也就有clip_image069,那么有下式:

      clip_image070

  

在固定其他參數clip_image026[2]后,clip_image072的計算公式就是后驗概率,解決了clip_image072[1]如何選擇的問題。這一步就是E步,建立clip_image028[5]的下界。

M步,就是在給定clip_image072[2]后,調整clip_image026[3],去極大化clip_image028[6]的下界

  深入:EM的收斂性證明;推導混合高斯模型

3.算法特性及優缺點

  特性:本算法需要確定k個划分以到達平方誤差最小。當聚類是密集的,且類與類之間區別明顯時,效果較好。

  優點:

    (1)原理簡單,實現容易;

    (2)對於處理大數據集,這個算法是相對可伸縮和高效的

    (3)當簇近似為高斯分布時,它的效果較好

  缺點:

    (1)在簇的平均值可被定義的情況下才能使用,可能不適用某些應用

    (2)初始聚類中心的選擇比較敏感,可能只能收斂到局部最優解(改進:選取距離盡可能遠的點作為初始聚類 實現kmeans++)

    (3)必須事先確定K的個數 (根據什么指標確定K)

    (4)算法復雜度高O(nkt)

    (5)不能發現非凸形狀的簇,或大小差別很大的簇

      (6)對噪聲和孤立點數據敏感

4.注意事項

  k-means初值的選擇:k-means是初值敏感的,可以通過根據到簇中心距離,給樣本點不同的隨機概率,從而避免初值敏感問題,kmeans++即此算法的實現

  k值的選擇:業務上有具體的分類數最好;如果沒有,采用機器學習中的一些指標,比如損失函數最小,根據層次分類找到比較好的k值,聚類的輪廓系數等等。

  異常點處理:去除異常點:離群值(3倍以上標准差)

      缺失值處理:特殊值填充;或者以平均值(沒有數據傾斜)/中值(有數據傾斜)替換。

  kmeans適用的場合:高斯分布

  標准化:需要計算樣本間的距離;為了避免某一維度的取值范圍過大,故需要做標准化到0,1區間 

  后處理:具有最大SSE值的簇划分為兩個簇,具體實現只要將屬於最大簇的數據點用K-均值聚類,設定簇數k=2即可。

      為了保證簇總數不變,可以合並最近的質心,或者合並兩個使得SSE值增幅最小的質心。

5.實現和具體例子

  《機器學習實戰》中的k-mean和二分k-means以及基於地點坐標的聚類

  spark mllib的kmeans實現

   對乳腺癌數據集做聚類

  對購物用戶進行聚類並顯示

  對世界杯數據做聚類

  混合高斯模型應用:OpenCV_基於混合高斯模型GMM的運動目標檢測語音背景音提取

  

6.適用場合

  支持大規模數據

  特征維度

  是否有 Online 算法:有,spark mllib的流式k均值

  特征處理:支持數值型數據,類別型類型需要進行0-1編碼

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM