機器學習筆記031 | 無監督學習演算法——K均值(K-means)
1 無監督演算法要做什麼
在監督學習中,我們是先對數據給定了標籤,然後進行學習。
和這個不同的是,無監督學習(Unsupervised Learning)是沒有給定標籤的。
我們希望通過某些聚類演算法(Clustering Algorithm),自動就從這些數據中找到一些結構。
例如通過對市場的分割,方便精準地進行營銷:
例如對人群進行社交關係分類,自動推薦可能認識的人:
2 K均值(K-means)演算法
2.1 演算法的直觀印象
K均值(K-means)演算法是現在廣泛使用的聚類方法。
例如我們有這樣的數據:
演算法將執行如下步驟,最終收斂到局部最優解:
一、設置聚類中心
二、對附近的數據進行染色歸類三、移動聚類中心到對應類別數據的均值所在位置四、重複第二、三步,直到聚類中心不再移動
大概的過程如下圖所示:
2.2 演算法的具體執行
假如對於訓練樣本集 { x(1), x(2), x(3), … ,x(m) } ,我們有 K 個聚類。
我們將每個聚類中心標記為:μ1, μ2, μ3, …,μK 。
對於每一個數據點 x(i) ,其和所有聚類中心 μk 的距離記為:
|| x(i) - μk || 。我們需要找到使得這個距離最小的聚類 k ,然後使用 c(i) = k 進行標記。
例如我們總共有5個聚類中心,點 x(10) 距離每個聚類中心的距離為:
|| x(10) - μ1 || = 21
|| x(10) - μ2 || = 16|| x(10) - μ3 || = 11|| x(10) - μ4 || = 6
|| x(10) - μ5 || = 1
那麼就有 c(10) = 5 。
以上就是 2.1 中第二步所執行的過程。
接下來就是對同類數據,求得其均值,並以此作為新的聚類中心,也就是第三步。
例如,除了 c(10) = 5 之外,我們還得到 c(1) = 5 , c(5) = 5 , c(6) = 5 ,那麼就有:
2.3 演算法的優化目標
我們之前學習線性回歸、邏輯回歸的時候,都有一個優化目標,就是其代價函數。
對於K均值(K-means)演算法,同樣也有這樣的優化目標:那就是使得各個數據點距離聚類中心的距離總和最小,也就是下圖中所有紅線和藍線加起來的總長度最小。
K均值(K-means)演算法的代價函數是:
我們的優化目標就是 min J( c(1) , … , c(m) , μ1 , … , μK) 。
2.4 隨機初始化
對於這樣的訓練數據:
我們是希望把它們分成三類的:
但有時候,因為初始化的選擇,我們得到的不是全局最優解,而是局部最優解。得到的結果可能是這樣的:
也可能是這樣的:
這樣的分類結果,都不是我們所期望的。
面對這樣的問題,我們應該怎麼辦呢?
多次進行隨機初始化,以及運行 k-means 演算法,最終選擇代價函數最小的一個結果。
這個次數,可以在 50 到 1000 次左右。
隨著運行次數的增加,經常都能找到較好的局部最優解。
當然如果聚類中心數量 K 很大的話,得到的結果可能不會好太多。
2.5 聚類中心數量 K 的選擇
首先我們可以知道的是, K 應該小於訓練樣本數量 m,如果聚類中心的數量比訓練樣本數量還要大,那麼還分類個啥。
那這個數量應該如何選擇呢?
K 的大小,常常是模凌兩可的,例如下面這個圖:
我們既可以認為 K = 4 :
也可以認為 K = 2 :
有一個方法叫做肘部法則(Elbow Method),可以給我們提供一個參考。
例如下圖,隨著聚類中心個數 K 的增加,其代價函數計算的結果會下降:
我們說圖中這個位置(之後的下降都不太明顯),就是應該設置的聚類中心個數 K 。
但是有時候,我們繪出的圖形是這樣的:
這樣的情況,我們就找不到比較明顯的肘部。
所以說,肘部法則值得嘗試,但是對其結果不要抱有太大的期待。
對於聚類中心個數 K 的選擇,更多是人工進行的。
這主要看我們運行K均值(K-means)演算法來達到什麼目的。
例如一個 T-shirt 的銷售商,有客戶的一些身高和體重數據:
它可以將這些數據劃分為三組,對應著衣服的大小為 S、M、L:
也可以將這些數據劃分為五組,對應著衣服的大小為 XS、S、M、L、XL:
T-shirt 型號種類應該如何劃分,其實可以從銷售的角度考慮。
例如怎麼樣才能怎樣才能讓顧客購買的最多。
文章提前發布在公眾號:止一之路
推薦閱讀:
※如何訓練模型?(1)——最小二乘法
※集智:負基礎也能學會的機器學習(三)
※SRCNN 論文閱讀
※基於不平衡樣本的推薦演算法研究
TAG:機器學習 |