天天看點

數學模組化之聚類模型

聚類模型

基本概念:“物以類聚,人以群分”,所謂的聚類,就是将樣本劃分為由類似的對象組成的多個類的過程。聚類後,我們可以更加準确的在每個類中單獨使用統計模型進行估計、分析或預測;也可以探究不同類之間的相關性和主要差異。

聚類和分類的差別:分類是已知類别的,聚類未知。

K-means聚類算法:

流程:

一、指定需要劃分的簇[cù]的個數K值(類的個數);

二、随機地選擇K個資料對象作為初始的聚類中心(不一定要是我們的樣本點);

三、計算其餘的各個資料對象到這K個初始聚類中心的距離,把資料對象劃歸到距離它最近的那個 中心所處在的簇類中;

四、調整新類并且重新計算出新類的中心;

五、循環步驟三和四,看中心是否收斂(不變),如果收斂或達到疊代次數則停止循環;

六、結束。

數學模組化之聚類模型

流程圖:

數學模組化之聚類模型

優點:

(1)算法簡單、快速。

(2)對處理大資料集,該算法是相對高效率的。

缺點:

(1)要求使用者必須事先給出要生成的簇的數目K。

(2)對初值敏感。

(3)對于孤立點資料敏感。

K‐means++算法可解決2和3這兩個缺點。

K-means++算法:(隻對K-means算法“初始化K個聚類中心” 這一步進行了優化)

k-means++算法選擇初始聚類中心的基本原則是:初始的聚類中心之間的互相距離要盡可能的遠。

算法描述:

步驟一:随機選取一個樣本作為第一個聚類中心;

步驟二:計算每個樣本與目前已有聚類中心的最短距離(即與最近一個聚類中心的距離),這個值越大,表示被選取作為聚類中心的機率較大;最後,用輪盤法(依據機率大小來進行抽選)選出下一個聚類中心;

步驟三:重複步驟二,直到選出K個聚類中心。選出初始點後,就繼續使用标準的K-means算法了。

spss軟體操作:

數學模組化之聚類模型

注:

(1)聚類的個數K值怎麼定?

答:分幾類主要取決于個人的經驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結果更好解釋,更符合分析目的等。

(2)資料的量綱不一緻怎麼辦?

答:如果資料的量綱不一樣,那麼算距離時就沒有意義。例如:如果X1機關是米,X2機關是噸,用距離公式計算就會出現“米的平方”加上“噸的平方”再開平方,最後算出的東西沒有數學意義,這就有問題了。

系統(層次)聚類:

基本概念:系統聚類的合并算法通過計算兩類資料點間的距離,對最為接近的兩類資料點進行組合,并反複疊代這一過程,直到将所有資料點合成一類,并生成聚類譜系圖。

算法流程:

一、将每個對象看作一類,計算兩兩之間的最小距離;

二、将距離最小的兩個類合并成一個新類;

三、重新計算新類與所有類之間的距離;

四、重複二三兩步,直到所有類最後合并成一類;

五、結束。

spss軟體操作同K-means++算法類似;

聚類譜系圖(樹狀圖):

譜系圖是較新的Spss版本添加的功能,橫軸表示各類之間的距離(該距離經過了重新标度),聚類的個數可以自己從圖中決定。Spss結果中還有一種圖,被稱為冰柱圖,目前已經很少用了。

用圖形估計聚類的數量:

肘部法則(Elbow Method):通過圖形大緻的估計出最優的聚類數量。

數學模組化之聚類模型

畫圖前先對資料進行處理,把資料粘貼到Excel表格中,并按照降序排好。

(聚合系數折線圖的畫法:excel畫散點圖;)

确定K後儲存聚類結果并畫圖:

數學模組化之聚類模型

示意圖:

隻有當名額個數為2或者3的時候才能畫圖;

DBSCAN算法:

具有噪聲的基于密度的聚類方法

基本概念:DBSCAN(Density-based spatial clustering of applicationswith noise)是Martin Ester, Hans-PeterKriegel等人于1996年提出的一種基于密度的聚類方法,聚類前不需要預先指定聚類的

個數,生成的簇的個數不定(和資料有關)。該算法利用基于密度的聚類的概念,即要求聚類空間中的一定區域内所包含對象(點或其他空間對象)的數目不小于某一給定門檻值。該方法能在具有噪聲的空間資料庫中發現任意形狀的簇,可将密度足夠大的相鄰區域連接配接,能有效處理異常資料。

DBSCAN算法将資料點分為三類:

核心點:在半徑Eps内含有不少于MinPts數目的點

邊界點:在半徑Eps内點的數量小于MinPts,但是落在核心

點的鄰域内

噪音點:既不是核心點也不是邊界點的點

例:

數學模組化之聚類模型

僞代碼:

僞代碼(Pseudocode)是一種非正式的,類似于英語結構的,用于描述子產品結構圖的語言。使

用僞代碼的目的是使被描述的算法可以容易地以任何一種程式設計語言(Pascal,C,Java等)實作。是以,僞代碼必須結構清晰、代碼簡單、可讀性好,并且類似自然語言。

優點:

1、基于密度定義,能處理任意形狀和大小的簇;

2、可在聚類的同時發現異常點;

3、與K-means比較起來,不需要輸入要劃分的聚類個數。

缺點:

1、 對輸入參數ε和Minpts敏感,确定參數困難;

2、 由于DBSCAN算法中,變量ε和Minpts是全局唯一的,當聚類的密度不均勻時,聚類距離相差很大時,聚類品質差;

3、當資料量大時,計算密度單元的計算複雜度大。、

建議:

隻有兩個名額,且你做出散點圖後發現資料表現得很“DBSCAN”,這時候你再用DBSCAN進行聚類。其他情況下,全部使用系統聚類,K‐means也可以用。

繼續閱讀