[掃雷]什麼是建模,有什麼注意事項

很多人都會講建模,但是為什麼要建模?這樣的目的需要確認的,特別是在人工智能或大數據分析時。那我簡單的說明一下。


建模的英文是Modelling,也就是你可以用演繹法或歸納法幫助你找到規律。例如高中的時候就會學到「數學歸納法」,從參數(n)的數值為1開始,證明「若n=k 時數學式成立,則n=k+1 時同樣的數學模式亦成立」。那麼演繹法則是從假設開始數學推論到一個陳述的結果。例如在經濟學的數學推導上,特別是使用最佳化理論,就是屬於演繹法。無論是演繹法或歸納法,如果是數字或符號,最終都會有數學式出現!這是個很重要的顯現!

如果你發現自己在建模時,最後沒有出現數學式,而只是一個結果說明,那麼就該懷疑。特別是那種中間過程有隨機抽取的情況。因為每一次跑的結果都不會一樣。當然你可以說你跑了一千億次,然後取平均值。這也是有問題的:為什麼是取平均值,為什麼不用中位數?你能保證平均值具有代表性嗎?或許資料來自於那種沒有平均數和變異數的母體分配呢!

所以,我們在做研究就會需要建模,然後再由模型去做分析,例如靜態分析、比對分析、群聚分析、關聯分析、動態分析等。建模也代表科學或科技的系統核心。不過有時候我們無法建模,就會以資料庫為基礎,做分類、比對分析。此種方法的缺點是相對慢速或是你的資料庫一定要足夠完整。

所以為什麼我們要建模?我提出三個理由。第一個理由是因為數學模型是可以最完整表達出從整個資料庫分析出我們主觀問題所需答案的規律。有數學模型,就能取代整個資料庫。有需要數據就能從數學模型,進行模擬。要幾筆資料就能有幾筆資料,而這些資料都能反映這數學模型特性。

第二個理由是成本。如果一直使用資料庫,隨著時間,資料庫愈來愈肥大,我們對硬體的要求會特別高。此時你需要付出的成本也會高。若是使用數學模型,只要數學模型沒有改變,那麼對硬體的需求就不會一直擴展。

第三個理由是速度。從資料庫當中搜尋比對,然後再去分析。這樣的速度肯定會較數學模型分析的速度。

除了上述三個理由外,在建模時還會發生一些問題,例如,建模太花時間;建模的模型太複雜,人力難以做到。特別是大數據的資料量,多、雜且亂的內容,想找出模型,還要顯示數學結果,這樣才是足夠完成建模。

建模時我們很可能會遇到很多事情,其中下方提出的四點常常是在建模時不太會完全走完的流程。但我們認為想要做到建模,甚至是精準建模,還能反覆使用,那麼仍需要注意這些事情。第一,如果你跑出來的結果,沒有數學式,那其實沒有建模成功。例如統計學的迴歸分析就會有估計式,這就是數學式。但是報表結果只是圖形[註1],或只是列出某些數字結果,這其實都不算是建模。

第二,沒法模擬比對。當我們有數學式,就能夠模擬出數據來,和原始數據進行比對。但如果沒有數學式,很可能你每次的結果都可能有不同的比對結果。

第三,需要驗證。當我們得到數學式後,需要使用模擬器協助驗證數學式的精準度、有效性、代表性。再驗證過程中,我們也容易遇到需要「還原」數值的過程,例如,我們使用變數轉換去估計,那麼就要能夠還原。這裡肯定會遇到一些情況,如圓形!還原就會遇到一個數值可以對應兩個數值的問題。

第四,衡量精準度的指標。除了統計學的MSE、變異數、標準差、絕對離差、R2等,還有離差(A-A的估計值)、離差率、最大離差、最小離差等。





--------------------------------------------
註1:如果畫圖是直接設定數學模型去畫圖,是有模型的,但不是數據得到的模型。例如,我假設Y = log(sin(e^X)),然後用此數學式去畫圖,那我其實是根據數學模型,但這是我假設的數學式,不是從數據得到的數學式。這並不是我這篇文章在說的情況。