数学建模之聚类模型
聚類模型
基本概念:“物以類聚,人以群分”,所謂的聚類,就是將樣本劃分為由類似的對象組成的多個類的過程。聚類后,我們可以更加準(zhǔn)確的在每個類中單獨使用統(tǒng)計模型進行估計、分析或預(yù)測;也可以探究不同類之間的相關(guān)性和主要差異。
聚類和分類的區(qū)別:分類是已知類別的,聚類未知。
K-means聚類算法:
流程:
一、指定需要劃分的簇[cù]的個數(shù)K值(類的個數(shù));
二、隨機地選擇K個數(shù)據(jù)對象作為初始的聚類中心(不一定要是我們的樣本點);
三、計算其余的各個數(shù)據(jù)對象到這K個初始聚類中心的距離,把數(shù)據(jù)對象劃歸到距離它最近的那個 中心所處在的簇類中;
四、調(diào)整新類并且重新計算出新類的中心;
五、循環(huán)步驟三和四,看中心是否收斂(不變),如果收斂或達(dá)到迭代次數(shù)則停止循環(huán);
六、結(jié)束。
流程圖:
優(yōu)點:
(1)算法簡單、快速。
(2)對處理大數(shù)據(jù)集,該算法是相對高效率的。
缺點:
(1)要求用戶必須事先給出要生成的簇的數(shù)目K。
(2)對初值敏感。
(3)對于孤立點數(shù)據(jù)敏感。
K‐means++算法可解決2和3這兩個缺點。
K-means++算法:(只對K-means算法“初始化K個聚類中心” 這一步進行了優(yōu)化)
k-means++算法選擇初始聚類中心的基本原則是:初始的聚類中心之間的相互距離要盡可能的遠(yuǎn)。
算法描述:
步驟一:隨機選取一個樣本作為第一個聚類中心;
步驟二:計算每個樣本與當(dāng)前已有聚類中心的最短距離(即與最近一個聚類中心的距離),這個值越大,表示被選取作為聚類中心的概率較大;最后,用輪盤法(依據(jù)概率大小來進行抽選)選出下一個聚類中心;
步驟三:重復(fù)步驟二,直到選出K個聚類中心。選出初始點后,就繼續(xù)使用標(biāo)準(zhǔn)的K-means算法了。
spss軟件操作:
注:
(1)聚類的個數(shù)K值怎么定?
答:分幾類主要取決于個人的經(jīng)驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結(jié)果更好解釋,更符合分析目的等。
(2)數(shù)據(jù)的量綱不一致怎么辦?
答:如果數(shù)據(jù)的量綱不一樣,那么算距離時就沒有意義。例如:如果X1單位是米,X2單位是噸,用距離公式計算就會出現(xiàn)“米的平方”加上“噸的平方”再開平方,最后算出的東西沒有數(shù)學(xué)意義,這就有問題了。
系統(tǒng)(層次)聚類:
基本概念:系統(tǒng)聚類的合并算法通過計算兩類數(shù)據(jù)點間的距離,對最為接近的兩類數(shù)據(jù)點進行組合,并反復(fù)迭代這一過程,直到將所有數(shù)據(jù)點合成一類,并生成聚類譜系圖。
算法流程:
一、將每個對象看作一類,計算兩兩之間的最小距離;
二、將距離最小的兩個類合并成一個新類;
三、重新計算新類與所有類之間的距離;
四、重復(fù)二三兩步,直到所有類最后合并成一類;
五、結(jié)束。
spss軟件操作同K-means++算法類似;
聚類譜系圖(樹狀圖):
譜系圖是較新的Spss版本添加的功能,橫軸表示各類之間的距離(該距離經(jīng)過了重新標(biāo)度),聚類的個數(shù)可以自己從圖中決定。Spss結(jié)果中還有一種圖,被稱為冰柱圖,目前已經(jīng)很少用了。
用圖形估計聚類的數(shù)量:
肘部法則(Elbow Method):通過圖形大致的估計出最優(yōu)的聚類數(shù)量。
畫圖前先對數(shù)據(jù)進行處理,把數(shù)據(jù)粘貼到Excel表格中,并按照降序排好。
(聚合系數(shù)折線圖的畫法:excel畫散點圖;)
確定K后保存聚類結(jié)果并畫圖:
示意圖:
只有當(dāng)指標(biāo)個數(shù)為2或者3的時候才能畫圖;
DBSCAN算法:
具有噪聲的基于密度的聚類方法
基本概念:DBSCAN(Density-based spatial clustering of applicationswith noise)是Martin Ester, Hans-PeterKriegel等人于1996年提出的一種基于密度的聚類方法,聚類前不需要預(yù)先指定聚類的
個數(shù),生成的簇的個數(shù)不定(和數(shù)據(jù)有關(guān))。該算法利用基于密度的聚類的概念,即要求聚類空間中的一定區(qū)域內(nèi)所包含對象(點或其他空間對象)的數(shù)目不小于某一給定閾值。該方法能在具有噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的簇,可將密度足夠大的相鄰區(qū)域連接,能有效處理異常數(shù)據(jù)。
DBSCAN算法將數(shù)據(jù)點分為三類:
核心點:在半徑Eps內(nèi)含有不少于MinPts數(shù)目的點
邊界點:在半徑Eps內(nèi)點的數(shù)量小于MinPts,但是落在核心
點的鄰域內(nèi)
噪音點:既不是核心點也不是邊界點的點
例:
偽代碼:
偽代碼(Pseudocode)是一種非正式的,類似于英語結(jié)構(gòu)的,用于描述模塊結(jié)構(gòu)圖的語言。使
用偽代碼的目的是使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java等)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。
優(yōu)點:
1、基于密度定義,能處理任意形狀和大小的簇;
2、可在聚類的同時發(fā)現(xiàn)異常點;
3、與K-means比較起來,不需要輸入要劃分的聚類個數(shù)。
缺點:
1、 對輸入?yún)?shù)ε和Minpts敏感,確定參數(shù)困難;
2、 由于DBSCAN算法中,變量ε和Minpts是全局唯一的,當(dāng)聚類的密度不均勻時,聚類距離相差很大時,聚類質(zhì)量差;
3、當(dāng)數(shù)據(jù)量大時,計算密度單元的計算復(fù)雜度大。、
建議:
只有兩個指標(biāo),且你做出散點圖后發(fā)現(xiàn)數(shù)據(jù)表現(xiàn)得很“DBSCAN”,這時候你再用DBSCAN進行聚類。其他情況下,全部使用系統(tǒng)聚類,K‐means也可以用。
總結(jié)
- 上一篇: 一次回母校教前端的经历
- 下一篇: 快速查询及下载CCF推荐期刊目录方法