作者:Tirthajyoti Sarkar
編譯:ronghuaiyang
我們展示了用來可視化和決定最佳聚類數量的評估方法,要比最常用的elbow方法要好的多。
介紹
聚類是利用數據科學的商業或科研企業機器學習pipeline的重要組成部分。顧名思義,它有助於在一個數據blob中確定緊密相關(通過某種距離度量)的數據點的集合,否則就很難理解這些數據點。
然而,大多數情況下,聚類過程屬於無監督機器學習。而無監督的ML則是一件混亂的事情。
沒有已知的答案或標籤來指導優化過程或衡量我們的成功。我們正處於一個未知的領域。
因此,當我們面對一個基本問題時,像k-means clustering]樣的流行方法似乎不能提供一個完全令人滿意的答案。
剛開始的時候,我們如何知道聚類的實際數量呢?
這個問題非常重要,因為聚類的過程通常是進一步處理單個聚類數據的前置問題,因此計算資源的數量可能依賴於這種度量。
在業務分析問題的情況下,後果可能更糟。聚類通常是為了市場細分的目標而進行的分析。因此,很容易想到,根據聚類的數量,對營銷人員進行分配。因此,對聚類數量的錯誤評估可能導致寶貴資源的次優分配。
elbow方法對於k-means聚類方法,回答這個問題最常用的方法是所謂的elbow 方法。它需要在一個循環中多次運行算法,聚類的數量不斷增加,然後繪製聚類得分作為聚類數量的函數。
elbow法的分數或度量是什麼?為什麼它被稱為'elbow'方法?一個典型的場景如下:
通常,得分是k-means目標函數上輸入數據的度量,即某種形式的簇內距離相對於簇間距離。例如,在Scikit-learn的k-means estimator中,一個score 方法可用於此目的。
並不是那麼明顯,不是嗎?
Silhouette coefficient — 一個更好的度量Silhouette Coefficient是用每個樣本的平均簇內距離a)和平均最近簇間距離(b)計算出來的。樣本的輪廓係數為(b - a) / max(a, b)。為了澄清,b是該樣本與該樣本不屬於的最近的群之間的距離。我們可以計算所有樣本的平均Silhouette Coefficient,並以此作為判斷集群數量的指標。
為了說明,我們使用Scikit-learn的make_blob 函數在4個特徵維度和5個聚類中心上生成隨機數據點。因此,這個問題的基本事實是,數據是在5個聚類中心附近生成的。然而,k-means算法無法知道這一點。
簇可以按如下方式繪製(成對特徵):
接下來,我們運行k-means算法,選擇k=2到k=12,計算每次運行的默認k-means得分和平均Silhouette Coefficient,並將它們並排繪製出來。
兩者之間的區別再明顯不過了。平均silhouette係數在k=5時增大,然後k值越大,平均silhouette係數急劇減小,即在k=5處有一個明顯的峰值,這就是原始數據集生成的簇數。
silhouette係數與elbow法的平緩彎曲相比,表現出峰值特性。這更容易可視化和歸因。
如果我們在數據生成過程中增加高斯噪聲,簇看起來會更加重疊。
在本例中,elbow方法的默認k-means得分會產生相對不明確的結果。在下面的elbow圖中,很難選擇真正發生彎曲的合適點。是4、5、6還是7?
但silhouette係數圖仍然能在4或5個聚類中心處出現峰值特徵,使我們的判斷更容易。
事實上,如果你回頭看看重疊的簇,你會發現大多數情況下有4個可見的簇 —— 儘管數據是用5個聚類中心生成的,但由於高方差,只有4個簇在結構上顯示出來。Silhouette係數可以很容易地捕捉到這種行為,並顯示聚類的最佳數量在4到5之間。
BIC評分採用高斯混合模型還有其他優秀的指標來確定的聚類的數量,比如Bayesian Information Criterion (BIC) ,但這些只有當我們希望用在k - means以外的聚類方法的時候才可以 —— Gaussian Mixture Model (GMM)。
基本上,GMM將一個數據簇看作是具有獨立均值和方差的多個高斯數據集的疊加。然後應用Expectation-Maximization (EM)算法來近似地確定這些平均值和方差。
把BIC作為正則化你可能是從統計分析或你之前與線性回歸的交互中認識到BIC這個術語。採用BIC和AIC (Akaike Information criteria)作為線性回歸變量選擇的正則化技術。
BIC/AIC用於線性回歸模型的正則化。
這個想法在BIC中也有類似的應用。理論上,極其複雜的數據簇也可以建模為大量高斯數據集的疊加。為了這個目的,使用多少高斯函數沒有限制。
但這與線性回歸中增加模型複雜度類似,在線性回歸中,可以使用大量特徵來擬合任意複雜的數據,但卻失去了泛化能力,因為過於複雜的模型擬合的是噪音,而不是真實的模式。
BIC方法懲罰了大的高斯函數數量,並試圖使模型足夠簡單以解釋給定的數據模式。
總結這是這篇文章的notebook:https://github.com/tirthajyoti/computerlearing-with-python/blob/master/clustering-dimensions-reduction/clustering_metrics.ipynb,你可以試試。
對於經常使用的elbow方法,我們討論了幾個備選方案,用於使用k-means算法在無監督學習設置中挑選出正確數量的聚類。我們表明,Silhouette係數和BIC評分(來自k-means的GMM擴展)是比elbow方法更好的可視化識別最優簇數的方法。
英文原文:https://towardsdatascience.com/clustering-metrics-better-than-the-elbow-method-6926e1f723a6
推薦閱讀
這個NLP工具,玩得根本停不下來
完結撒花!李宏毅老師深度學習與人類語言處理課程視頻及課件(附下載)
從數據到模型,你可能需要1篇詳實的pytorch踩坑指南
如何讓Bert在finetune小數據集時更「穩」一點
模型壓縮實踐系列之——bert-of-theseus,一個非常親民的bert壓縮方法
徵稿啟示| 200元稿費+5000DBC(價值20個小時GPU算力)
文本自動摘要任務的「不完全」心得總結番外篇——submodular函數優化
Node2Vec 論文+代碼筆記
模型壓縮實踐收尾篇——模型蒸餾以及其他一些技巧實踐小結
中文命名實體識別工具(NER)哪家強?
學自然語言處理,其實更應該學好英語
史丹福大學NLP組Python深度學習自然語言處理工具Stanza試用
關於AINLP
AINLP 是一個有趣有AI的自然語言處理社區,專注於 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統、計算廣告、招聘信息、求職經驗分享等,歡迎關注!加技術交流群請添加AINLPer(id:ainlper),備註工作/研究方向+加群目的。