[機器學習首部曲] 聚類分析 K-Means / K-Medoids

前些日子,我們討論的都是有標籤(知道答案)的監督式學習建模方式。今天,我們要來聊聊屬於沒有標籤(不知道答案)的非監督式學習,K-means。

還記得我們前幾單元在實作篇時常討論的鳶尾花分類案例嗎? 當時我們除了擁有這些鳶尾花花萼及花瓣的長度跟寬度外,我們還知道這先鳶尾花分別屬於哪種類型。因此,當我們建好模型以後,可以透過對答案的方式去檢視我們的成果,並修正我們的模型,這就是監督式學習。 想像一下,現在我們僅剩下這些鳶尾花花萼及花瓣的長度及寬度特徵,並不知道他們究竟屬於那些類型,也不曉得總共有多少種鳶尾花。這時,想要分類這些鳶尾花,我們只能透過特徵的分析,把特徵相近的鳶尾花分成同一類型,這就是所謂的聚類分析,屬於不知道答案的非監督式學習。

什麼是K-means?

回到正題,什麼是K-means呢? K-means是一種向量量化方法的分類方式。如果我們今天想把所有樣本分成K類,透過這個演算法,最後我們會將這些樣本劃分到離他們最接近的中心點。講白話就是以特徵相似程度來判定類別的物以類聚啦!

K-means的運作原理

K-means的運作原理其實很簡單,主要分為以下幾個步驟:

步驟1. 首先,我們要先決定想要把樣本分成幾類,比方說K纇
步驟2. 隨機給定K個中心點 (虛擬點,非樣本點)
步驟3. 計算每個樣本與每個中心點之間的距離,劃分與最近近的中心點為一群
步驟4. 用每個樣本的座標來計算每群樣本的新中心點,並以新中心點取代舊中心點
步驟5. 重複步驟3與4,直到中心點不再變動為止

詳細中心點移動過程歡迎參考影片。

K-means的應用

K-means的應用相當廣泛,舉凡客戶分類、文檔分類等等,尤其是在某特別類型的抓取有著不錯的表現,比方說判別借貸風險客戶、詐保客戶、危險犯罪份子等等。

K-means的優缺點

K-means的優點為:計算速度快,且容易理解(因為就是把特徵相近的判定成同一群)。

缺點為: 平均值的算法易受極端值得影響,且對於類別型變數來講需考慮計算平均值並無意義,故只適用於數值型的資料。另外,當樣本數量差異過大時,也較無法達到良好的分類效果。

補充: K-medoids

因K-medoids與K-means的運作模式非常相近,讓我們一起來比較看看。
以下為K-medoids的運作模式:

步驟1. 同樣,我們要先決定想要把樣本分成幾類,比方說K纇
步驟2. 隨機給定K個中心點 (實體點,隨機選定樣本點)
步驟3. 計算每個樣本與每個中心點之間的距離,劃分與最近近的中心點為一群
步驟4. 每個群體中分別計算樣本點之間的距離,選取讓所有距離和最小的樣本點為新中心點,並以新中心點取代舊中心點
步驟5. 重複步驟3與4,直到中心點不再變動為止

綜合以上,我們可以很清楚的發現到,K-medoids與K-means僅有兩個不同的地方:

K-meansK-medoids
中心點虛擬點實際樣本點
新的中心點決定方式群內樣本平均值群內距離和最小

而因為K-medoids採用的新中心點決定方式為計算群內距離和最小的方式(可以想像成中位數的腳色),因此較不容易受到極端值的影響。而且,這樣的計算方式讓K-medoids不僅僅可以處理數值型資料,還可以處理類別型的資料,可謂K-means的進階版!

然而,從運作過程中我們也可以看出,相對K-means來說,K-medoids的計算量是非常龐大的!每一次的中心點移動,都需較再計算兩兩樣本之間的距離以及總和,尤其在面對龐大資料量的時候,會消耗相當大的記憶體。因此,相較於K-medoids,K-means在速度上具有強大的優勢,並且適用於龐大的資料量,而K-medoids僅適用於小量資料。

總結

今天,我們認識了非監督式學習裡面的K-means跟K-medoids,以及其背後的運作原理。下個單元,我們將一起用Python來實作K-means!

最後,對不同距離計算公式有興趣的讀者,歡迎參考:
[機器學習首部曲]K-近鄰演算法 KNN

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *