聚類模型


學習視頻:【強烈推薦】清風:數學建模算法、編程和寫作培訓的視頻課程以及Matlab

老師講得很詳細,很受用!!!

定義

聚類就是將樣本划分為由類似的對象組成的多個類的過程。聚類后,我們可以更加准確的在每個類中單獨使用統計模型進行估計、分析或預測;也可以探究不同類之間的相關性和主要差異。

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

具體算法

K-means聚類算法

算法流程

  1. 指定需要划分的簇[cù]的個數K值(類的個數);

  2. 隨機地選擇K個數據對象作為初始的聚類中心
    (不一定要是我們的樣本點);

  3. 計算其余的各個數據對象到這K個初始聚類中心的距離,把數據對象划歸到距離它最近的那個中心所處在的簇類中;

  4. 調整新類並且重新計算出新類的中心;

  5. 五循環步驟3和4,看中心是否收斂(中心不變),如果收斂或達到迭代次數則停止循環;

  6. 結束。

    K‐均值聚類可視化的網站: https://www.naftaliharris.com/blog/v (強烈推薦試一下)

流程圖

論文可以畫,清晰明了!

優缺點

優點:
(1)算法簡單、快速。
(2)對處理大數據集,該算法是相對高效率的。
缺點:
(1)要求用戶必須事先給出要生成的簇的數目K。
(2)嚴重依賴與初始簇中心的選擇,對初值敏感。
**(3)對於孤立點數據敏感。 **

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

K-means++算法

與K‐means++算法的區別

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

算法描述如下:(只對K-means算法“初始化K個聚類中心” 這一步進行了優化

  • 步驟一: 隨機選取一個樣本作為第一個聚類中心;
  • 步驟二: 計算每個樣本與當前已有聚類中心的最短距離(即與最近一個聚類中心的距離),這個值越大,表示被選取作為聚類中心的概率較大;最后,用輪盤法(依據概率大小來進行抽選)選出下一個聚類中心;
  • 步驟三: 重復步驟二,直到選出K個聚類中心。選出初始點后,就繼續使用標准的K-means算法了。

Spss軟件操作

K-means算法的一些討論

  1. 聚類的個數K值怎么定?
    答:分幾類主要取決於個人的經驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結果更好解釋(高消費與低消費,或者高消費、中消費與低消費),更符合分析目的等。

  2. 數據的量綱不一致怎么辦?
    答:如果數據的量綱不一樣,那么算距離時就沒有意義。例如:如果X1單位是米, X2單位是噸,用距離公式計算就會出現“米的平方”加上“噸的平方”再開平方,最后算出的東西沒有數學意義,這就有問題了。

    具體做法:先減去均值再除以標准差

    \[z_{i}=\frac{x_{i}-\overline x}{\delta _{x}} \]

系統(層次)聚類 (可以查看k值)

​ 系統聚類的合並算法通過計算兩類數據點間的距離,對最為接近的兩類數據點進行組合,並反復迭代這一過程,直到將所有數據點合成一類,並生成聚類譜系圖。

算法流程

系統(層次)聚類的算法流程:

  • 一、將每個對象看作一類,計算兩兩之間的最小距離;
  • 二、將距離最小的兩個類合並成一個新類;
  • 三、重新計算新類與所有類之間的距離;
  • 四、重復二三兩步,直到所有類最后合並成一類;
  • 五、結束。

詳細講解參考:於晶賢‐遼寧石油化工大學‐聚類分析之系統聚類法.pdf

常用距離(樣品i與樣品j)

  • 絕對值距離:網狀結構的距離
  • 歐氏距離:一般就用歐式距離
  • Minkowski距離:
  • Chebyshev距離:
  • 馬氏距離:多元正太分布

常用“距離” (指標i與指標j)

類與類之間的常用距離

1.由一個樣品組成的類是最基本的類;如果每一類都由
個樣品組成,那么樣品間的距離就是類間距離。
2.如果某一類包含不止一個樣品,那么就要確定類間距
離,類間距離是基於樣品間距離定義的,大致有如下幾種

算法流程圖

聚類分析需要注意的問題

1.對於一個實際問題要根據分類的目的來選取指標,指標
選取的不同分類結果一般也不同。
2.樣品間距離定義方式的不同,聚類結果一般也不同。
3.聚類方法的不同,聚類結果一般也不同(尤其是樣品特別多的時候)。最好能通過各種方法找出其中的共性。
4.要注意指標的量綱,量綱差別太大會導致聚類結果不合
理。
5.聚類分析的結果可能不令人滿意,因為我們所做的是一個數學的處理,對於結果我們要找到一個合理的解釋

Spss軟件操作

譜系圖

畫豎線可以看清分為多少類。

用圖形估計聚類的數量

根據圖來進行解釋:
(1)根據聚合系數折線圖可知,當類別數為5時,折線的下降趨勢趨緩,故可將類別數設定為5.
(2)從圖中可以看出, K值從1到5時,畸變程度變化最大。超過5以后,畸變程度變化顯著降低。因此肘部就是 K=5,故可將類別數設定為5.(當然,K=3也可以解釋)

確定K后保存聚類結果並畫圖

注意: 只要當指標個數為2或者3的時候才能畫圖,上面兩個圖純粹是為了演示作圖過程,實際上本例中指標個數有8個,是不可能做出這樣的圖的

DBSCAN算法

​ DBSCAN(Density-based spatial clustering of applications with noise)是Martin Ester, Hans-PeterKriegel等人於1996年提出的一種基於密度的聚類方法,聚類前不需要預先指定聚類的個數,生成的簇的個數不定(和數據有關)。該算法利用基於密度的聚類的概念,即要求聚類空間中的一定區域內所包含對象(點或其他空間對象)的數目不小於某一給定閾值。該方法能在具有噪聲的空間數據庫中發現任意形狀的簇,可將密度足夠大的相鄰區域連接,能有效處理異常數據。

基本概念

DBSCAN算法將數據點分為三類:
• 核心點:在半徑Eps內含有不少於MinPts數目的點
• 邊界點:在半徑Eps內點的數量小於MinPts,但是落在核心點的鄰域內
• 噪音點:既不是核心點也不是邊界點的點

​ 在這幅圖里,MinPts = 4,點 A 和其他紅色點是核心點,因為它們的 ε-鄰域(圖中紅色圓圈)里包含最少 4 個點(包括自己),由於它們之間相互相可達,它們形成了一個聚類。點 B 和點 C 不是核心點,但它們可由 A 經其他核心點可達,所以也和A屬於同一個聚類。點 N 是局點,它既不是核心點,又不由其他點可達。

可視化

DBSCAN算法可視化

Matlab代碼

Matlab官網推薦下載的代碼:
https://ww2.mathworks.cn/matlabcentral/fileexchange/52905‐dbscan‐clustering‐algorithm

優缺點

優點:

  1. 基於密度定義,能處理任意形狀和大小的簇;
  2. 可在聚類的同時發現異常點;
  3. 與K-means比較起來,不需要輸入要划分的聚類個數。

缺點:

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

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

  3. 當數據量大時,計算密度單元的計算復雜度大。

我的建議:

  1. 只有兩個指標,且你做出散點圖后發現數據表現得很“DBSCAN”,這時候你再用DNSCAN進行聚類。其他情況下,全部使用系統聚類吧。
  2. K‐means也可以用,不過用了的話你論文上可寫的東西比較少。

作業

完成一篇論文作業,“各國森林、草原資源聚類.doc”,提示:指標共三個,量綱不同哦,論文中要交代清楚K的選擇,當然你也可以畫出你的聚類結果的三維圖。

  1. 把作業表格復制到excel,用spss軟件直接打開即可。

  2. 歸一化變量

  3. 使用系統聚類和肘部法則確定聚類個數

    在spss復制一下聚類系數

    復制到ECXCEL表里面去。

    通過對圖像的觀察分析,可以得出當聚類中心個數為4時,其聚合系數變化較大,所以選取聚類中心個數K=4。

  4. 真正的開始系統聚類(kmeans也行)

5.做散點圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM