用於數據挖掘的聚類演算法有哪些,各有何優勢?


如果真要做全面介紹的話,有可能是一部專著的篇幅。即使是做綜述性的介紹,一篇三五十頁的論文也可以寫成了。所以我一直想怎麼能從頭到尾把這個問題logically串連起來。正好這段時間我在修改我做的交易策略裡面關於聚類的部分,趁腦子熱的時候順手寫下。

就我的理解而言,如果想全面的了解聚類演算法並對其進行區別和比較的話,最好能把聚類的具體演算法放到整個聚類分析的語境中理解。那我接下來主要談談我的理解,就不搬弄教科書里的概念了。
聚類分析其實思路很簡單,粗略來看就是以下2個(或3個)環節。

1、相似性衡量(similarity measurement)
相似性衡量又可以細分為直接法和間接法(答主自己取的名字,求輕拍):直接法是直接求取input data的相似性,間接法是求取data中提取出的features的相似性。但無論是求data還是feature的相似性,方法都是這麼幾種:

  • 距離。距離主要就是指Minkovski距離。這個名字雖然聽起來陌生,但其演算法就是Lp norm的演算法,如果是L1 norm,那就是絕對值/曼哈頓距離(Manhattan distance);如果是L2 norm,那就是著名的歐式距離(Euclidean distance)了,也是應用最廣泛的;如果L
ightarrow infty ,supremum距離,好像也有叫切比雪夫距離的,但就很少有人用了。另外,還有Mahalanobis距離,目前來看主要應用於Gaussian Mixture Model(GMM),還有LanceWilliams距離等等,但幾乎沒見過求距離的時候會專門用這個的。
  • 相似係數。主要有夾角餘弦和相關係數。相關係數的應用也非常廣泛,其主要優勢是它不受原線性變換的影響,而且可以輕鬆地轉換為距離,但其運算速度要比距離法慢得多,當維數很高的時候。
  • 核函數K(x,y)。定義在R^{d} 	imes R^{d}上的二元函數,本質上也是反映x和y的距離。核函數的功能就是把數據從低維空間投影(project)到高維空間去。
  • DTW(dynamic time warping)。之所以把DTW單獨拿出來,是因為它是一種非常特殊的距離演算法,它可以計算兩個不同長度的向量的距離,也可以對兩對向量中不同時間段內的數據做匹配,比如你發現2015年上半年的上證指數走勢和SP5002012年的走勢非常相似。DTW主要用在時間序列的部分場合里,在這裡就不做具體分析了。

2、聚類演算法(clustering algorithm)

  • Hierarchical methods:該主要有兩種路徑:agglomerative和divisive,也可以理解為自下而上法(bottom-up)和自上而下法(top-down)。自下而上法就是一開始每個個體(object)都是一個類,然後根據linkage尋找同類,最後形成一個「類」。自上而下法就是反過來,一開始所有個體都屬於一個「類」,然後根據linkage排除異己,最後每個個體都成為一個「類」。這兩種路徑本質上沒有孰優孰劣之分,只是在實際應用的時候要根據數據特點以及你想要的「類」的個數,來考慮是自上而下更快還是自下而上更快。至於根據Linkage判斷「類」的方法就是樓上所提到的最短距離法、最長距離法、中間距離法、類平均法等等(其中類平均法往往被認為是最常用也最好用的方法,一方面因為其良好的單調性,另一方面因為其空間擴張/濃縮的程度適中)。Hierarchical methods中比較新的演算法有BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)主要是在數據體量很大的時候使用,而且數據類型是numerical;ROCK(A Hierarchical Clustering Algorithm for Categorical Attributes)主要用在categorical的數據類型上;Chameleon(A Hierarchical Clustering Algorithm Using Dynamic Modeling)里用到的linkage是kNN(k-nearest-neighbor)演算法,並以此構建一個graph,Chameleon的聚類效果被認為非常強大,比BIRCH好用,但運算複雜的發很高,O(n^2)。看個Chameleon的聚類效果圖,其中一個顏色代表一類,可以看出來是可以處理非常複雜的形狀的。

  • Partition-based methods:其原理簡單來說就是,想像你有一堆散點需要聚類,想要的聚類效果就是「類內的點都足夠近,類間的點都足夠遠」。首先你要確定這堆散點最後聚成幾類,然後挑選幾個點作為初始中心點,再然後依據預先定好的啟發式演算法(heuristic algorithms)給數據點做迭代重置(iterative relocation),直到最後到達「類內的點都足夠近,類間的點都足夠遠」的目標效果。也正是根據所謂的「啟發式演算法」,形成了k-means演算法及其變體包括k-medoids、k-modes、k-medians、kernel k-means等演算法。k-means對初始值的設置很敏感,所以有了k-means++、intelligent k-means、genetic k-means;k-means對雜訊和離群值非常敏感,所以有了k-medoids和k-medians;k-means只用於numerical類型數據,不適用於categorical類型數據,所以k-modes;k-means不能解決非凸(non-convex)數據,所以有了kernel k-means。另外,很多教程都告訴我們Partition-based methods聚類多適用於中等體量的數據集,但我們也不知道「中等」到底有多「中」,所以不妨理解成,數據集越大,越有可能陷入局部最小。下圖顯示的就是面對非凸,k-means和kernel k-means的不同效果。

  • Density-based methods:上面這張圖你也看到了,k-means解決不了這種不規則形狀的聚類。於是就有了Density-based methods來系統解決這個問題。該方法同時也對雜訊數據的處理比較好。其原理簡單說畫圈兒,其中要定義兩個參數,一個是圈兒的最大半徑,一個是一個圈兒里最少應容納幾個點。最後在一個圈裡的,就是一個類。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)就是其中的典型,可惜參數設置也是個問題,對這兩個參數的設置非常敏感。DBSCAN的擴展叫OPTICS(Ordering Points To Identify Clustering Structure)通過優先對高密度(high density)進行搜索,然後根據高密度的特點設置參數,改善了DBSCAN的不足。下圖就是表現了DBSCAN對參數設置的敏感,你們可以感受下。

  • Grid-based methods:這類方法的原理就是將數據空間劃分為網格單元,將數據對象集映射到網格單元中,並計算每個單元的密度。根據預設的閾值判斷每個網格單元是否為高密度單元,由鄰近的稠密單元組形成」類「。該類方法的優點就是執行效率高,因為其速度與數據對象的個數無關,而只依賴於數據空間中每個維上單元的個數。但缺點也是不少,比如對參數敏感、無法處理不規則分布的數據、維數災難等。STING(STatistical INformation Grid)和CLIQUE(CLustering In QUEst)是該類方法中的代表性演算法。下圖是CLIQUE的一個例子:

  • Model-based methods:這一類方法主要是指基於概率模型的方法和基於神經網路模型的方法,尤其以基於概率模型的方法居多。這裡的概率模型主要指概率生成模型(generative Model),同一」類「的數據屬於同一種概率分布。這中方法的優點就是對」類「的劃分不那麼」堅硬「,而是以概率形式表現,每一類的特徵也可以用參數來表達;但缺點就是執行效率不高,特別是分布數量很多並且數據量很少的時候。其中最典型、也最常用的方法就是高斯混合模型(GMM,Gaussian Mixture Models)。基於神經網路模型的方法主要就是指SOM(Self Organized Maps)了,也是我所知的唯一一個非監督學習的神經網路了。下圖表現的就是GMM的一個demo,裡面用到EM演算法來做最大似然估計。

3、數據簡化(data reduction),這個環節optional。其實第二部分提到的有些演算法就是對數據做了簡化,才得以具備處理大規模數據的能力,比如BIRCH。但其實你可以任意組合,所以理論上把數據簡化的方法和上面提到的十幾種聚類演算法結合使用,可以有上百個演算法了。

  • 變換(Data Transformation):離散傅里葉變換(Discrete Fourier Transformation)可以提取數據的頻域(frequency domain)信息,離散小波變換(Discrete Wavelet Transformation)除了頻域之外,還可以提取到時域(temporal domain)信息。
  • 降維(Dimensionality Reduction):在降維的方法中,PCA(Principle Component Analysis)和SVD(Singular Value Decomposition)作為線性方法,受到最廣泛的應用。還有像MDS(Multi-Dimensional Scaling)什麼的,不過只是作為PCA的一個擴展,給我的感覺是中看不中用。這幾個方法局限肯定是無法處理非線性特徵明顯的數據。處理非線性降維的演算法主要是流形學習(Manifold Learning),這又是一大塊內容,裡面集中常見的演算法包括ISOMAP、LLE(Locally Linear Embedding)、MVU(Maximum variance unfolding)、Laplacian eigenmaps、Hessian eigenmaps、Kernel PCA、Probabilistic PCA等等。流形學習還是挺有趣的,而且一直在發展。關於降維在聚類中的應用,最著名的應該就是 @宋超 在評論里提到的譜聚類(Spectral Clustering),就是先用Laplacian eigenmaps對數據降維(簡單地說,就是先將數據轉換成鄰接矩陣或相似性矩陣,再轉換成Laplacian矩陣,再對Laplacian矩陣進行特徵分解,把最小的K個特徵向量排列在一起),然後再使用k-means完成聚類。譜聚類是個很好的方法,效果通常比k-means好,計算複雜度還低,這都要歸功於降維的作用。
  • 抽樣(Sampling):最常用的就是隨機抽樣(Random Sampling)咯,如果你的數據集特別大,隨機抽樣就越能顯示出它的低複雜性所帶來的好處。比如CLARA(Clustering LARge Applications)就是因為k-medoids應對不了大規模的數據集,所以採用sampling的方法。至於更加fancy的抽樣方法我還真不了解,我就不在這裡好為人師而誤人子弟了。

PS:以上所有圖示均來自於UIUC的韓家煒教授的slides,版權歸韓家煒教授所有;
PSS:如果對某個演算法感興趣,還請直接讀論文、讀教材、寫代碼;
PSSS:以上三個環節,可以各選擇其中一個方法加以組合,放心地試驗,放心地玩吧,就像把不同的溶液都往一個燒瓶里倒,這裡很安全,不會爆炸的。


這個問題我也想過,想的不太系統。
比較分類演算法的話,大概考慮這幾個維度:時間空間複雜度,魯棒性,參數敏感性,處理不規則形狀,適合的類數量,類間差異(範圍大小,樣本個數,形狀差異)

可以參照一下sklearn網站給出的列表:2.3. Clustering

除了這些聚類方法以外,統計老師講過一些傳統的聚類方法,歸屬於系統聚類的範疇,先定義觀測間的距離和類之間的距離計算方法,然後按照距離把最接近的兩個觀測(類)合併,直到合併成一個大類為止。

最短距離法:
類間距為兩類中最近觀測的距離。
不限制類形狀,對拉長的分布效果好,會刪除邊緣的觀測點

最長距離法:
類間距為兩類中最遠觀測的距離。
傾向於產生直徑相等的類,易受異常值影響。

中間距離法:
類間距為最長距、最短距、類內距離的加權。

重心法:
類間距為兩類重心之間的距離
對奇異值穩健

類平均法:
類間距為兩類觀測之間距離的平均值。
傾向於先合併方差小的類,偏向於產生方差相同的類。

離差平方和法:
將合併後類內方差最小的兩類合併
傾向於產生數量相等的兩類,對異常值敏感

密度估計:
較遠的距離設為無窮。較近的兩個樣本,距離與局部密度成反比。
適用於不規則形狀類,不適用樣本數太少。

兩階段密度估計:
用密度估計計算距離,再用最短距離法聚類。
普適性較強

除了以上這些常見方法,值得一提的是去年發在science上的演算法 fast search and find of density peaks. 這個方法克服了DBSCAN中不同類的密度差別大,鄰域範圍難以設定的問題,非常魯棒,看起來棒棒的。

ps:如果希望聚的效果好,距離度量方法有時候比聚類方法更重要。

我了解到的就是這些,歡迎拍磚


聚類演算法有好幾種不同的分類方法,說三種常見的大類吧。

  1. partitional clustering
  2. Hierarchical clustering
  3. Density-based clustering
  • 劃分聚類

最典型的就是K-means。原理就不說了。前面也有答主提到你可以使用不同的鄰近度函數。

優點:簡單、時間複雜度、空間複雜度低

缺點:

隨機初始化的中心點對結果影響很大;

hold不住族之間的size或密度差別較大的情況,因為K-means的目標函數是距離和,導致最後必然出來一種很社會主義的結果:

(也有一些客服的辦法,初始的k可以取大一點,然後再合併)

同理,非球形形狀的族也hold不住

  • 層次聚類

基本凝集層次聚類演算法:
計算鄰近度矩陣
repeat
合併最接近的兩個族
更新鄰近性矩陣
until 僅剩下一個族

很像哈夫曼演算法,計算族的鄰近性的時候可以有MIN、MAX、組平均、Distance Between Centroids等(意義顧名思義即可),不同的鄰近性度量可能會產生不同的結果。也有各自的優缺點,比如MIN就會對雜訊或outlier很敏感。。。

缺點:時間複雜度高啊,o(m^3),改進後的演算法也有o(m^2lgm),m為點的個數;貪心演算法的缺點,一步錯步步錯;同K-means,difficulty handling different sized clusters and convex shapes

優點:可解釋性好(如當需要創建一種分類法時);還有些研究表明這些演算法能產生高質量的聚類,也會應用在上面說的先取K比較大的K-means後的合併階段;還有對於K-means不能解決的非球形族就可以解決了

  • DBSCAN

這個就是基於密度的聚類演算法了。要了解這個演算法首先要知道三個概念

core point:奴隸主

border point:奴隸

noise point:忽視它

首先我們先找core points(奴隸主),以奴隸主為中心,我們計算Density(number of points within a specified radius (Eps))。這裡我們設定MinPts=4,也就是說如果一個奴隸主有大於等於4個奴隸的話,它就可以稱為一方諸侯(core points)了,它圈住的奴隸就是border point。即沒有成為奴隸或奴隸主的點我們就捨棄掉(border point)。

下面遍歷我們的奴隸主集,然後以奴隸主為中心,和它的所有奴隸一起劃為一個lable,再遍歷下個core points,如果它還沒有lable,重複上面的動作,繼續。。。

優缺點:

歡迎大神拍磚。

參考資料:數據挖掘導論、 Rutgers熊輝教授的slide。


漫談 Clustering 系列 ? Free Mind http://blog.pluskid.org/?page_id=78


1. 聚類的基本概念

1.1 定義

聚類是數據挖掘中的概念,就是按照某個特定標準(如距離)把一個數據集分割成不同的類或簇,使得同一個簇內的數據對象的相似性儘可能大,同時不在同一個簇中的數據對象的差異性也儘可能地大。也即聚類後同一類的數據儘可能聚集到一起,不同類數據盡量分離。

1.2 聚類與分類的區別

Clustering (聚類),簡單地說就是把相似的東西分到一組,聚類的時候,我們並不關心某一類是什麼,我們需要實現的目標只是把相似的東西聚到一起。因此,一個聚類演算法通常只需要知道如何計算相似度就可以開始工作了,因此 clustering 通常並不需要使用訓練數據進行學習,這在Machine Learning中被稱作unsupervised learning (無監督學習)。

Classification (分類),對於一個classifier,通常需要你告訴它「這個東西被分為某某類」這樣一些例子,理想情況下,一個 classifier 會從它得到的訓練集中進行「學習」,從而具備對未知數據進行分類的能力,這種提供訓練數據的過程通常叫做supervised learning (監督學習)。

1.3 聚類過程

  1. 數據準備:包括特徵標準化和降維;
  2. 特徵選擇:從最初的特徵中選擇最有效的特徵,並將其存儲於向量中;
  3. 特徵提取:通過對所選擇的特徵進行轉換形成新的突出特徵;
  4. 聚類(或分組):首先選擇合適特徵類型的某種距離函數(或構造新的距離函數)進行接近程度的度量,而後執行聚類或分組;
  5. 聚類結果評估:是指對聚類結果進行評估,評估主要有3種:外部有效性評估、內部有效性評估和相關性測試評估。

1.4 衡量聚類演算法優劣的標準

  1. 處理大的數據集的能力;
  2. 處理任意形狀,包括有間隙的嵌套的數據的能力;
  3. 演算法處理的結果與數據輸入的順序是否相關,也就是說演算法是否獨立於數據輸入順序;
  4. 處理數據雜訊的能力;
  5. 是否需要預先知道聚類個數,是否需要用戶給出領域知識;
  6. 演算法處理有很多屬性數據的能力,也就是對數據維數是否敏感。

2. 聚類方法的分類

主要分為層次化聚類演算法,劃分式聚類演算法,基於密度的聚類演算法,基於網格的聚類演算法,基於模型的聚類演算法等。

2.1 層次化聚類演算法

又稱樹聚類演算法,透過一種層次架構方式,反覆將數據進行分裂或聚合。典型的有BIRCH演算法,CURE演算法,CHAMELEON演算法,Sequence data rough clustering演算法,Between groups average演算法,Furthest neighbor演算法,Neares neighbor演算法等。

典型凝聚型層次聚類:

先將每個對象作為一個簇,然後合併這些原子簇為越來越大的簇,直到所有對象都在一個簇中,或者某個終結條件被滿足。

演算法流程:

  1. 將每個對象看作一類,計算兩兩之間的最小距離;
  2. 將距離最小的兩個類合併成一個新類;
  3. 重新計算新類與所有類之間的距離;
  4. 重複2、3,直到所有類最後合併成一類。

2.2 劃分式聚類演算法

預先指定聚類數目或聚類中心,反覆迭代逐步降低目標函數誤差值直至收斂,得到最終結果。K-means,K-modes-Huang,K-means-CP,MDS_CLUSTER, Feature weighted fuzzy clustering,CLARANS等

經典K-means演算法流程:

  1. 隨機地選擇k個對象,每個對象初始地代表了一個簇的中心;
  2. 對剩餘的每個對象,根據其與各簇中心的距離,將它賦給最近的簇;
  3. 重新計算每個簇的平均值,更新為新的簇中心;
  4. 不斷重複2、3,直到準則函數收斂。

2.3 基於模型的聚類演算法

為每簇假定了一個模型,尋找數據對給定模型的最佳擬合,同一」類「的數據屬於同一種概率分布,即假設數據是根據潛在的概率分布生成的。主要有基於統計學模型的方法和基於神經網路模型的方法,尤其以基於概率模型的方法居多。一個基於模型的演算法可能通過構建反應數據點空間分布的密度函數來定位聚類。基於模型的聚類試圖優化給定的數據和某些數據模型之間的適應性。

SOM神經網路演算法:

該演算法假設在輸入對象中存在一些拓撲結構或順序,可以實現從輸入空間(n維)到輸出平面(2維)的降維映射,其映射具有拓撲特徵保持性質,與實際的大腦處理有很強的理論聯繫。

SOM網路包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連接。學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特徵。

演算法流程:

  1. 網路初始化,對輸出層每個節點權重賦初值;
  2. 將輸入樣本中隨機選取輸入向量,找到與輸入向量距離最小的權重向量;
  3. 定義獲勝單元,在獲勝單元的鄰近區域調整權重使其向輸入向量靠攏;
  4. 提供新樣本、進行訓練;
  5. 收縮鄰域半徑、減小學習率、重複,直到小於允許值,輸出聚類結果。

2.4 基於密度聚類演算法

主要思想:

只要鄰近區域的密度(對象或數據點的數目)超過某個閾值,就繼續聚類

擅於解決不規則形狀的聚類問題,廣泛應用於空間信息處理,SGC,GCHL,DBSCAN演算法、OPTICS演算法、DENCLUE演算法。

DBSCAN:

對於集中區域效果較好,為了發現任意形狀的簇,這類方法將簇看做是數據空間中被低密度區域分割開的稠密對象區域;一種基於高密度連通區域的基於密度的聚類方法,該演算法將具有足夠高密度的區域劃分為簇,並在具有雜訊的空間數據中發現任意形狀的簇。

2.5 基於網格的聚類演算法

基於網格的方法把對象空間量化為有限數目的單元,形成一個網格結構。所有的聚類操作都在這個網格結構(即量化空間)上進行。這種方法的主要優點是它的處理 速度很快,其處理速度獨立於數據對象的數目,只與量化空間中每一維的單元數目有關。但這種演算法效率的提高是以聚類結果的精確性為代價的。經常與基於密度的演算法結合使用。

代表演算法有STING演算法、CLIQUE演算法、WAVE-CLUSTER演算法等。

2.6 新發展的方法

基於約束的方法:

真實世界中的聚類問題往往是具備多種約束條件的 , 然而由於在處理過程中不能準確表達相應的約束條件、不能很好地利用約束知識進行推理以及不能有效利用動態的約束條件 , 使得這一方法無法得到廣泛的推廣和應用。這裡的約束可以是對個體對象的約束 , 也可以是對聚類參數的約束 , 它們均來自相關領域的經驗知識。該方法的一個重要應用在於對存在障礙數據的二維空間數據進行聚類。 COD (Clustering with Ob2structed Distance) 就是處理這類問題的典型演算法 , 其主要思想是用兩點之間的障礙距離取代了一般的歐氏距離來計算其間的最小距離。

基於模糊的聚類方法:

基於模糊集理論的聚類方法,樣本以一定的概率屬於某個類。比較典型的有基於目標函數的模糊聚類方法、基於相似性關係和模糊關係的方法、基於模糊等價關係的傳遞閉包方法、基於模 糊圖論的最小支撐樹方法,以及基於數據集的凸分解、動態規劃和難以辨別關係等方法。

FCM模糊聚類演算法流程:

標準化數據矩陣;

建立模糊相似矩陣,初始化隸屬矩陣;

演算法開始迭代,直到目標函數收斂到極小值;

根據迭代結果,由最後的隸屬矩陣確定數據所屬的類,顯示最後的聚類結果。

基於粒度的聚類方法:

基於粒度原理,研究還不完善。

量子聚類:

受物理學中量子機理和特性啟發,可以用量子理論解決聚類記過依賴於初值和需要指定類別數的問題。一個很好的例子就是基於相關點的 Pott 自旋和統計機理提出的量子聚類模型。它把聚類問題看做一個物理系統。並且許多算例表明,對於傳統聚類演算法無能為力的幾種聚類問題,該演算法都得到了比較滿意的結果。

核聚類:

核聚類方法增加了對樣本特徵的優化過程,利用 Mercer 核 把輸入空間的樣本映射到高維特徵空間,並在特徵空間中進行聚類。核聚類方法是普適的,並在性能上優於經典的聚類演算法,它通過非線性映射能夠較好地分辨、提 取並放大有用的特徵,從而實現更為準確的聚類;同時,演算法的收斂速度也較快。在經典聚類演算法失效的情況下,核聚類演算法仍能夠得到正確的聚類。代表演算法有SVDD演算法,SVC演算法。

譜聚類:

首先根據給定的樣本數據集定義一個描述成對數據點相似度的親合矩陣,並計算矩陣的特徵值和特徵向量,然後選擇合適的特徵向量聚類不同的數據點。譜聚類演算法最初用於計算機視覺、VLSI設計等領域,最近才開始用於機器學習中,並迅速成為國際上機器學習領域的研究熱點。

譜聚類演算法建立在圖論中的譜圖理論基礎上,其本質是將聚類問題轉化為圖的最優劃分問題,是一種點對聚類演算法。

聚類演算法簡要分類架構圖

常用演算法特點對比表

3. 簡單的代碼示例

4. 學習資料

聚類演算法屬於機器學習或數據挖掘領域內,範疇比較小,一般都算作機器學習的一部分或數據挖掘領域中的一類演算法,可結合機器學習進行學習。

  • Scikit Learn:Python的基於NumPy和SciPy的機器學習庫。(http://scikit-learn.org/)
  • Stanford Machine Learning:斯坦福的機器學習課程,在Coursera上觀看,這門課是由 Andrew Ng講解的,講解非常好。(https://www.coursera.org/course/ml)
  • A List of Data Science and Machine Learning http://conductrics.com/data-science-resources/)

轉載自 THU數據派 官方微信公眾號 作者 廖旺堅


推薦一篇論文。 .A Comprehensive Survey of Clustering Algorithms 裡面對聚類的演算法做了分類,並且在各個分類想比較了演算法演算法間的優劣。不過沒有針對沒有個演算法介紹其原理,想知道詳細的就研讀對應的引用。



。。。。 先放一下數據量吧, 過T的也就能整個層次聚類,或者改進的層次聚類。

如果小一點的話, 建議K-means。

如果是幾G這種的, 試試普聚類啥的, 有可能能跑。

如果再小的, 我覺得用規則直接人肉聚類吧。

如果再小, 建議手標。

至於其他的方法, 到了工業界, 貌似沒聽說過特別好使的。


沒有人回答?拋磚引玉一下,說兩個簡單的,kmeans和dbacan一個聚類是圓,一個聚類是不規則形狀


可以參考下下面的文章,後續還會對各個類別的聚類演算法每一類中進行挑選介紹。
聚類演算法第一篇-概覽 - 徐志強的文章 - 知乎專欄


推薦閱讀:

為什麼 LR 模型要使用 sigmoid 函數,背後的數學原理是什麼?
模式識別機器學習的發展方向?
機器學習工程師需要掌握哪些編程語言?
The Elements of Statistical Learning 需要怎樣的數學基礎才能讀懂?
機器學習各種演算法怎麼調參?

TAG:數據挖掘 | 數據分析 | 機器學習 | 數學建模 | 聚類演算法 |