本文會談談解決該問題的兩種流行方法:elbow method(肘子法)和 silhouette method。
在監督學習裡,某特定資料集的類(class)的數量,在一開始就是知道的——每個資料執行個體,都被标記歸屬于某個類。最壞的情況下,我們還可以盤查類屬性( class attribute),計算其中包含的獨特元素。
但在無監督學習裡,類屬性或者明确的類成員劃分是不存在的。想想也是,無監督學習的一個主要形式,就是資料聚類。它的目标是通過最小化不同類之間的執行個體相似度、最大化同個類中的執行個體相似度,來進行大緻的類成員劃分。
衆所周知,聚類問題有一個很大的技術難題——不管是以什麼形式,開發者需要在一開始,就給出無标記資料集中的類的數目。足夠幸運的話,你或許事先就知道資料的 ground truth——類的真實數目。但情況并不會總是如此。譬如說,或許資料中不存在定義明确的類(簇)。而無監督學習本來的意義,便是探索資料,找出使簇、類得數目達到最優的結構。
這就回到了文章開頭的問題:不知道 ground truth 的情況下,怎麼才能知道資料簇的最優數目是多少?這方面,倒是已經林林總總有相當多的處理方法。本文會讨論其中應用極廣泛的兩種方法。第一種,是 elbow method。
elbow method
elbow method 是上手首選,由于能通過可視化便利地解釋、驗證,它的用處很大。它用關于簇數目的函數來解釋方差(k-means 裡的 k)。它會繪制出能被 k 解釋的方差的比例。第一批的 n 個簇應當會為解釋方差添加大量資訊。但是,有些 k 最終值會導緻少得多的資訊增量。這時,資料圖會有明顯的角度。該角度就是簇的最優數量。
雷鋒網提醒,有一點應該是不言而喻、無須解釋的:為了按照不同的簇數量繪制方差,需要對不同數目的簇進行測試。在繪制、比較結果之後,必須要有該聚類方法的成功、完整地疊代。
silhouette method
silhouette method 會衡量對象和所屬簇之間的相似度——即内聚性(cohesion)。當把它與其他簇做比較,就稱為分離性(separation)。該對比通過 silhouette 值來實作,後者在 [-1, 1] 範圍内。silhouette 值接近 1,說明對象與所屬簇之間有密切聯系;反之則接近 -1。若某模型中的一個資料簇,生成的基本是比較高的 silhouette 值,說明該模型是合适、可接受的。
====================================分割線================================
本文作者:三川