機器學習-聚類演算法
阿新 • • 發佈:2018-11-25
在無監督學習中,我們的訓練集可以寫成只有 , ……一直到 。我們沒有任何標籤 。
我們希望有一種演算法能夠自動的把這些資料分成有緊密關係的子集或是簇。
K-均值演算法(K-Means)
演算法步驟綜述
K-均值是一個迭代演算法,假設我們想要將資料聚類成n個組,其方法為:
- 首先選擇k個隨機的點,稱為聚類中心(cluster centroids);
- 簇分配(cluster assignment) 對於資料集中的每一個數據,按照距離K箇中心點的距離,將其與距離最近的中心點關聯起來,與同一個中心點關聯的所有點聚成一類。
- 移動聚類中心(move centroids) 計算 每一個組 的平均值,將該組所關聯的中心點移動到平均值的位置。
- 重複步驟 2-4 直至中心點不再變化。
定義損失函式變數
- 假設有K個簇, 表示樣本 當前所屬的簇的索引編號 ,
- 表示 第k個聚類中心 的位置,其中
- 根據以上定義:則 表示樣本 所屬簇的中心的 位置座標
K-means演算法的優化目標
損失函式為 每個樣本到其所屬簇的中心的距離和的平均值 ,優化函式的輸入引數為 每個樣本所屬的簇的編號 和每個簇中心的座標 這兩個都是在聚類過程中不斷變化的變數。此代價函式也被稱為 畸變函式(Distortion function)
K-means演算法步驟與優化函式
- 對於K-means演算法中的 簇分配(將每個樣本點分配到距離最近的簇) 的步驟實際上就是在最小化代價函式 ,即在 固定的條件下調整 的值以使損失函式的值最小。
- 對於K-means演算法中的 移動聚類中心(將聚類中心移動到分配樣本簇的平均值處) ,即在 固定的條件下調整 的值以使損失函式的值最小。
K均值演算法簇中心的隨機初始化 Random initialization
隨機初始化遵循法則
- 我們應該選擇 K小於m,即聚類中心點的個數要小於所有訓練集例項的數量
- 隨機選擇 K 個訓練例項,然後令 K 個聚類中心分別與這 K 個訓練例項相等
隨機初始化的侷限性
- 隨機初始化很容易把 初始化簇中心 分到相近的樣本中,這種初始化方式有其侷限性。
- K-均值的一個問題在於,它有可能會停留在一個區域性最小值處,而這取決於初始化的情況。
改進初始化方式–多次隨機初始化
- 假如隨機初始化K-means演算法100 (一般是50-1000) 次之間,每次都使用不同的隨機初始化方式,然後執行K-means演算法,得到100種不同的聚類方式,都計算其損失函式,選取代價最小的聚類方式作為最終的聚類方式。
- 這種方法在 K 較小的時候(2–10)還是可行的,但是如果 K 較大,這麼做也可能不會有明顯地改善。(不同初始化方式得到的結果趨於一致)
K均值演算法聚類數K的選擇 Choosing the Number of Cluters
- 沒有所謂最好的選擇聚類數的方法,通常是需要根據不同的問題,人工進行選擇的。選擇的時候思考我們運用 K-均值演算法聚類的動機是什麼,然後選擇能最好服務於該目的標聚類數。
肘部法則(Elbow method)
- 改變聚類數K,然後進行聚類,計算損失函式,拐點處即為推薦的聚類數 (即通過此點後,聚類數的增大也不會對損失函式的下降帶來很大的影響,所以會選擇拐點)
- 但是也有損失函式隨著K的增大平緩下降的例子,此時通過肘部法則選擇K的值就不是一個很有效的方法了(下圖中的拐點不明顯,k=3,4,5有類似的功能)
目標法則
- 通常K均值聚類是為下一步操作做準備,例如:市場分割,社交網路分析,網路叢集優化 ,下一步的操作都能給你一些評價指標,那麼決定聚類的數量更好的方式是:看哪個聚類數量能更好的應用於後續目的
檢視更多:http://xingtu.info