【聚類分析】聚類算法初階引入

1 聚類分析基本概念

聚類分析將數據劃分成有意義或有用的簇。如果目標是劃分成有意義的組,則簇應當捕獲數據的自然結構。
聚類分析是一種分類的多元統計分析方法。按照個體或樣品的特征將它們分類,使同一類別內的個體具有盡可能高的同質性(homogeneity),而類別之間則應具有盡可能高的異質性(heterogeneity)。
聚類是研究數據間邏輯上或物理上的相互關系的技術,其分析結果不僅可以揭示數據間的內在聯系與區別,還可以為進一步的數據分析與知識發現提供重要依據。它 是數據挖掘技術中的重要組成部分。作為統計學的重要研究內容之一,聚類分析具有堅實的理論基礎,并形成了系統的方法學體系

2 聚類分析的應用

聚類分析是洞察數據分布的獨立工具,也可以作為其他算法預處理或者中間處理環節的方法。
一般而言,可分為以下幾個方面:
(1)其他數據挖掘任務的關鍵中間環節:用于構建數據概要,用于分類、模式識別、假設生成和測試;用于異常檢測,檢測遠離群簇的點。
(2)數據摘要、數據壓縮、數據降維:例如圖像處理中的矢量量化技術。創建一個包含所有簇原型的表,即每個原型賦予一個整數值,作為它在表中的索引。每個對象用與它所在簇相關聯的原型的索引表示。
(3)協同過濾:用于推薦系統和用戶細分。
(4)動態趨勢檢測:對流數據進行聚類,檢測動態趨勢和模式。
(5)用于多媒體數據、生物數據、社交網絡數據的應用

舉例來說,在商務上,聚類能幫助市場分析人員從客戶基本庫中發現不同的客戶群,并且用不同的購買模式來刻畫不同的消費群體的特征。在生物學上,聚類能用于幫助推導植物和動物的種類,基因和蛋白質的分類,獲得對種群中固定結構的認識。聚類在地球觀測數據中相似地區的確定,根據房屋的類型、價值和位置對一個城市中房屋的分類發揮作用。聚類也能用來對web上的文檔進行分類,以發現有用的信息。聚類分析能作為一種獨立的工具來獲得數據分布的情況,觀察每個簇的特點,并對某些特定的節點進一步分析。

3 聚類算法的分類

聚類分析的算法可以分為劃分法(Partitioning Methods)、層次法(Hierarchical Methods)、基于密度的方法(density-based methods)、基于網格的方法(grid-based methods)、基于模型的方法(Model-Based Methods)。

3.1 基于距離的方法

劃分算法和層次算法可以看做是基于距離的聚類算法。
劃分算法(partitioning method)是簡單地將數據對象劃分成不重疊的子集(簇),使得每個數據對象恰在一個子集中。
給定一個有N個元組或者紀錄的數據集,分裂法將構造K個分組,每一個分組就代表一個聚類,K<N。而且這K個分組滿足下列條件:

(1)每一個分組至少包含一個數據紀錄;
(2)每一個數據紀錄屬于且僅屬于一個分組(注意:這個要求在某些模糊聚類算法中可以放寬);
對于給定的K,算法首先給出一個初始的分組方法,以后通過反復迭代的方法改變分組,使得每一次改進之后的分組方案都較前一次好,而所謂好的標準就是:同一分組中的記錄越近越好,而不同分組中的紀錄越遠越好。

傳統的劃分方法可以擴展到子空間聚類,而不是搜索整個數據空間。當存在很多屬性并且數據稀疏時,這是有用的。為了達到全局最優,基于劃分的聚類可能需要窮舉所有可能的劃分,計算量極大。實際上,大多數應用都采用了流行的啟發式方法,如k-均值和k-中心算法,漸近的提高聚類質量,逼近局部最優解。這些啟發式聚類方法很適合發現中小規模的數據庫中小規模的數據庫中的球狀簇。為了發現具有復雜形狀的簇和對超大型數據集進行聚類,需要進一步擴展基于劃分的方法。
使用這個基本思想的算法有:K-MEANS算法、K-MEDIANS算法、K-MEDOIDS算法、CLARANS算法

層次算法(hierarchical method)是嵌套簇的集族,組織成一棵樹。除葉子結點外,樹中每一個結點(簇)都是其子女(子簇)的并,而樹根是包含所有對象的簇。
這種方法對對給定的數據集進行層次似的分解,直到某種條件滿足為止。
層次法對給定的數據對象集合進行層次似的分解。按層次分解的形成方式,層次法可分為凝聚和分裂兩大類。
凝聚的方法,也稱為自底向上的方法,一開始將每個對象作為單獨的一個類,然后相繼地合并相近的類,直到所有的類合并為一個(層次的最上層),或者達到一個終止條件為止。
分裂的方法,也稱為自頂向下的方法, 一開始將所有的對象置于一個類中。在迭代的每一步中,類被分裂為更小的類,直到每個類只包含一個對象,或者達到一個終止條件為止。在凝聚或者分裂層次聚類方法中,通常以用戶定義的希望得到的類的數目作為結束條件。在類的合并或分裂過程中,需要考察類間的距離。
層次方法中代表算法有BIRCH、CURE、ROCK、CHAMELEON算法等。

3.2 基于密度的方法

絕大多數劃分方法基于對象之間的距離進行聚類,這樣的方法只能發現球狀的類,而在發現任意形狀的類上有困難。因此,出現了基于密度的聚類方法,其主要思想是:只要鄰近區域的密度(對象或數據點的數目)超過某個閾值,就繼續聚類。也就是說,對給定類中的每個數據點,在一個給定范圍的區域內必須至少包含某個數目的點。這樣的方法可以過濾“噪聲”數據,發現任意形狀的類。但算法計算復雜度高,一般為O(n^2),對于密度分布不均的數據集,往往得不到滿意的聚類結果。
其代表算法有DBSCAN、OPTICS和DENCLUE等。

3.3 基于網格的方法

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

3.4 基于概率和生成模型的方法

基于模型的聚類算法為每簇假定了一個模型,尋找數據對給定模型的最佳擬合。一個基于模型的算法可能通過構建反應數據點空間分布的密度函數來定位聚類。它也基于標準的統計數字自動決定聚類的數目,過濾噪聲數據或孤立點,從而產生健壯的聚類方法。基于模型的聚類試圖優化給定的數據和某些數據模型之間的適應性。 這樣的方法經常是基于這樣的假設:數據是根據潛在的概率分布生成的
基于模型的方法主要有兩類:統計學方法和網絡神經方法。其中,統計學方法有COBWEB算法,網絡神經方法有SOM算法

4 對聚類分析的要求

4.1 聚類質量

處理不同類型屬性的能力:許多算法被設計用來聚類數值類型的數據。但是,應用可能要求聚類其他類型的數據,如二元類型(binary),分類/標稱類型(categorical/nominal),序數型(ordinal)數據,或者這些數據類型的混合。

發現任意形態的群簇:許多聚類算法基于歐幾里得或者曼哈頓距離度量來決定聚類。基于這樣的距離度量的算法趨向于發現具有相近尺度和密度的球狀簇。但是,一個簇可能是任意形狀的。提出能發現任意形狀簇的算法是很重要的。

處理噪聲的能力:絕大多數現實中的數據庫都包含了孤立點,缺失,或者錯誤的數據。一些聚類算法對于這樣的數據敏感,可能導致低質量的聚類結果。

4.2 可伸縮性

許多聚類算法在小于200個數據對象的小數據集合上工作得很好;但是,一個大規模數據庫可能包含幾百萬個對象,在這樣的大數據集合樣本上進行聚類可能會導致有偏的結果。我們需要具有高度可伸縮性的聚類算法
可伸縮性的聚類算法要求算法對所有數據進行聚類,能夠處理好高維數據,可以對流數據進行聚類,算法對數據輸入順序不敏感。

4.3 可解釋性和可用性

用戶希望聚類結果是可解釋的,可理解的,和可用的。也就是說,聚類可能需要和特定的語義解釋和應用相聯系。

轉載請注明作者Jason Ding及其出處
Github博客主頁(http://jasonding1354.github.io/)
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.lxweimin.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354進入我的博客主頁

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容