
所謂聚類,就是將相似的事物聚集在一 起,而將不相似的事物劃分到不同的類別的過程,是數(shù)據(jù)分析之中十分重要的一種手段。比如古典生物學之中,人們通過物種的形貌特征將其分門別類,可以說就是 一種樸素的人工聚類。如此,我們就可以將世界上紛繁復雜的信息,簡化為少數(shù)方便人們理解的類別,可以說是人類認知這個世界的最基本方式之一。
在數(shù)據(jù)分析的術語之中,聚類和分類是兩種技術。分類是指我們已經(jīng)知道了事物的類別,需要從樣品中學習分類的規(guī)則,是一種有指導學習;而聚類則是由我們來給定簡單的規(guī)則,從而得到分類,是一種無指導學習。兩者可以說是相反的過程。
網(wǎng)上關于聚類算法的資料很多,但是其實大都是幾種最基本的方法,如K-means、層次聚類、SOM等,以及它們的許許多多的改進變種。這里,我就來討論一下這些聚類算法,對它們的表現(xiàn)做一個簡單的評估。因為內(nèi)容有點多(其實主要是圖占位置……),所以準備分幾次來完成。
基本測試
0、測試數(shù)據(jù)集
在介紹這些算法之前,這里先給出兩個簡單的測試樣品組,下面每介紹完一個算法,可以直接看看它對這兩個樣品組的聚類結(jié)果,從而得到最直觀的認識。
下圖就是兩個簡單的二維樣品組:
1)第一組樣品屬于最基本的聚類測試,界線還是比較分明的,不過三個cluster的大小有較明顯差異,可以測試一下算法對cluster size的敏感度。樣品總共有2000個數(shù)據(jù)點
2)第二組是典型的甜甜圈形。使用這樣的測試組主要是為了考察算法對cluster形狀敏感度。共有1500個數(shù)據(jù)點。
對于這樣的兩個樣品組,人類憑肉眼可以很容易地判斷它們應該分為三個cluster(特別是我還用顏色做了區(qū)分……),但對于計算機就不一定了,所以就需要有足夠優(yōu)秀的聚類算法。
1、相似性度量
對于聚類,關鍵的一步是要告訴計算機怎樣計算兩個數(shù)據(jù)點的“相似性”,不同的算法需要的“相似性”是不一樣的。
比如像以上兩組樣品,給出了每個數(shù)據(jù)點的空間坐標,我們就可以用數(shù)據(jù)點之間的歐式距離來判斷,距離越近,數(shù)據(jù)點可以認為越“相似”。當然,也可以用其它的度量方式,這跟所涉及的具體問題有關。
2、層次聚類
層次聚類,是一種很直觀的算法。顧名思義就是要一層一層地進行聚類,可以從下而上地把小的cluster合并聚集,也可以從上而下地將大的cluster進行分割。似乎一般用得比較多的是從下而上地聚集,因此這里我就只介紹這一種。
所謂從下而上地合并cluster,具體而言,就是每次找到距離最短的兩個cluster,然后進行合并成一個大的cluster,直到全部合并為一個cluster。整個過程就是建立一個樹結(jié)構(gòu),類似于下圖。
那 么,如何判斷兩個cluster之間的距離呢?一開始每個數(shù)據(jù)點獨自作為一個類,它們的距離就是這兩個點之間的距離。而對于包含不止一個數(shù)據(jù)點的 cluster,就可以選擇多種方法了。最常用的,就是average-linkage,即計算兩個cluster各自數(shù)據(jù)點的兩兩距離的平均值。類似的 還有single-linkage/complete-linkage,選擇兩個cluster中距離最短/最長的一對數(shù)據(jù)點的距離作為類的距離。個人經(jīng) 驗complete-linkage基本沒用,single-linkage通過關注局域連接,可以得到一些形狀奇特的cluster,但是因為太過極 端,所以效果也不是太好。
層 次聚類最大的優(yōu)點,就是它一次性地得到了整個聚類的過程,只要得到了上面那樣的聚類樹,想要分多少個cluster都可以直接根據(jù)樹結(jié)構(gòu)來得到結(jié)果,改變 cluster數(shù)目不需要再次計算數(shù)據(jù)點的歸屬。層次聚類的缺點是計算量比較大,因為要每次都要計算多個cluster內(nèi)所有數(shù)據(jù)點的兩兩距離。另外,由 于層次聚類使用的是貪心算法,得到的顯然只是局域最優(yōu),不一定就是全局最優(yōu),這可以通過加入隨機效應解決,這就是另外的問題了。
聚類結(jié)果
對樣品組1使用average-linkage,選擇聚類數(shù)目為4,可以得到下面的結(jié)果。右上方的一些異常點被獨立地分為一類,而其余的數(shù)據(jù)點的分類基本符合我們的預期。
如果選擇聚類數(shù)目為5,則是下面的結(jié)果。其中一個大的cluster被分割,但沒有出現(xiàn)均勻分割的情況(比如K-means),只有少量的數(shù)據(jù)點被分離,大體的分類還是比較正確的。因此這個算法可以處理大小差別比較大的聚類問題,對cluster size不太敏感。
如 何確定應該取多少個cluster?這是聚類里面的一個非常重要的問題。對于層次聚類,可以根據(jù)聚類過程中,每次合并的兩個cluster的距離來作大概 判斷,如下圖。因為總共有2000個數(shù)據(jù)點,每次合并兩個cluster,所以總共要做2000次合并。從圖中可以看到在后期合并的兩個cluster的 距離會有一個陡增。假如數(shù)據(jù)的分類是十分顯然的,就是應該被分為K個大的cluster,K個cluster之間有明顯的間隙。那么如果合并的兩個小 cluster同屬于一個目標cluster,那么它們的距離就不會太大。但當合并出來K個目標cluster后,再進行合并,就是在這K個 cluster間進行合并了,這樣合并的cluster的距離就會有一個非常明顯的突變。當然,這是十分理想的情況,現(xiàn)實情況下突變沒有這么明顯,我們只 能根據(jù)下圖做個大致的估計。
對于測試樣品2,average-linkage可謂完全失效,這是由于它對“相似性”的理解造成的,所以只能得到凸型的cluster。
總體而言,像average-linkage這樣的算法還是比較穩(wěn)定的,可以大致地判斷聚類數(shù)目,聚類效果也不錯,在數(shù)據(jù)量比較小的時候可以使用。
3、K-means算法
K-means是最為常用的聚類方法之一,盡管它有著很多不足,但是它有著一個很關鍵的優(yōu)點:快!K-means的計算復雜度只有O(tkn),t是迭代次數(shù),k是設定的聚類數(shù)目,而n是數(shù)據(jù)量,相比起很多其它算法,K-means算是比較高效的。
K-means的目標是要將數(shù)據(jù)點劃分為k個cluster,找到這每個cluster的中心,并且最小化函數(shù)
其中就是第i個cluster的中心。上式就是要求每個數(shù)據(jù)點要與它們所屬cluster的中心盡量接近。
為了得到每個cluster的中心,K-means迭代地進行兩步操作。首先隨機地給出k個中心的位置,然后把每個數(shù)據(jù)點歸類到離它最近的中心,這樣我們就構(gòu)造了k個cluster。但是,這k個中心的位置顯然是不正確的,所以要把中心轉(zhuǎn)移到得到的cluster內(nèi)部的數(shù)據(jù)點的平均位置。實際上也就是計算,在每個數(shù)據(jù)點的歸類確定的情況下,上面函數(shù)取極值的位置,然后再次構(gòu)造新的k個cluster。這個過程中,中心點的位置不斷地改變,構(gòu)造出來的cluster的也在變化(動畫請看這里)。通過多次的迭代,這k個中心最終會收斂并不再移動。
K-means實際上是EM算法的一個特例(關于EM算法,請猛擊這里和這里),根據(jù)中心點決定數(shù)據(jù)點歸屬是expectation,而根據(jù)構(gòu)造出來的cluster更新中心則是maximization。理解了K-means,也就順帶了解了基本的EM算法思路。
實際應用里,人們指出了很多K-means的不足。比如需要用戶事先給出聚類數(shù)目k,而這個往往是很難判斷的;又如K-means得到的是局域最優(yōu),跟初始給定的中心值有關,所以往往要嘗試多個初始值;總是傾向于得到大小接近的凸型cluster等等。
K- means算法相比起上面提到的層次聚類,還有一個很大的不同,那就是它需要數(shù)據(jù)點的坐標,因為它必須要求取平均,而層次聚類實際上并不需要坐標數(shù)據(jù),只 需要知道數(shù)據(jù)點之間的距離而已。這也就是說K-means只適用于使用歐氏距離來計算數(shù)據(jù)點相似性的情況,因為如果采用非歐距離,那么也不能通過簡單的平 均來得到cluster中心。
聚類結(jié)果
取 k=3,K-means對樣品組1聚類得到下面兩張圖。為什么是兩張圖呢?正如前面所說,K-means的聚類結(jié)果跟初始中心選擇有關,而不是所以的初始 值都能保證聚類成功的,下面第二張就是失敗的例子。另外由于K-means總傾向于得到接近大小的cluster,所以可以看到兩個小的cluster對 大cluster的“入侵”。
對甜甜圈樣品組,K-means也是完全沒轍。
從 上面的結(jié)果可以看出,K-means的聚類效果確實不是很好。用戶如果選擇了不正確的聚類數(shù)目,會使得本應同一個cluster的數(shù)據(jù)被判定為屬于兩個大 的類別,這是我們不想看到的。因為需要數(shù)據(jù)點的坐標,這個方法的適用性也受到限制。但是效率是它的一個優(yōu)勢,在數(shù)據(jù)量大或者對聚類結(jié)果要求不是太高的情況 下,可以采用K-means算法來計算,也可以在實驗初期用來做測試看看數(shù)據(jù)集的大致情況。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03