關於機器學習中C均值算法的相關介紹

前言

  在機器學習的無監督算法中,可能C均值算法是較早出現(筆者在韓家煒教授上世紀90年代所著的《數據挖掘》中最早看到)同時其若干變種可能也是應用最爲廣泛的一類無監督算法,只不過那時可能機器學習一詞使用的還不甚廣泛,而是叫做數據挖掘(Data Mining),不過無論採用何種稱謂,其本質其實並沒有什麼不同,而且需要說明的一點是,這種算法在業界又被稱作K均值算法(即KMeans)。

  在前面討論混合高斯聚類方法時,本來筆者提到無意闡述這個算法(可能過於簡單抑或它已經爛大街了?就像MINST庫被玩殘了一樣),但其有一個所謂的模糊C均值聚類,這個模型還是有些討論價值的。

   對於一般聚類算法而言,其實我們主要考量兩個原則,一個是類內聚合程度以及類間分離程度,故以下的相關討論一般都是圍繞這兩個原則進行的,包括後面會寫到的相關基於密度的無參數聚類算法,如削峯法以及描峯法等(其實對於其它非聚類算法而言,也一般需要遵從這兩個原則,而對於監督分類算法則不完全一樣,因爲樣本點已經被進行了標識,即打了標籤)。

基礎C均值算法

   根據類聚合原則而言,對於樣本的相關分類當然是類內的差異越小越好,而類間的差異是越大越好,這樣方能達到我們對於聚類的需求,但採用不同的類聚合評估函數會導致不同的聚類結果,而人們習慣上會使用樣本方差這個指標來評估它們之間的差異程度。

           如果我們使用軟性類劃分矩陣,則可以給出如下公式:

wKioL1nmmQ7yQuZVAAAOcbm7ins070.png-wh_50

   其中spacer.gif,而spacer.gif表示樣本的第i類的集合,而D是樣本與類差異的評估函數,那麼根據上式顯然我們能夠得到相關目標函數的表達式:

wKioL1nmmTiTqd-cAAAOMvWEitY052.png-wh_50

   對於上式而言,需要求解兩組參數,按照之前機器學習的經驗,我們可以交叉進行,即先固定一組參數,求解另一組,然後再優化另一組。

            先對參數類X進行求導並令其結果爲0,我們有:

wKioL1nmmafQs0DFAAAQznBhaGE338.png-wh_50

   根據公式3可得如下結果:

wKiom1nmnIzhY-t6AAAPcA93_MU949.png-wh_50

  

   然後固定參數X(注意這是一個具有維度爲C的向量)再求解參數u(這裏沒法對公式2求偏導了)。我們對於公式4的理解可以是這樣的,先隨機化歸屬度矩陣,然後計算類內的相關值,那麼如何再求解參數u?一般我們只要考慮對於每個樣本而言,其到所屬類的距離是不是大於某個閾值,如果是則將其在所屬度矩陣的賦值變爲1,而其它分量則改成0,否則修改成0,而將其所屬度值加到別的分量上(其實最終歸屬度矩陣都會變成One-Hot-Vector)。

  如此循環往復直到整體收斂。上述算法步驟其實與網上介紹的一般C均值聚類算法不太一樣,傳統的做法如下:

 

  1. 在樣本集合中選擇C個點作爲初始類中心;

  2. 在剩下的樣本點中選擇一個,計算其到各個中心點的距離,選取距離最短者將其歸爲那個類別;

  3. 選擇下一個樣本,重複2直到計算完所有樣本,若集合不發生變化或達到迭代上限則轉5否則轉4

  4. 根據當前的類劃分情況重新計算中心點,重複步驟2

  5. 結束算法。

 

  可以看出上述算法的複雜度爲O(NCt),其中N是樣本個數,C是類別數量,而t是迭代的次數。

 

         那麼C均值的算法存在什麼問題?其一就是最終劃分的結果仍是硬分類,而且對於初值的選取也會導致結果可能存在不同(會達到局部鞍點)或者收斂速度過慢。

模糊C均值算法

  在上節的C均值算法中,即便歸屬度矩陣的元素初始值不爲整數,但算法執行完畢後仍會得到樣本的硬分類,這個在很多場合是不太適用的,故本節主要討論模糊的C均值算法,即分類算法執行完成後,我們得到的是樣本的軟分類結果。

   爲了達到上述目標,我們對公式2加入約束,並使用拉格朗日乘數法,公式變爲如下形式(其中對於歸屬度矩陣的每個元素我們加入了m,這個被稱作加權歸屬度,一般它大於等於1):

wKiom1nmnNSzWzjOAAAQrbBlYkA547.png-wh_50

  對於上式,後面一部分就是增加的約束,可以明顯看出約束即爲spacer.gif,那麼同樣的分別對公式5求各個參數的偏導(與上節不同,由於使用了拉格朗日乘數法故含有三個參數需要求解),我們有:

wKiom1nmnQmi6ed4AAAP-pfxL3Q664.png-wh_50

  這個公式與之前相對應的公式並無太大差別,而對於參數spacer.gif而言,因爲使用了拉格朗日乘數法所以也能對公式5求取偏導,得:

wKioL1nmmoHRO6ZLAAASOxl60zQ928.png-wh_50

 至於上述公式是怎麼的來的?我們有如下推導(《機器學習》這本書沒有進行相關介紹,現筆者交代下過程以免造成誤解),對於參數λ的偏導,我們可以得到如下公式:

wKioL1nmmqawOOAxAABTfUAy2KQ389.png-wh_50

  綜合公式9和公式10,我們有如下的推導(注意這裏使用了下標j,而不是i,這是爲了進行一定程度的區分,其實意思上並沒有什麼不同):

wKioL1nmmsrhnX-XAABRlSXYA8w268.png-wh_50

  然後將以上公式帶回到公式10中就能得到最終的結果,得證。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章