K-Means算法
K-means是無監督學習算法。
- K-Mean算法步驟:
- 首先隨機選定k個樣本點作爲初始簇中心;
- 計算所有樣本點到簇中心的距離;
- 每個樣本點選擇與它距離最近的簇中心作爲這個樣本點的簇;
- 更新簇中心;
- 重複2,3,4步,直到聚類結果保持不變。
注:這個k就是聚類的類別數,它是我們自己定的,沒有定的標準,主要看經驗
評價指標
- 最小化平方誤差
其中k是自定義的聚類類別數,是第i個簇,是簇的均值向量。
(1)式刻畫了簇內樣本圍繞簇均值向量的緊密程度,E越小,簇內樣本相似度越高。
算法改進
- K-Means++算法思想:
-
首先自定義k的大小
-
隨機選擇一個樣本點作爲簇中心
-
計算所有樣本點到這個簇中心的距離
-
選擇這些樣本點中距離這個簇中心的最遠的樣本點作爲下一個簇中心
-
重複3,4步,直到選出第k個簇中心
- k-means和k-means++的區別:
k-means在一開始就首先隨機選定了k個樣本點作爲k個簇中心;
k-means++是一個一個給出簇中心,先隨機選定一個樣本點作爲簇中心,然後計算出下一個簇中心。它使得初始的簇中心點儘可能地遠,有效避免選擇聚類中心的盲目性,穩定性和收斂速度都得到提高。
算法優缺點
- 優點
- 算法簡單快速;
- 在處理大數據集時,算法保持可伸縮性和高效性。
- 缺點
- k值選定困難;
- 對初始聚類中心敏感。隨機選擇初始聚類中心會導致算法的不穩定性,有可能陷入局部最優;
- 對噪聲和孤立點敏感。在計算簇均值時,那些噪聲和孤立點會對結果產生極大影響,導致結果不穩定;
- 通常只能發現數據分佈均勻的球狀簇,因爲它主要使用歐式距離函數度量數據對象間的相似度。