#Unsupervised learning(無監督學習)
- supervised learning(監督學習):有一系列標籤,然後用假設函數去擬合它;
- unsupervised learning(無監督學習):將這系列無標籤的數據輸入到算法中,然後讓算法找到一些隱含在數據中的結構;
#clustering algorithm(聚類算法)
能夠找出圖中所圈出的cluster(簇)的算法【無監督學習】:
#K-means algorithm(K均值算法)
最熱門最爲廣泛運用的聚類算法,:
1、隨機生成兩點,這兩點叫做cluster centroids(聚類中心);選兩點是因爲想把數據聚成兩類。
2、K均值算法是一個迭代算法,會做兩件事情,第一個是cluster assignment step(簇分配),第二個是move centroid step(移動聚類中心);
- K均值算法中每次內循環的第一步是要進行簇分配,即遍歷數據集,然後根據每個點是與紅色聚類中心更近還是與藍色聚類中心更近,來將每個數據點分配給兩個聚類中心之一,即將每個點染成紅色或藍色:
- 內循環的第二步是移動聚類中心,將兩個聚類中心移動到同色的點的均值處:
- 然後再進入下一個簇分配步驟,即再次檢查所有的無標籤樣本,然後根據這些點是與紅色還是藍色聚類中心更近將其塗成紅色或是藍色,然後再移動聚類中心...
3、如果迭代時中心和點的顏色不再變,則k均值已經聚合了。
更規範的格式:
- K均值算法接收兩個輸入,參數k表示你想從數據中聚類出的簇的個數,第二個是一系列無標籤的只用x來表示的數據集;
- 約定X^(i)是一個n維實數向量,即訓練樣本是n維向量
1、隨機初始化K個聚類中心,對應之前圖中叉的位置;
2、循環做:對於每個訓練樣本,用變量c^(i)表示第1到第K個最接近x^(i)的聚類中心,所以c^(i)取值爲1到K;μk等於這個簇中所有點的均值;如果存在一個沒有點的聚類中心,常見的做法就是直接移除那個聚類中心,或者如果還是想有k個聚類中心,則隨機初始化這個聚類中心。
K均值算法另一個常見的應用,解決non well seperated cluster(分離不佳的簇)問題:
#Optimization objective(優化目標)
K均值算法也有一個優化目標函數或者一個用於最小化的代價函數,這個函數有時也叫distortion cost function(失真代價函數)或是K均值算法的失真:
- K均值算法要做的就是找到參數c^(i)和μ_i,也就是能找到代價函數J的c和μ。
- 簇分配實際上就是在最小化代價函數J關於變量c,移動聚類中心最小化代價函數J關於變量μ:
*wrt是with respect to(關於)的縮寫
爲什麼要了解K均值的優化目標函數?
1、能幫助我們對學習算法進行調試,確保K均值算法運行正確;
2、運用它可以幫助K均值算法找到更好的簇並且避免局部最優解。
#Random initialization(隨機初始化)
如何隨機初始化cluster centroid(聚類中心):
- 隨機挑選K個訓練樣本;
- 這個方法最爲推薦;
- K均值算法最終可能會收斂得到不同的結果,這取決於聚類的初始化狀態
- K均值算法可能會落在local optima(局部最優):
- 右下角的兩個代表不同的局部最優化;
- 嘗試多次隨機初始化並且運行K均值算法很多次可以得到一個足夠好的結果:
- 在所有這100種分類數據的方法中,選取代價最小的一個,也就是distortion(畸變值)最小的;
- 如果K很大,則多次隨機初始化不會有太大改善。
#Choosing the number of clusters(選擇聚類數量)
即如何選擇參數K的值:
1、最常用的仍然是通過觀察可視化的圖或者通過觀察聚類算法的輸出等等。
- 選擇聚類數量並不容易很多程度上是因爲通常在數據集中,不清楚有多少個聚類。
2、Elbow method(肘部法則):
- 是一個值得嘗試的方法,但是不能期望它能夠解決任何問題。
3、如果後續目的如市場分割能給你一個評估標準,那麼決定聚類的數量更好的方法是看哪個聚類數量能更好地應用於後續目的:
PS.內容爲學習吳恩達老師機器學習的筆記【https://study.163.com/course/introduction/1004570029.htm】