機器學習 - K-Means、K-Means++ 以及 ISOData
阿新 • • 發佈:2019-01-01
機器學習 - K-Means、K-Means++ 以及 ISOData
K-Means、K-Means++ 以及 ISOData 都是聚類演算法,它們通過計算樣本點到聚類中心的距離來進行類別劃分。下面分別介紹這三種方法。
-
K-Means
“物以類聚,人以群分”,K-Means 演算法就是降相似的樣本劃定為同一類別,而其中的 K 是指將資料聚成 K 類。
演算法步驟:
- 從資料集構成的樣本空間中隨機選取 K 個聚類中心
- 對每一個樣本 計算其到 K 個聚類中心的距離,即每個樣本 計算 K 個距離 ,並將距離最近的中心所代表的類別設為 類別。
- 針對每個中心 ,分別計算各自從屬它們的所有樣本的中心:
- 重複 2,3 步直到聚類中心不在變化,或變化小於某一閾值
對於 K-Means 演算法,類別個數 K 的選取十分重要:
-
K 值越小,模型越欠擬合,偏差越大,對資料不能充分學習(一個簇類包含了一半的資料,效果應該不會太好)。
-
K 值越大,模型越容易過擬合,方差越大,對噪聲敏感。(有可能將幾個噪聲點也劃分出一個類別,這也是不好的)
(對偏差與方差的講解可參照此文 機器學習 - KNN、偏差與方差)
對於 K 值,要與 KNN 中的 K 有所區分:
- KNN 中的 K 是指被分類樣本類別的決策,受周圍 K 個樣本影響;
- K-Means 中的 K 是指最終樣本要被劃分成 K 個類別。
在 K-Means 演算法中,第一步:初始聚類中心的選取也非常重要,K-Means 對初始聚類中心是敏感的,會影響到最終的聚類結果。
針對 K-Means 演算法對於 K 值地選取以及初始聚類中心的選取兩個薄弱點,可以適用 K-Means++ 與 ISOData 方法進行改進。
-
K-Means++
K-Means++ 的改進思想為:對於初始聚類中心,我們儘可能地讓各聚類中心之間距離儘可能地遠,也就是讓聚類劃分的類別之間區別儘量明顯。
假設
-
從資料集中隨機選取 1 個樣本最為第一個初始聚類中心 :
-
而後對每一個樣本點計算其到所有 已有中心 的距離,並選取最小值設為此樣本的
-
計算每個樣本被選為下一個聚類中心的概率 ,並計算所有樣本按序號順序排列後的累積概率 ,並以此生成累計概率分佈。
例如, ,則 。
樣本序號 0.3 0.4 0.3 0.3 0.7 1 -
由
-