書名: 商用機器學習:數據科學實踐作者名: (加)約翰·赫爾本章字數: 1276字更新時間: 2020-10-16 17:15:27
2.3 設置k值
在一些情況下,k值的設置取決于聚類的目的。例如,一家公司計劃生產小號、中號、大號和加大號男士毛衣,該公司前期在隨機抽樣的男士中收集了一系列相關數據(臂長、肩寬、胸圍等),然后將這些數據分為4個子聚類用以幫助產品的設計。在另外一些情況下,我們并不確定k值的個數,只是希望通過算法在類似的觀測值中找到最優的聚類方式。
肘部法(elbow method)在決定子聚類個數時被廣泛應用。通過k-均值算法我們可以嘗試多個不同的k值(例如k值取值范圍為1~10),每個k值所得慣性矩分布如圖2-3所示,圖中線條的斜率向我們展示了隨著子聚類個數的增加慣性矩值下降的趨勢。在這個例子中,當我們將子聚類的個數由一個增加到2個、3個、4個時,慣性矩的下降是非常明顯的,但從第4個再往后增加,慣性矩的下降趨勢變弱,所以我們可以將k值為4作為最佳值。
圖2-3 肘部法的應用,子聚類個數的增加與慣性矩的變化趨勢
除了慣性矩,我們需要討論的另外一個問題是如何區分子聚類。如果兩個子聚類距離很近,則我們需要考慮是否有必要將兩個子聚類分開。因此,數據分析師通常會檢測子聚類之間的距離,對于各子聚類中心非常接近的情況,將子聚類個數從k增加到k+1,這個改變是沒有太大必要的。
另外一種更加客觀的、決定子聚類個數的方法是輪廓法(silhouette method)。同樣,假設我們有一系列可選用的k值能夠被代入k-均值算法中:對應每個k值,我們計算每個子聚類中觀測值i與內部其他觀測值之間的距離的平均數,設該平均距離為a(i);同時,我們計算該觀測值i與外部其他子聚類中觀測值之間的平均距離,設所有子聚類的平均距離最小值為b(i)。我們的目標是b(i)始終大于a(i),否則觀測值i不應當被歸于目前所在的子聚類中。輪廓法是用來衡量b(i)是否始終大于a(i)的方法:[1]
在上述公式中,s(i)的取值在-1和+1之間(正如前面提到的,當觀測值被正確分配時,s(i)應為正數)。當取值越接近+1時,說明該觀測值越應該屬于目前所在的子聚類。同個子聚類中所有觀測值的s(i)平均數可以用來衡量該子聚類中觀測值的緊密度,而所有子聚類的s(i)的平均數則可以作為評價聚類的效果指標,我們稱該指標為平均輪廓系數(average silhouette score)。例如,一組具體數字的平均輪廓系數分別為:0.70、0.53、0.65、0.52和0.45,分別對應k=2、3、4、5、6,則結論如下:k=2和4時聚類效果好于k=3、5、6。
另外還有一種決定k值的方式,是由Tibshirani等人于2001年提出的間隔統計量(gap statistic)。[2]在這種情況下,將子聚類內平方和與隨機生成觀測值的原假設下所產生的期望的值進行比較,我們創建N組隨機觀測值,針對每個k值,我們將觀測值進行聚類,計算每個子聚類的慣性矩(N=500通常足夠)。定義如下:
·mk:當有k個子聚類時,隨機數據組的慣性矩的均值;
·sk:當有k個子聚類時,隨機數據組的慣性矩的標準差;
·wk:當有k個子聚類時,觀測數據的慣性矩。
我們設定:
上述公式計算出的是隨機數據組慣性矩與觀測數據慣性矩之差,有人認為,最優k值是保證Gapk-Gapk+1≤sk+1成立的最小整數。
[1] See L. Kaufman and P. Rousseeuw, Finding Groups in Data: An Introduction to Cluster Analysis, Wiley 1990.
[2] See R. Tibshirani, G.Walther, and T. Hastie (2001),“ Estimating the Number of Clusters in a Data Set via the Gap Statistic, ”Journal of the Royal Statistical Society, B, 63, Part 2:411-423.
- 密碼學原理與Java實現
- LabVIEW入門與實戰開發100例
- Mastering Ember.js
- Mastering Natural Language Processing with Python
- Web Development with Django Cookbook
- Dependency Injection in .NET Core 2.0
- C語言程序設計
- C語言程序設計學習指導與習題解答
- ArcGIS By Example
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- Linux C編程:一站式學習
- Scala for Machine Learning(Second Edition)
- Learning Docker Networking
- Practical Microservices
- Mockito Essentials