K 均值算法

均值算法是一種典型的無監督學習算法,用來對數據進行分類。

聚類問題 Clustering

針對監督式學習,輸入數據為 (x, y) ,目標是找出分類邊界,即對新的數據進行分類。而無監督式學習只給出一組數據集 ${x_1, x_2, ... , x_m}$ ,目標是去找出這組數據的模式特征,比如哪些數據是一種類型的,哪些數據是另外一種類型的。典型的無監督式學習包括市場細分,通過分析用戶數據,來把一個產品的市場進行細分,找出細分人群。另外一個是社交網絡分析,分析社交網絡中的參與人員的不同特點,根據特點區分出不同群體。這些都是無監督式學習里的聚類 (Clustering) 問題。

K 均值算法

K 均值算法算法就是一種解決聚類問題的算法,它包含兩個步驟:

  • 給聚類中心分配點:計算所有的訓練樣例,把他分配到距離某個聚類中心最短的的那聚類里。
  • 移動聚類中心:新的聚類中心移動到這個聚類所有的點的平均值處。

一直重復做上面的動作,直到聚類中心不再移動為止。這個時候我們就探索出了數據集的結構了。可以通過一個動畫來直觀地看一下 K 均值算法聚類的過程:

k-means animation

用數學的方法來描述 K 均值算法如下:

算法有兩個輸入信息。一是 K 表示選取的聚類個數;二是訓練數據集 ${x^{(1)}, x^{(2)}, ... , x^{(m)}}$。

  1. 隨機選擇 K 個聚類中心 $u_1, u_2, ... , u_k$。
  2. 從 1 - m 遍歷所有的數據集,計算 $x^{(i)}$ 分別到 $u_1, u_2, ... , u_k$ 的距離,記錄距離最短的聚類中心點。然后把 $x^{(i)}$ 這個點分配給這個聚類。令 $c^{(i)} = j$ 其中 $u_j$ 就是與 $x^{(i)}$ 距離最短的聚類中心點。計算距離時,一般使用 $| x^{(i)} - u_j |^2$ 來計算。
  3. 從 1 - K 遍歷所有的聚類中心,移動聚類中心的新位置到這個聚類的均值處。即 $u_j = \frac{1}{c} \left( \sum_{d=1}^c \right)$ ,其中 c 表示分配給這個聚類的訓練樣例點的個數。如果特殊情況下,沒有點分配給這個聚類中心,那么說明這個聚類中心就不應該存在,直接刪除掉這個聚類中心,最后聚類的個數變成 K - 1 個。
  4. 重復步驟 2 ,直到聚類中心不再移動為止。

K 均值算法成本函數

K-means cost function

其中, $c^{(i)}$ 是訓練樣例 $x^{(i)}$ 分配的聚類序號;$u_{c^{(i)}}$ 是 $x^{(i)}$ 所屬的聚類的中心點。K 均值算法的成本函數的物理意義,就是訓練樣例到其所屬的聚類中心點的距離的平均值

隨機初始化聚類中心點

假設 K 是聚類的個數,m 是訓練樣本的個數,那么必定有 $K < m$。在隨機初始化時,隨機從 m 個訓練數據集里選擇 K 個樣本來作為聚類中心點。這是正式推薦的隨機初始化聚類中心的做法。

在實際解決問題時,最終的聚類結果會和隨機初始化的聚類中心點有關。即不同的隨機初始化的聚類中心點可能得到不同的最終聚類結果。因為成本函數可能會收斂在一個局部最優解,而不是全局最優解上。一個解決方法是多做幾次隨機初始化的動作,然后訓練出不同的取類中心點以及聚類節點分配方案。然后用這些值算出成本函數,最終選擇那個成本最小的。

比如,假設我們做 100 次運算,步驟如下:

  1. 隨機選擇 K 個聚類中心點
  2. 運行 K 均值算法,算出 $c^{(1)}, c^{(2)}, ... , c^{(m)}$ 和 $u_1, u_2, ... , u_k$
  3. 使用 $c^{(1)}, c^{(2)}, ... , c^{(m)}$ 和 $u_1, u_2, ... , u_k$ 算出最終的成本值
  4. 記錄最小的成本值,然后跳回步驟 1,直到達到最大運算次數

這樣我們可以適當加大運算次數,從而求出全局最優解。

選擇聚類的個數

怎么樣選擇合適的聚類個數呢?實際上聚類個數和業務有緊密的關聯,比如我們要對 T-Shirt 大小進行聚類分析,我們是分成 3 個尺寸好呢還是分成 5 個尺寸好?這個更多的是個業務問題而非技術問題。3 個尺寸可以給生產和銷售帶來便利,但客戶體驗可能不好。5 個尺寸客戶體驗好了,但可能會給生產和庫存造成不便。

Elbow
Elbow

從技術角度來講,也是有一些方法可以來做一些判斷的。我們可以把聚類個數作為橫坐標,成本函數作為縱坐標,這樣把成本和聚類個數的數據畫出來。如上圖所示。大體的趨勢是隨著 K 值越來越大,成本越來越低。我們找出一個拐點,即在這個拐點之前成本下降比較快,在這個拐點之后,成本下降比較慢,那么很可能這個拐點所在的 K 值就是我們要尋求的最優解。

當然,這個技術方法并不總是有效,我們很可能會得到一個沒有拐點的曲線,這樣的話,就必須和業務邏輯結合以便選擇合適的聚類個數。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容