當前位置:首頁 » 操作系統 » 聚類演算法增量

聚類演算法增量

發布時間: 2023-03-10 11:43:11

① 常見的幾種聚類方法

作為無監督學習的一個重要方法,聚類的思想就是把屬性相似的樣本歸到一類。對於每一個數據點,我們可以把它歸到一個特定的類,同時每個類之間的所有數據點在某種程度上有著共性,比如空間位置接近等特性。多用於數據挖掘、數據分析等一些領域。

下面簡單介紹一下幾種比較常見的聚類演算法

K-means聚類方法大家應該都聽說過,在各種機器學習書籍教程中也是無監督學習部分非常經典的例子。其核心主要為兩個部分:其一是K,K在這里代表著類的數目,我們要把數據聚為多少類。其二是means,表示在每一次計算聚類中心的時候採取的是計算平均值。

我們假設樣本總數為n,K-means聚類法可以簡單表示為一下幾個步驟:

1. 在樣本中隨機選取K個點,作為每一類的中心點。

2. 計算剩下 n-K 個樣本點到每個聚類中心的距離(距離有很多種,假設這里採用歐式距離)。對於每一個樣本點,將它歸到和他距離最近的聚類中心所屬的類。

3. 重新計算每個聚類中心的位置:步驟 2 中得到的結果是 n 個點都有自己所屬的類,將每一個類內的所有點取平均值(這里假設是二維空間,即對 x 和 y 坐標分別取平均),計算出新的聚類中心。

4. 重復步驟 2 和 3 的操作,直到所有的聚類中心不再改變。

分析一下,演算法本身的思想並不難。但是K值如何選擇就見仁見智了,這里可以引入類內距離 J,每一類都會對應一個 J 值,其計算就是把類內所有點之間的距離累加起來。我們肯定希望 J 越小越好,因為小的類內間距代表這一類樣本的相似程度更高(離得更近)。

如果 K 很小,則聚類可能不徹底,即隔著很遠的兩波點也被聚為一類,會使 J 變得很大;相反的,過大的 K 雖然會降低類內間距 J ,但有時候分得過細會對數據的泛化性造成損害,沒有必要弄這么多類。因此 K 的選擇應該是具體問題具體分析。

還有一個問題就是初始聚類中心的選擇。不當的初始化會給演算法的收斂帶來更多的計算開銷。試想一下,如果一開始把離得很近的 K 個點都設為聚類中心,那麼演算法的迭代次數會更多一些。

HAC也是一種比較經典的聚類方法,其主要思想是先把每一個樣本點歸為一類,再通過計算類間的距離,來對最相似或者距離最近的類進行歸並,合成位一個新的類。反復循環,直到滿足特定的迭代條件即可。

HAC的核心思想主要分為如下幾個步驟:

1. 將每個樣本點都視作一類,一共有n個類。

2. 計算所有類之間兩兩的類間距離(類間距離計算方式多種多樣,可以取最近、最遠、找重心等等,這里不做詳述),然後把距離最近的兩個類進行合並,組成一個新的更大的類。

3. 重復步驟 2 中的操作,直到達到特定的迭代條件(例如當前類的數目是初始時的 10% ,即 90% 的類都得到了合並;最小的類間距離大於預先設定的閾值等等),演算法結束。

和K-means演算法中的 K 值選取一樣,HAC中如何選擇迭代的終止條件也是一個比較復雜的問題,需要根據一定的經驗,並且具體問題具體分析。

這種方法的核心思想是先計算出聚類中心,再把所有的樣本點按照就近原則,歸到離自身最近的聚類中心所對應的類。最大最小是指在所有的最小距離中選取最大的。其主要的演算法步驟如下:

1. 隨機選擇一個點,作為第一個類的聚類中心 Z1。

2. 選擇與步驟 1 中距離最遠的樣本點,作為第二個類的聚類中心 Z2。

3. 逐個計算每個點到所有聚類中心的距離,並把所有的最短的距離記錄下來。

4. 在這些最短距離中挑選最大的值,如果這個最大值大於 ,其中 ,那麼將這個最大距離所對應的另一個樣本點作為新的聚類中心;否則整個演算法結束。

5. 重復步驟 3 和 4 的操作,直到 4 中不再出現新的聚類中心。

6. 將所有的樣本歸到與他自身最近的聚類中心。

參考:

https://www.jianshu.com/p/4f032dccdcef

https://www.jianshu.com/p/bbac132b15a5

https://blog.csdn.net/u011511601/article/details/81951939

② 如何運用聚類分析法

聚類分析法是理想的多變數統計技術,主要有分層聚類法和迭代聚類法。聚類通過把目標數據放入少數相對同源的組或「類」(cluster)里。分析表達數據,(1)通過一系列的檢測將待測的一組基因的變異標准化,然後成對比較線性協方差。(2)通過把用最緊密關聯的譜來放基因進行樣本聚類,例如用簡單的層級聚類(hierarchical clustering)方法。這種聚類亦可擴展到每個實驗樣本,利用一組基因總的線性相關進行聚類。(3)多維等級分析(multidimensional scaling analysis,MDS)是一種在二維Euclidean 「距離」中顯示實驗樣本相關的大約程度。(4)K-means方法聚類,通過重復再分配類成員來使「類」內分散度最小化的方法。

聚類方法有兩個顯著的局限:首先,要聚類結果要明確就需分離度很好(well-separated)的數據。幾乎所有現存的演算法都是從互相區別的不重疊的類數據中產生同樣的聚類。但是,如果類是擴散且互相滲透,那麼每種演算法的的結果將有點不同。結果,每種演算法界定的邊界不清,每種聚類演算法得到各自的最適結果,每個數據部分將產生單一的信息。為解釋因不同演算法使同樣數據產生不同結果,必須注意判斷不同的方式。對遺傳學家來說,正確解釋來自任一演算法的聚類內容的實際結果是困難的(特別是邊界)。最終,將需要經驗可信度通過序列比較來指導聚類解釋。

第二個局限由線性相關產生。上述的所有聚類方法分析的僅是簡單的一對一的關系。因為只是成對的線性比較,大大減少發現表達類型關系的計算量,但忽視了生物系統多因素和非線性的特點。

從統計學的觀點看,聚類分析是通過數據建模簡化數據的一種方法。傳統的統計聚類分析方法包括系統聚類法、分解法、加入法、動態聚類法、有序樣品聚類、有重疊聚類和模糊聚類等。採用k-均值、k-中心點等演算法的聚類分析工具已被加入到許多著名的統計分析軟體包中,如SPSS、SAS等。
從機器學習的角度講,簇相當於隱藏模式。聚類是搜索簇的無監督學習過程。與分類不同,無監督學習不依賴預先定義的類或帶類標記的訓練實例,需要由聚類學習演算法自動確定標記,而分類學習的實例或數據對象有類別標記。聚類是觀察式學習,而不是示例式的學習。
從實際應用的角度看,聚類分析是數據挖掘的主要任務之一。就數據挖掘功能而言,聚類能夠作為一個獨立的工具獲得數據的分布狀況,觀察每一簇數據的特徵,集中對特定的聚簇集合作進一步地分析。
聚類分析還可以作為其他數據挖掘任務(如分類、關聯規則)的預處理步驟。
數據挖掘領域主要研究面向大型資料庫、數據倉庫的高效實用的聚類分析演算法。

聚類分析是數據挖掘中的一個很活躍的研究領域,並提出了許多聚類演算法。
這些演算法可以被分為劃分方法、層次方法、基於密度方法、基於網格方法和
基於模型方法。
1 劃分方法(PAM:PArtitioning method) 首先創建k個劃分,k為要創建的劃分個數;然後利用一個循環
定位技術通過將對象從一個劃分移到另一個劃分來幫助改善劃分質量。典型的劃分方法包括:
k-means,k-medoids,CLARA(Clustering LARge Application),
CLARANS(Clustering Large Application based upon RANdomized Search).
FCM
2 層次方法(hierarchical method) 創建一個層次以分解給定的數據集。該方法可以分為自上
而下(分解)和自下而上(合並)兩種操作方式。為彌補分解與合並的不足,層次合
並經常要與其它聚類方法相結合,如循環定位。典型的這類方法包括:
第一個是;BIRCH(Balanced Iterative Recing and Clustering using Hierarchies) 方法,它首先利用樹的結構對對象集進行劃分;然後再利
用其它聚類方法對這些聚類進行優化。
第二個是CURE(Clustering Using REprisentatives) 方法,它利用固定數目代表對象來表示相應聚類;然後對各聚類按照指定
量(向聚類中心)進行收縮。
第三個是ROCK方法,它利用聚類間的連接進行聚類合並。
最後一個CHEMALOEN,它則是在層次聚類時構造動態模型。
3 基於密度方法,根據密度完成對象的聚類。它根據對象周圍的密度(如
DBSCAN)不斷增長聚類。典型的基於密度方法包括:
DBSCAN(Densit-based Spatial Clustering of Application with Noise):該演算法通過不斷生長足夠高密
度區域來進行聚類;它能從含有雜訊的空間資料庫中發現任意形狀的聚類。此方法將一個聚類定義
為一組「密度連接」的點集。
OPTICS(Ordering Points To Identify the Clustering Structure):並不明確產生一
個聚類,而是為自動交互的聚類分析計算出一個增強聚類順序。。
4 基於網格方法,首先將對象空間劃分為有限個單元以構成網格結構;然後利
用網格結構完成聚類。
STING(STatistical INformation Grid) 就是一個利用網格單元保存的統計信息進行基
於網格聚類的方法。
CLIQUE(Clustering In QUEst)和Wave-Cluster 則是一個將基於網格與基於密度相結合的方
法。
5 基於模型方法,它假設每個聚類的模型並發現適合相應模型的數據。典型的
基於模型方法包括:
統計方法COBWEB:是一個常用的且簡單的增量式概念聚類方法。它的輸入對象是采
用符號量(屬性-值)對來加以描述的。採用分類樹的形式來創建
一個層次聚類。
CLASSIT是COBWEB的另一個版本.。它可以對連續取值屬性進行增量式聚
類。它為每個結點中的每個屬性保存相應的連續正態分布(均值與方差);並利
用一個改進的分類能力描述方法,即不象COBWEB那樣計算離散屬性(取值)
和而是對連續屬性求積分。但是CLASSIT方法也存在與COBWEB類似的問題。
因此它們都不適合對大資料庫進行聚類處理.

③ 聚類(Clustering)

首先我們先來認識一下什麼是聚類任務。
聚類是「無監督學習(unsupervised learning)」中重要的一種。其目標是:通過對無標記的訓練樣本學習,來揭示數據內在的性質以及規律,為進一步的數據分析做基礎。聚類的結果是一個個的簇(Cluster)。所以來說,聚類通常作為其他學習演算法的先導,比如在分類問題中,常常先做聚類,基於聚類的不同簇來進行分類模型的訓練。
我們先來認識一下聚類演算法涉及到兩個基本問題:性能度量 & 距離計算。後面我們再具體講解聚類的經典演算法。

由於聚類演算法是無監督式學習,不依賴於樣本的真實標記。所以聚類並不能像監督學習例如分類那樣,通過計算對錯(精確度/錯誤率)來評價學習器的好壞或者作為學習器的優化目標。一般來說,聚類有兩類性能度量指標:外部指標和內部指標

所謂外部,是將聚類結果與某個參考模型的結果進行比較, 以參考模型的輸出作為標准,來評價聚類的好壞。 假設聚類給出的結果為 λ,參考模型給出的結果是λ*,則我們將樣本進行兩兩配對,定義:

內部指標不依賴任何外部模型,直接對聚類的結果進行評估。直觀來說: 簇內高內聚,簇間低耦合 。定義:

我們從小學的距離都是歐氏距離。這里介紹幾種其他的距離度量方法:

這里對於無需屬性我們用閔可夫斯基距離就不能做,需要用VDM距離進行計算,對於離散屬性的兩個取值a和b,定義:

所以在計算兩個樣本的距離時候,將兩種距離混合在一起進行計算:

原型聚類即「基於原型的聚類(prototype-based clustering)」,原型指的是樣本空間中具有代表性的點(類似於K-Means 選取的中心點)。通常情況下來說,演算法現對原型進行初始化,然後對原型進行迭代更新求解。而不同的初始化形式和不同的求解方法,最終會得到不同的演算法。常見的 K-Means 便是基於簇中心來實現聚類;混合高斯聚類則是基於簇分布來實現聚類。下面我們具體看一下幾種算聚類演算法:

K-Means 聚類的思想十分簡單, 首先隨機指定類中心,根據樣本與類中心的遠近劃分類簇;然後重新計算類中心,迭代直至收斂。 實際上,迭代的過程是通過計算得到的。其根本的優化目標是平方誤差函數E:

其中 u_i 是簇 C_i 的均值向量。直觀上來看,上式刻畫了簇內樣本圍繞簇均值向量(可以理解為簇中心)的緊密程度,E值越小,則簇內樣本的相似度越高。
具體的演算法流程如下:

書上還給出了基於具體西瓜樣本集的計算過程說明。可以看一下。

LVQ 也是基於原型的聚類演算法,與K-Means 不同的是, LVQ使用樣本的真實類標記來輔助聚類 。首先,LVQ根據樣本的類標記,從各類中分別隨機選出一個樣本作為該類簇的原型,從而形成了一個 原型特徵向量組 ,接著從樣本集中隨機挑選一個樣本,計算其與原型向量組中每個向量的距離,並選取距離最小的向量所在的類簇作為該樣本的劃分結果,再與真實類標比較:

可以看到,K-Means 和 LVQ 都是以類中心作為原型指導聚類,而高斯混合聚類則採用 高斯分布 來描述原型。現在假設每個類簇中的樣本都服從一個多維高斯分布,那麼空間中的樣本可以看做由K個多維高斯分布混合而成。
多維高斯的概密為:

密度聚類是基於密度的聚類,它從個樣本分布的角度來考察樣本之間的 可連接性 ,並基於可連接性(密度可達)不斷拓展疆域(類簇)。最著名的就是DBSCAN(Density-Based Spatial Clustering of Applications with Noise),首先我們需要明白以下概念:

層次聚類試圖在不同層次對數據集進行劃分,從而形成屬性的聚類結構。
這里介紹一種「自底向上」結合策略的 AGNES(AGglomerative NESting)演算法。假設有N個待聚類的樣本,AGNES演算法的基本步驟如下:

可以看出其中最關鍵的一步就是 計算兩個類簇的相似度 ,這里有幾種度量方法:
(1)單鏈接(singal-linkage):取類間最小距離

④ 聚類的計算方法

傳統的聚類分析計算方法主要有如下幾種:
1、劃分方法(partitioning methods)
給定一個有N個元組或者紀錄的數據集,分裂法將構造K個分組,每一個分組就代表一個聚類,K<N。而且這K個分組滿足下列條件:(1) 每一個分組至少包含一個數據紀錄;(2)每一個數據紀錄屬於且僅屬於一個分組(注意:這個要求在某些模糊聚類演算法中可以放寬);對於給定的K,演算法首先給出一個初始的分組方法,以後通過反復迭代的方法改變分組,使得每一次改進之後的分組方案都較前一次好,而所謂好的標准就是:同一分組中的記錄越近越好,而不同分組中的紀錄越遠越好。使用這個基本思想的演算法有:K-MEANS演算法、K-MEDOIDS演算法、CLARANS演算法;
大部分劃分方法是基於距離的。給定要構建的分區數k,劃分方法首先創建一個初始化劃分。然後,它採用一種迭代的重定位技術,通過把對象從一個組移動到另一個組來進行劃分。一個好的劃分的一般准備是:同一個簇中的對象盡可能相互接近或相關,而不同的簇中的對象盡可能遠離或不同。還有許多評判劃分質量的其他准則。傳統的劃分方法可以擴展到子空間聚類,而不是搜索整個數據空間。當存在很多屬性並且數據稀疏時,這是有用的。為了達到全局最優,基於劃分的聚類可能需要窮舉所有可能的劃分,計算量極大。實際上,大多數應用都採用了流行的啟發式方法,如k-均值和k-中心演算法,漸近的提高聚類質量,逼近局部最優解。這些啟發式聚類方法很適合發現中小規模的資料庫中小規模的資料庫中的球狀簇。為了發現具有復雜形狀的簇和對超大型數據集進行聚類,需要進一步擴展基於劃分的方法。
2、層次方法(hierarchical methods)
這種方法對給定的數據集進行層次似的分解,直到某種條件滿足為止。具體又可分為「自底向上」和「自頂向下」兩種方案。例如在「自底向上」方案中,初始時每一個數據紀錄都組成一個單獨的組,在接下來的迭代中,它把那些相互鄰近的組合並成一個組,直到所有的記錄組成一個分組或者某個條件滿足為止。代表演算法有:BIRCH演算法、CURE演算法、CHAMELEON演算法等;
層次聚類方法可以是基於距離的或基於密度或連通性的。層次聚類方法的一些擴展也考慮了子空間聚類。層次方法的缺陷在於,一旦一個步驟(合並或分裂)完成,它就不能被撤銷。這個嚴格規定是有用的,因為不用擔心不同選擇的組合數目,它將產生較小的計算開銷。然而這種技術不能更正錯誤的決定。已經提出了一些提高層次聚類質量的方法。
3、基於密度的方法(density-based methods)
基於密度的方法與其它方法的一個根本區別是:它不是基於各種各樣的距離的,而是基於密度的。這樣就能克服基於距離的演算法只能發現「類圓形」的聚類的缺點。這個方法的指導思想就是,只要一個區域中的點的密度大過某個閥值,就把它加到與之相近的聚類中去。代表演算法有:DBSCAN演算法、OPTICS演算法、DENCLUE演算法等;
4、基於網格的方法(grid-based methods)
這種方法首先將數據空間劃分成為有限個單元(cell)的網格結構,所有的處理都是以單個的單元為對象的。這么處理的一個突出的優點就是處理速度很快,通常這是與目標資料庫中記錄的個數無關的,它只與把數據空間分為多少個單元有關。代表演算法有:STING演算法、CLIQUE演算法、WAVE-CLUSTER演算法;
很多空間數據挖掘問題,使用網格通常都是一種有效的方法。因此,基於網格的方法可以和其他聚類方法集成。
5、基於模型的方法(model-based methods)
基於模型的方法給每一個聚類假定一個模型,然後去尋找能夠很好的滿足這個模型的數據集。這樣一個模型可能是數據點在空間中的密度分布函數或者其它。它的一個潛在的假定就是:目標數據集是由一系列的概率分布所決定的。通常有兩種嘗試方向:統計的方案和神經網路的方案。
當然聚類方法還有:傳遞閉包法,布爾矩陣法,直接聚類法,相關性分析聚類,基於統計的聚類方法等。

⑤ 增量聚類演算法包括哪些

bigshuai
增量聚類演算法
目前有關增量聚類的研究主要是將增量數據看成是時間序列數據或按特定順序的數據, 主要可以分成兩類: 一類是每次將所有數據進行迭代,即從第一個數據到最後一個數據進行迭代運算, 其優點是精度高, 不足之處是不能利用前一次聚類的結果, 浪費資源; 另一類是利用上一次聚類的結果,每次將一個數據點劃分到已有簇中, 即新增的數據點被劃入中心離它最近的簇中並將中心移向新增的數據點, 也就是說新增的數據點不會影響原有劃分, 其優點是不需要每次對所有數據進行重新聚類, 不足之處是泛化能力弱, 監測不出孤立點。因此, 如何設計增量聚類演算法以提高聚類效率, 成為當前聚類分析的一個重要挑戰。
目前存在各種各樣的聚類方法[ 3] , 傳統的聚類方法主要被劃分成五類: 基於層次的、基於劃分的、基於密度的、基於網格的和基於模型的聚類。基於層次的聚類和基於劃分的聚類是實際生活中應用最為廣泛的兩類。前者可以進一步劃分為自底向上和自頂向下兩種[ 1] , 例如CLIQUE[ 3] 、ENCLUS 和MAFIA[ 4] 屬於自底向上演算法, PROCLUS[ 5] 和ORCLUS[ 6 ]屬於自頂向下的演算法。但是, 傳統的層次聚類演算法由於計算量過大不適用於大數據集, 例如BIRCH[ 2] 和CURE[ 7 ] 。傳統的基於劃分的演算法包括k-means、k-modes等等, 其中k-means是現存聚類演算法中最經典的聚類演算法[ 8, 9] 。
增量聚類是維持或改變k 個簇的結構的問題。比如, 一個特定序列中的新的數據點可能被劃分到已有k 個簇的一個簇中, 也可能被劃分到新的簇中,此時會需要將另外兩個簇變成一個[ 10 ] 。自從H art igan在文獻[ 11]中提出的演算法被實現[ 12] , 增量聚類就吸引了眾人的關注。D. Fisher[ 13] 提出的COBWEB 演算法是一種涉及到增量形式數據點的增量聚類演算法。文獻[ 14, 15]中給出了與資料庫的動態方面相關的增量聚類的詳細闡述, 文獻[ 16􀀁 18]中列出了其廣泛應用的領域。對增量聚類產生興趣的動力是主存空間有限, 有些信息不需要存儲起來,例如數據點之間的距離, 同時增量聚類演算法可以根據數據點集的大小和屬性數進行擴展[ 19] 。文獻[ 10, 17]中也對於求解增量聚類問題的演算法進行了研究。
現在很多聚類演算法都是對單一數據類型的數據進行聚類, 但是現實數據中非常多的數據都是混合數據類型的數據, 既包含數值屬性數據, 還是分類屬性數據, 簡單地丟棄其中一種數據類型, 或者將其中一種數據類型轉換成另一種, 都會影響聚類的精度。因此, 混合屬性數據增量聚類的研究具有非常重要的意義。
2 基於傳統聚類方法及其變形的增量聚類演算法
現在對於增量聚類方法的增量處理主要集中在三個方面, 一類是基於傳統聚類方法及其各種變形的增量聚類演算法, 一類是基於生物智能的增量聚類演算法, 另一類是針對數據流的聚類演算法。

熱點內容
虛擬存儲器尋找輔存 發布:2025-08-22 09:10:40 瀏覽:879
農村醫保金融卡密碼是多少 發布:2025-08-22 08:33:59 瀏覽:662
iphone8手機如何快捷鍵清除緩存 發布:2025-08-22 08:21:57 瀏覽:425
linux編程java 發布:2025-08-22 07:57:40 瀏覽:310
steam刪文件夾 發布:2025-08-22 07:57:38 瀏覽:52
bytec語言 發布:2025-08-22 07:37:34 瀏覽:387
蘋果手機怎麼上傳視頻到qq空間 發布:2025-08-22 07:10:03 瀏覽:638
淘寶androidsdk 發布:2025-08-22 06:52:04 瀏覽:940
編程掙錢嗎 發布:2025-08-22 06:31:21 瀏覽:1003
敬請存儲 發布:2025-08-22 06:25:42 瀏覽:612