Andrew Ng機器學習課程筆記(十二)之無監督學習之K-means聚類演算法
阿新 • • 發佈:2019-01-18
Preface
Unsupervised Learning(無監督學習)
K-means聚類演算法
Unsupervised Learning
我們以前介紹的所有演算法都是基於有類別標籤的資料集,當我們對於沒有標籤的資料進行分類時,以前的方法就不太適用了。我們對於這樣的資料集的分類叫做,聚類。對於對於這樣的資料集的學習演算法叫做,無監督學習。
K-means聚類演算法
K-means聚類演算法的目標就是將給定的資料集分成 類。( 由我們自己指定)
演算法內容
- 隨機選取n個聚類中心, 。
- 重複下面過程直到收斂 {
對於每一個樣本
對於每一個聚類 ,計算屬於的類的聚類中心:
}
在上述演算法過程中, 表示樣本 到聚類中心點集合的最小值(表示為樣本 屬於取得最小值的那個聚類中心點); 表示為聚類中心,即為屬於這個的所有樣本的均值。
下圖為選擇k=2的聚類過程:
收斂驗證
K-means 演算法面對有一個重要問題時如何保證收斂,在上述演算法內容中強調結束條件就是收斂,所以證明K-means 演算法可以收斂至關重要。
首先,我們定義畸變函式(distortion function)
J函式表示每個樣本點到其質心的距離平方和。K-means是要將J調整到最小。假設當前J沒有達到最小值,那麼首先可以固定每個簇中心 ,調整每個樣例的所屬的類別 來讓J函式減少,同樣,固定 ,調整每個簇中心 也可以使J減小。這兩個過程就是內迴圈中使J單調遞減的過程。當J遞減到最小時, 和 也同時收斂。(在理論上,可以有多組不同的 和 值能夠使得J取得最小值,但這種現象實際上很少見)。其實整體來看,這個演算法就是座標上升演算法。
如果畸變函式J是非凸函式,意味著我們不能保證取得的最小值是全域性最小值,也就是說k-means對簇中心初始位置的選取比較敏感,但一般情況下k-means達到的區域性最優已經滿足需求。但如果你怕陷入區域性最優,那麼可以選取不同的初始值跑多遍k-means,然後取其中最小的J對應的 和 輸出。