無監督學習之K均值算法

前言

在之前的學習中,已經了解學習了一系列與監督學習有關的機器學習算法,本篇文章,將詳細講述與無監督學習相關的機器學習算法,所謂無監督學習就是根據類別未知(沒有被標記)的訓練樣本解決模式識別中的各種問題,稱之為無監督學習,即也就是自動的找到不同的類型,將不同的個體歸為不同的類型,也就是聚類問題。詳細介紹如下所示。

K均值(K-Means)算法

在無監督學習中,我們希望將一系列未加任何標記的數據能夠通過聚類算法自動地分成有緊密關系的子集或者簇。其中,K均值算法是應用最為廣泛的算法之一。

  • 算法原理
    K均值算法的算法原理如下所示:
    假設有一組訓練集,在訓練集中隨機生成兩個聚類中心(如圖中X所示,之所以生成兩個聚類中心是因為希望將數據分為兩類)。聚類算法是一個迭代算法,主要可以分為以下兩步:
    1. 簇分配:
      先隨機選取K個對象(本例中選取兩個對象)作為初始的聚類中心,然后計算每個訓練樣本與各個聚類中心之間的距離,把每個訓練樣本分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。
    2. 移動聚類中心:
      一旦全部訓練樣本都被分配了,每個聚類的聚類中心會根據聚類中已分配的對象被重新計算。即也就是聚類中心的位置會發生變化。

以上兩個步驟將不斷重復直到滿足某個終止條件。終止條件可以是以下任何一個:
1). 沒有(或最小數目)對象被重新分配給不同的聚類。
2). 沒有(或最小數目)聚類中心再發生變化。
3). 誤差平方和局部最小。
其過程如下圖所示:


  • 算法表示
    對于K均值算法的輸入有如下約定:
    用K表示簇的個數,用\{ x^{(1)},x^{(2)}……x^{(m)}\}表示訓練樣本數,x \in R^n,是一個n維向量。
    首先,隨機初始化K個聚類中心,記作\mu_1,\mu_2……\mu_K \in R^n,然后,重復一下步驟,直到滿足終止條件:
    Repeat \ \ \{
    \ \ \ \ \ for \ \ i = 1 \ \ to \ \ m:
    \ \ \ \ \ \ \ \ \ \ \ c^{(i)} := min(\left \| x^{(i)} - \mu_k\right \|^2)
    \ \ \ \ \ for \ \ k = 1 \ \ to \ \ K:
    \ \ \ \ \ \ \ \ \ \ \ \mu_k:=已分配給第k個簇的訓練樣本的平均值

\ \}

優化目標

與監督學習相關算法一樣,K均值算法也有優化目標函數或者最小化代價函數。K均值優化目標函數一方面可以幫助我們對算法進行調試,確保算法正常運行,另一方面,可以用優化目標函數幫助K均值算法找到更好的簇,避免局部最優解。
對于優化目標函數有如下標記:
c^{(i)}:表示當前樣本x^{(i)}所屬的簇的索引
\mu_k:表示第k個聚類中心的位置。
\mu_{c^{(i)}}:表示x^{(i)}所屬的簇的聚類中心。
優化目標函數可以用以下公式表示:
J(c^{(1)}……c^{(m)},\mu_{1}……\mu_{K}) = \frac{1}{m}\sum_{i=1}^{m}\| x^{(i)} - u_{c^{(i)}} \|^2

隨機初始化

在K均值算法中,有幾種方法可以實現聚類中心的初始化,但比較好的一種實現方式如下所示:

  1. 假設有K個聚類中心,其中K<m(訓練樣本數)。

  2. 隨機選取K個訓練樣本。

  3. 設定\mu_1……\mu_k等于選定的K個訓練樣本。

在K均值算法的實際應用過程中,需要多次運行K均值算法并且每次都要隨機初始化聚類中心,最后,得到一系列聚類中心和聚類結果。用得到的聚類中心和聚類結果計算能夠使得代價函數J最小的參數。

選擇聚類中心的數量

選擇聚類中心的數量并不容易,因為很難清楚數據應該分為幾類。在選擇聚類中心數量的問題上,有一個常用方法被稱作“肘部法則”如下圖所示:


選擇不同的聚類中心數量,會得到不同的代價函數的值。如上曲線所示,整個曲線如同一條胳膊,K=1,2時,曲線變化劇烈,K \geq3 時逐漸趨于平穩,K=3是一個很明顯的分界點,所以可以選擇聚類中心的數量為3。
但是,通常情況下很難得到如上所述的理想曲線,通常得到的曲線如下所示,很難確定分界點,所以“肘部法則”并不是一個完美的解決方案。

正如算法的設計是為了解決實際問題,選擇聚類中心的數量也是為了特定的后續目的,那么決定聚類數量更好的方法是評估不同的聚類數量是否能夠更好的解決后續目的,根據解決問題的實際效果選擇最為合適的聚類數量。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念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

推薦閱讀更多精彩內容

  • 聚類算法 前面介紹的集中算法都是屬于有監督機器學習方法,這章和前面不同,介紹無監督學習算法,也就是聚類算法。在無監...
    飄涯閱讀 41,414評論 3 52
  • 第一百零八課:無監督學習 聚類算法:第一個無監督學習算法(無標簽的數據)什么是無監督學習呢?對比:監督學習問題指的...
    帶刺的小花_ea97閱讀 814評論 0 3
  • 昨天花了一晚上今天又讀了一天,終于把《紅與黑》讀完了,說實話我讀這種小說感覺不到作者文筆的優美,構思的嚴謹獨到,只...
    ecc4b9de0993閱讀 1,637評論 1 8
  • 寫寫今天學到的知識, 簡單,少。 《mysql必知必會》:有 子查詢,聯結表,高級聯結,組合查詢,插入數據,更新和...
    Delevin_5d4c閱讀 169評論 0 0
  • “太好了!這樣的事情竟然發生在我身上!我又有可以學習…” 真的沒想到才得到的建議這么快就用上了,而且還發生在我身上...
    隨機人格閱讀 4,260評論 0 0