機器學習入門筆記系列(10) | K-means 演算法
樣本 被分配到的簇的索引{1,2, ..., K}
第 k 簇的聚類中心
一、K-means 執行過程
K-Means 演算法是最流行和廣泛使用的無監督學習演算法,用於自動將資料分組為相干子集。K-Means 演算法屬於聚類演算法
下圖展示 K = 2 時 K-means 演算法執行過程例項。
用文字總結一下 K=2時, K-means 演算法的執行過程:
- 初始化初始化兩個聚類中心;
- 簇分配:計算每個樣本到兩個聚類中心的距離,並將樣本分配到離它最近的聚類中心所在的簇中;
- 更新聚類中心:計算兩個簇中所有點的平均值,並將兩個簇的聚類中心更新為該平均值;
- 重複(2),(3) 操作,直至迭代次數完成或者聚類中心不再改變。
二、K-means 演算法
通過上述的執行過程,K-means 演算法實現如下:
Tips : 如果出現有一個聚點在歸類完成後,沒有一個樣本點屬於該簇。通常做法是刪除該聚點,此時變成 K-1 means;也可以沒有初始化聚類中心
2.1 代價函式
簡單的來解釋,代價函式 = 每個樣本與所在簇的聚類中心的距離平方的平均值
我們的優化目標就是 。如何實現這優化目標呢?
其實實現 一直貫穿於 K-means 演算法。
- 簇分配:我們固定了聚類中心,即固定了 ,將樣本分配到離它最近的聚類中心所在的簇中,這相當於當固定 ,通過改變 來 ;
- 更新聚類中心:我們固定了每個樣本所在的簇,即固定了 ,計算每個簇的所有點的平均值並更新為簇的新的聚類中心,即改變了 ,這就實現 。
總結一下,就是:
Tips: K-means 的代價函式值不可能上升,它應該是不斷下降。
2.2 隨機初始化聚類中心
初始化聚類中心不同,最後形成的簇就會不同。如果初始化聚類中心不好,K-means 達到陷入區域性最優情況,如下圖所示。
那麼,如何初始化聚類中心呢?這裡有 2 點建議:
- ,即劃分的簇的數量 K 應該小於樣本數量 m;
- 建議隨機選取樣本中 K 個樣本作為初始化的聚類中心
減小 K-means 陷入區域性最優的解決方案:構建多組初始化聚類中心,分別執行 K-means 演算法,最終選取代價函式值最小的那組。
實驗證明,當 時,多次隨機初始化方法對演算法有很大的改善;而當 時,多次隨機初始化方法不會對你的演算法有很大的改善。
三、K-means 應用
除了上述,K-means 還可以運用於市場的劃分等等實際場景中。
總結
參考文獻
- 吳恩達機器學習 week8
相關文章
- k-means演算法筆記演算法筆記
- 機器學習入門筆記——如何理解梯度下降機器學習筆記梯度
- yidajiabei 的演算法筆記系列—— C / C + + 快速入門演算法筆記
- 機器學習筆記(KNN演算法)機器學習筆記KNN演算法
- vue 基礎入門筆記 10Vue筆記
- 10.Spring入門筆記Spring筆記
- 機器學習經典演算法之K-Means機器學習演算法
- 機器學習演算法學習筆記機器學習演算法筆記
- 機器學習實戰ByMatlab(3):K-means演算法機器學習Matlab演算法
- ClickHouse入門筆記筆記
- vue入門筆記Vue筆記
- Docker 入門筆記Docker筆記
- spark入門筆記Spark筆記
- Redis入門筆記Redis筆記
- NPM入門筆記NPM筆記
- NSIS入門筆記筆記
- Go入門筆記Go筆記
- python機器學習筆記:EM演算法Python機器學習筆記演算法
- 機器學習筆記之Kmeans演算法機器學習筆記演算法
- 機器學習筆記(1): 梯度下降演算法機器學習筆記梯度演算法
- 機器學習入門機器學習
- 機器學習--白板推導系列筆記1 開篇機器學習筆記
- linux入門筆記Linux筆記
- Python入門筆記Python筆記
- Python 入門筆記Python筆記
- selenium 入門筆記筆記
- ByteBuddy入門筆記筆記
- Haskell 入門筆記(四)Haskell筆記
- Swift快速入門筆記Swift筆記
- JavaScript入門筆記(2)JavaScript筆記
- 【安卓筆記】ormlite入門安卓筆記ORM
- MySQL入門筆記2MySql筆記
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 流式機器學習演算法的入門和認知機器學習演算法
- 機器學習入門學習筆記:(2.1)線性迴歸理論推導機器學習筆記
- 機器學習—聚類5-1(K-Means演算法+瑞士捲)機器學習聚類演算法
- 機器學習之k-means聚類演算法(python實現)機器學習聚類演算法Python
- 機器學習筆記機器學習筆記