當前位置:
首頁 > 最新 > 數學建模之倚天劍與屠龍刀

數學建模之倚天劍與屠龍刀

本文來自作者Waves在GitChat上分享 「數學建模之倚天劍與屠龍刀」

編輯 | 哈比

本 Chat 基於競賽基礎整理,非技術深度博文。

1. 認識數學建模

數學建模:從 1985 年美國的 MCM(Mathematical Contest in Modeling)一直發展至今。

亞里士多德說,「智慧不僅僅存在於知識之中,而且還存在於應用知識的能力中」。數學建模就是對數學知識最好的應用。

通過數學建模,你會發現,生活中很多有意思的事情都可以靠它來解決,其結構如下:

2. 應該怎麼查找數據?

數據來源查找主要有三個模式: 

題目來源數據; 

題目來源數據 + 中外文期刊資料庫(含統計年鑒);   

題目來源數據 + 中外文期刊資料庫(含統計年鑒)+ 爬蟲數據。

附:中外文資料庫

中文:CNKI、VIP、萬方

外文:EBSCO、Elserive、ProQuest、Springerlink、EI、ISI Web of Knowledge

統計年鑒:National data 國家數據、中國國家統計局年鑒。

開放實驗數據源:C Irvine Machine Learning Repository:https://goo.gl/ZzahzM。

UCI 指的是加州大學歐文分校。UCI 機器學習庫主要是收集的機器學習領域的一些相關數據集和數據生成器,可以用來做一些基本的實驗。

下圖即可看見非常經典的 iris 數據。

3. 數據預處理和數據異常處理之間有什麼區別?

數據預處理包含數據異常處理。數據預處理常常會包含:數據異常處理,數據空缺處理,無效數據處理,數據分類處理等。

常常使用的辦法會有:剔除數據點,擬合模擬數據,對數據進行統計分類等。

4. 軟體很多、演算法很多,到底應該如何選擇?

用一個故事說明:某男到醫院就診,醫生親切地問了一些該男的癥狀,最後得出結論:「我懷孕了……」

很荒謬吧?其實醫生也需要一個好的模型診斷器,根據病人的一系列癥狀,從而得出病人患的是什麼病。

4.1 軟體方面

對於數學建模用到最多的軟體有:Matlab、Mathmatic、 Lingo/LinDo、SAS、SPSS。

其中前兩個主要為計算軟體(也可做優化),中間的那個為優化軟體,最後兩個為統計分析軟體。由於時間太緊了,Java、C++ 之類則在競賽中很少用。

個人推薦:R 和 Python,從定位角度看,R 致力於提供更好的,對用戶友好的數據分析、統計分析和繪圖模型;而 Python 則強調生產效率和代碼的可讀性。

4.2 演算法方面

數學建模常常可以劃分成不同的模型需求:比如說優化模型、微分方程模型、統計模型、概率模型、圖論模型、決策模型。

數學建模演算法中常用的涉及:類比法、二分法、差分法、變分法、圖論法、層次分析法、數據擬合法、回歸分析法、數學規劃(線性規劃,非線性規劃,整數規劃,動態規劃,目標規劃)、機理分析、排隊方法、對策方法、決策方法、模糊評判方法、時間序列方法、灰色理論方法、現代優化演算法(禁忌搜索演算法,模擬退火演算法,遺傳演算法,神經網路)等。

其中層次分析法(AHP)是為數不多的主觀方法,在評價模型中經常被引用,尤其當沒有模型選擇時,可以考慮使用!

在優化方法中在,決策變數、目標函數(盡量簡單、光滑)、約束條件、求解方法是四個關鍵因素。

其中包括無約束規則、線性規則(用 Lingo 實現實現比較方便)非線性規則、0-1 規劃,多目標規劃(有目標加權、效用函數)動態規劃、整數規劃,適合軟體(Matlab、 Lingo、R 和 python)。

回歸分析:對具有相關關係的現象,根據其關係形態,選擇一個合適的數學模型,用來近似地表示變數間的平均變化關係的一種統計方法(一元線性回歸、多元線性回歸、非線性回歸)。

回歸分析在一組數據的基礎上研究這樣幾個問題:建立因變數與自變數之間的回歸模型(經驗公式);對回歸模型的可信度進行檢驗;判斷每個自變數對因變數的影響是否顯著;判斷回歸模型是否適合這組數據;利用回歸模型對進行預報或控制。

相對應的有線性回歸、多元二項式回歸、非線性回歸(比較方便的軟體 Matlab、Mathmatic、Lingo/LinDo、SAS、SPSS、R 和 python)。

逐步回歸分析:從一個自變數開始,視自變數作用的顯著程度,從大到地依次逐個引入回歸方程。

當引入的自變數由於後面變數的引入而變得不顯著時,要將其剔除掉;引入一個自變數或從回歸方程中剔除一個自變數,為逐步回歸的一步。

對於每一步都要進行值檢驗,以確保每次引入新的顯著性變數前回歸方程中只包含對作用顯著的變數。

這個過程反覆進行,直至既無不顯著的變數從回歸方程中剔除,又無顯著變數可引入回歸方程時為止(軟體方面 SAS、matlab、R 和 python)。

時間序列是按時間順序排列的、隨時間變化且相互關聯的數據序列—通過對預測目標自身時間序列的處理,來研究其變化趨勢(長期趨勢變動、季節變動、循環變動、不規則變動)。

時間序列建模的基本步驟

數據的預處理:數據的剔取及提取趨勢項。

取 n=1,擬合 ARMA(2n,2n-1)(即 ARMA(2,1))模型。

n=n+1,擬合 ARMA(2n,2n-1) 模型。

用 F 準則檢驗模型的適用性。若檢驗顯著,則轉入第 2 步。若檢驗不顯著,轉入第 5 步。

檢查遠端時刻的係數值的值是否很小,其置信區間是否包含零。若不是,則適用的模型就是 ARMA(2n,2n-1) 。若很小,且其置信區間包含零,則擬合 ARMA(2n-1,2n-2) 。

利用 F 準則檢驗模型 ARMA(2n,2n-1) 和 ARMA(2n-1,2n-2) ,若 F 值不顯著,轉入第 7 步;若 F 值顯著,轉入第 8 步。

捨棄小的 MA 參數,擬合 m

捨棄小的 MA 參數,擬合 m

聚類方法聚類方法對比:https://goo.gl/xH7C2k。

圖論方法:

最短路問題:兩個指定頂點之間的最短路徑—給出了一個連接若干個城鎮的鐵路網路,在這個網路的兩個指定城鎮間,找一條最短鐵路線(Dijkstra 演算法 )每對頂點之間的最短路徑(Dijkstra 演算法、Floyd 演算法 )。

最小生成樹問題:連線問題—欲修築連接多個城市的鐵路設計一個線路圖,使總造價最低(prim 演算法、Kruskal 演算法 )。

圖的匹配問題:人員分派問題:n 個工作人員去做件 n 份工作,每人適合做其中一件或幾件,問能否每人都有一份適合的工作?如果不能,最多幾人可以有適合的工作?(匈牙利演算法)。

遍歷性問題:中國郵遞員問題—郵遞員發送郵件時,要從郵局出發,經過他投遞範圍內的每條街道至少一次,然後返回郵局,但郵遞員希望選擇一條行程最短的路線。

最小費用問題:在運輸問題中,人們總是希望在完成運輸任務的同時,尋求一個使總的運輸費用最小的運輸方案。

5. 建立了模型,某些相關參數偏差很厲害,是否懷疑過模型?

遇到這種問題以後,首先要做的就是確定模型的建立的合理性,依據是哪些?如果模型是合理的,那麼比較重要的一點,就是需要將數據進行分析。

數據建模中的許多數據都是實際數據,而模型,是一種標準化。

實際數據放在模型中去驗證,很多都是有問題。出現這些問題的原因,不是模型錯誤,而是數據不一定有效。

下面就舉幾種數據不一定有效的情況:

第一種情況是由於某些原因造成的缺少數據;

第二種情況是由於人為的一些原因造成的數據錯誤;

第三種情況是由於數據採集過程中,不恰當採集,造成的臟數據。

還有很多種情況,就不在這裡細說。

遇到這樣的事情,首先要做到的就是剔除掉無效數據,然後再論文中說明,為什麼要剔除這些數據,然後再驗證模型的合理性。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 GitChat技術雜談 的精彩文章:

如何高效開啟你的顧問人生模式
如何搭建 Redis 集群

TAG:GitChat技術雜談 |