1. 程式人生 > >吳恩達機器學習(第十四章)---無監督學習kmeans演算法

吳恩達機器學習(第十四章)---無監督學習kmeans演算法

一、kmeans演算法

Kmeans演算法的流程:

1.根據我們要分的類別數,就是你要將資料分成幾類(k類),隨機初始化k個點(暫且稱為類別點)

2.計算每個資料點到k個類別點的距離,將其歸類到距離最近的那個類別點

3.計算每一類中包含的資料點的位置的平均值,比如,包含a(x1,y1),b(x2,y2)兩個點,那麼平均值就是(\frac{x1+x2}{2},\frac{y1+y2}{2}),z再將這個值賦給這個類別的類別點

4.重複2,3

1

二、優化目標 

J(c^1,c^2...,\mu _1...\mu_k)=\frac{1}{m}\sum_{i=1}^{m}{\left \| x^i-\mu_{c_i} \right \|^2}

優化目標就是找出距離該xi點最近的類別點,c^i表示得時類別點的下標(index),u表示的時類別點

三、隨機初始化

當我們初始化的點比較好的時候,我們就能得到正確的分類結果,但是如果不好就會得到誤差比較大的結果(收斂到區域性最優解)。

 圖一                                                             圖二

如果我們初始化的點為圖一中的點,那麼最終會得到圖二的最終結果,顯然並不是我們想要的結果。

我們使用以下方法:

1.隨機初始化k個點

2.使用kmeans演算法計算。

3.計算代價函式

4.迴圈多次執行1,2,3

最終我們選擇代價函式的結果最小的那種分類方案

 

所以我們要使用隨機初始化