K-means聚類演算法——機器學習
聚類屬於無監督學習,以往的迴歸、樸素貝葉斯、SVM 等都是有類別標籤 y 的,也就 是說樣例中已經給出了樣例的分類。而聚類的樣本中卻沒有給定 y,即監督樣本。
在聚類問題中,給我們的訓練樣本是{?(1),…,?(?)},每個?(?) ∈ ℝ?,沒有了 y。
K-means 演算法是將樣本聚類成 k 個簇(cluster),具體演算法描述如下:
K 是我們事先給定的聚類數,?(i)代表樣例 i 與 k 個類中距離最近的那個類,?(i)的值是 1 到 k 中的一個。質心??代表我們對屬於同一個類的樣本中心點的猜測。
其中重複過程的理解:
①對於每個樣例,計算其屬於的類,為c(i)
②對於每個類,再重新計算質心
拿星團模型來解釋就 是要將所有的星星聚成 k 個星團,首先隨機選取 k 個宇宙中的點(或者 k 個星星)作為 k 個 星團的質心,然後第一步對於每一個星星計算其到 k 個質心中每一個的距離,然後選取距離 最近的那個星團作為?(i),這樣經過第一步每一個星星都有了所屬的星團;第二步對於每一 個星團,重新計算它的質心??(對裡面所有的星星座標求平均)。重複迭代第一步和第二步 直到質心不變或者變化很小。
下圖展示了對 n 個樣本點進行 K-means 聚類的效果,這裡 k 取 2。
ab圖中都為綠色表示還未分類,X代表質心,紅與藍表示兩種類。
K-means 面對的第一個問題是如何保證收斂,前面的演算法中強調結束條件就是收斂,可 以證明的是 K-means 完全可以保證收斂性。下面我們定性的描述一下收斂性,我們定義畸變 函式(distortion function)如下:
J 函式表示每個樣本點到其質心的距離平方和。K-means 是要將 J 調整到最小。假設當 前 J 沒有達到最小值,那麼首先可以固定每個類的質心??,調整每個樣例的所屬的類別?(i)來 讓 J 函式減少,同樣,固定?(i),調整每個類的質心??也可以使 J 減小。這兩個過程就是內循 環中使 J 單調遞減的過程。當 J 遞減到最小時,μ和 c 也同時收斂。(在理論上,可以有多組 不同的μ和 c 值能夠使得 J 取得最小值,但這種現象實際上很少見)。 由於畸變函式 J 是非凸函式,意味著我們不能保證取得的最小值是全域性最小值,也就是 說 k-means 對質心初始位置的選取比較感冒,但一般情況下 k-means 達到的區域性最優已經滿 足需求