甚麼是資料分析與數學模型 === ###### tags: `資料科學建模` ## 🚩資料分析 ### ◾甚麼是資料分析? 資料分析是為了讓我們可以從各種資訊去<span style="color:red;">了解目標物(通常稱為系統)的運行規則與現象</span>,並進一步去做應用。 * **系統(或是現象)** 指的是<span style='background:#F0E68C'>一系列相關的事物</span>所組成的集合,例如: 人體的消化系統 ( 嘴巴、食道、胃、小腸、大腸、肛門 )、車子 (骨架、底盤、輪子、發動機、電瓶、… )、氣象 (氣壓、降雨、氣溫、季節、風速、..… ) 等等,都是一個系統。 我們藉由觀察系統的行為來取得與系統相關的資料,而透過資料分析來反推系統的規則與行為。 ### ◾資料分析會遇到的困難 - 單純的資料不足: **資訊量不足**,無法透過少量的資料來理解系統的規則。 - 無法觀察到系統的全貌: **資料的面相不足**,這會導致我們對於系統的了解過於片面。 - 系統的現象或規則過於複雜: 系統的**行為太過複雜**,無法透過資料輕易地了解系統的規則 ### ◾資料分析的方法 - **還原論( reductionism )**: 將系統拆分成小物件一一分析,來了解系統的運作原理 - 優點: 可以完全的理解並掌控系統的運作原理 - 缺點: 對於複雜的系統往往很難分析出來 - **深度學習 ( deep learning )**: 不拆分系統,在保持系統的複雜性的情況下做分析 ( 以資料導向的分析方法 ) - 分析過程中是個黑盒子,很難清楚的解釋資料處理的意義 ## 🚩甚麼是數學模型? ### ◾甚麼是數學模型? → 對於現象或系統的模擬替代 以數學的方法來描述現象或系統,是利用資料來模擬系統規則的一種架構 :::success 💡tip. 當我們無法藉由單純的資料分析達到我們想要的目的的時候,可以利用數學的方法來產生一個**有相似行為的替代模型**來做分析 ::: - 以客觀的方式來描述現象的機制 (透過另一個對象來觀察目標) - 預測問題 - 高階資料的處理與資料生成 ### ◾假設的重要性 建立數學模型的步驟如下: 1. 以「這個情況像甚麼模型」做假設來選定模型 2. 調整模型內參數,盡可能的產出與目標系統相同的資料 數學模型是否能貼合現實系統,有很大的程度取決於**模型的假設**,且數學模型能夠適用,必是建立在**現實符合數學模型假設的情況下** ### ◾晉升成理論 數學模型在經過充分的審視之後,模型可能會成為對應現象的**近似理論** ex. 牛頓運動方程式、馬克士威方程組 ### ◾邊界條件與難易度 數學模型需要符合假設,那麼就代表模型有**適用範圍**的存在。而在適用範圍邊界上所需滿足的條件即是**邊界條件 (boundary condition) 。**而在我們求解時,一開始就必須滿足的條件稱為**初始條件 (initial condition)** ,就是邊界條件的一種。 - **邊界條件**: 滿足模型**適用範圍邊界**的條件 - **初始條件**: 邊界條件的一種,是在一**開始求解時**就需要滿足的條件 對於解決簡單的問題,我們可以利用理論來推出問題的邊界。而現實中的問題往往是複雜的,我們很難裡用理論來推出問題的適用範圍,通常只能利用**數值模擬**來計算 - **簡單的問題:** 利用理論推出適用範圍 - **複雜的問題:** 利用**數值模擬**推出適用範圍 ### ◾建模(modeling) 的方式 建模的方法**依目的性**可以分成兩類: - **理解導向: 基於對資料的理解**建立模型,目的是**理解資料的生成機制** → **基於 domain knowledge** 來建立模型,需要對該資料所在的領域有一定的了解 - **應用導向:** 以**現有的的資料**藉由**調整模型參數**來建模,目的是**以手邊有的資料為基礎預測或控制未知的資料,使模型產生新的資料並加以利用** (常見於機器學習領域) → 不用對資料所在的領域有太深的理解,也能建模。 → **硬 train 一發**,老天爺會給你一個解釋 (反正他可以用😗) --- ## 🚩數學模型的元素 :::warning > <strong style='color:black'>數學模型即是說明變數與變數之間的關係</strong> ::: ### ◾數學模型的組成元素 - **變數 (Variable):** 利用數字或符號來表示系統內的**狀態、性質或計量**等的元素。 ex. 狀態: 壓力 , 性質: 密度, 數量: 個數 - **數學結構 (Methematical structure):** 利用數學方法來表現系統所需要的一切東西 ex. 運算式 :::success 💡tip. 數學結構相當於**數學模型的骨架**。挑選合適的結構,那麼模型才能很好的去貼合現實系統。**所以選擇合適的數學結構是良好分析的基礎**。 ::: - **參數 (Parameter):** 用來調整模型,使模型**貼合 ( 擬合, fit )** 現實系統的元素。 :::success 💡tip. 參數代表數學模型的活動範圍 (即自由度, degree of freedom),參數越多則模型就可以越擬合現實中的系統(表現力越大),但也會造成一定的麻煩,而參數的多寡取決於分析目的以及使用的數學結構。 ::: **範例: 我們想說明「身高越高,體重越重」的現象,則可以由數學模型來說明這個現象:** **W = aH+b, 其中:** **變數:** 體重(W)、身高(H) **數學結構:** 體重會是身高加上常數 **參數:** a,b 由上面可以知道 **數學模型 = 變數+數學結構+參數** ### ◾變數有哪些? - **根據變數的值做分類** - **定量變數 (quantitative variable)**: 能夠利用**四則運算**來表示的變數 ex. 身高,體重,長度,面積…. - **定性變數 (qualitative variable)**: 類別變數( categorical variable ),能夠利用**四則運算**來表示的變數 ex. 性別,排名,興趣,職業…. - **根據是否可觀察做分類** - **可觀測變數 (obserable variable)**: 能夠直接觀察得到並取得到資料的變數 ex. 消費明細 - **潛在變數 (latent varivable)**: 在模型內部無法直接觀察得到的變數。會受到輸入改變而改變 ex. 消費者購買原因無法從帳單上取得 :::success 💡tip. 假設模型裡有個變數Z與輸入X有關,表示成$f(X)=Z$,而模型的輸出Y也與Z有關,表示成$g(Z)=Y$,這個時候我們就稱Z為**潛在變數**。此時整個模型可以表示成$Y=g(f(X))$。(我們**不會在裡面看到Z**,或是可以想成現代控制裡的**狀態變數**) ::: - **根據功能性做分類** - **解釋變數 (expalnatory variable):** 即自變數 (independent variable) - **目標變數 (objective variable):** 即應變數 (depedent variable) --- ## 🚩理解導向建模 :::warning > <span style='color:black;'>假如一個模型能夠貼合資料,那麼這個數學模型必定是與系統生成資料的規則相符合的,那麼我們**只要研究這個模型即可掌握該系統的規則**。</span> ::: 理解模型有4種思考方式: 1. 利用**數學結構**來理解目標系統 2. 利用推測出來的**參數值**來理解目標系統 3. 利用推測出來的**潛在變數**進行後續分析 4. 利用**修改參數後數學模型的變化**,來模擬目標系統的行為 ### ◾利用數學結構來理解系統 :::warning > <span style='color:black;'>只要模型可以詮釋資料,那麼在建立模型時所做假設的數學結構是正確的可能性很高。</span> ::: **範例:** 自然塞車現象 (在無車禍的情況下,車流密度高過一個臨界值時,就會引發塞車) 對於這個問題而言,我們可以利用最佳速度模型 ( optimal velocity model) 來描述每輛車的動作,並解決這個問題,該模型利用數學假設描述「駕駛根據車間的距離,來決定車輛是否要加(減)速」。 這表示我們可以藉由模型中假設的數學結構來重現目標系統的現象。因此我們可以指出「當塞車情況出現時,車速的變動會影響到後方車輛,進而導致塞車」 ### ◾利用參數值來理解系統 > 當模型參數的作用與涵義明確的時候,**參數值可以呈現資料的某個面向。**這些參數值就可以用來解釋我們的系統,或是當成其他分析所使用的資料。 > **範例:** 工作表現-睡眠時間的關係 假設工作表現與睡眠時間長短為線性關係,以$Y=aX+b$ 表示,其中: Y為工作表現 X為犧牲的睡眠時間 (以一般人需要8小時的睡眠時間為前提) 職員A的工作睡眠曲線為: $Y=-3.2X+15$ 職員B的工作睡眠曲線為: $Y=-1.7X+12$ **由參數值我們可以知道,睡眠時間對職員A引響比對職員B還大** (睡眠時間少一點,職員A的工作表現會比職員B的工作表現下滑還來的大) ### ◾先利用潛在變數再進行分析 :::warning > <span style='color:black'>利用潛在變數來做資料轉換,再進行後續的資料分析。 **簡單來說,我們可以利用模型的潛在變數將複雜難以理解的資料透過模型轉成簡單易分析的資料來讓我們更好的理解系統。**</span> ::: - 解釋甚麼是**有潛在變數的模型 -混合模型 (mixture model)** 是一種機率模型,內含 K 個機率模組(子模型),每一個機率模組都含有一個數學結構 (機率分布,描述系統發生某個事件的機率)。我們可以藉由調整潛在變數 K 來決定要由哪個模組來生成資料。 :::success 💡tip. 因為我們可以藉由 K 來調整模型的狀態,並根據狀態來得到輸出,所以這種系統又稱為狀態空間模型 (state space model) 。 ::: **範例:** 大腦分析 大腦可以拆解成多個區域,每一個區域的訊號都由各自的變數組成。假設我們現在有10 個區域的活動時序資料,如果我們要直接分析該資料,那麼代表我們要同時考慮10 個實數變數之間的關係,這會是個複雜的問題。 如果使用混合模型來分析這個問題就相對簡單許多了,我們可以想像,大腦每個時刻都處於某幾種狀態,並根據狀態的機率分布來生成新的資料再進一步分析即可。假設大腦的活動有5種狀態,我們可以藉由現有的資料知道混合模型中這五種狀態的機率模型參數,這樣我們就只需看在哪一個時刻哪一個狀態的機率較大,便可以知道大腦在該時刻屬於哪個狀態。 **藉由這種方式,我們可以將高維度的資料(10 個區域的時序資料),轉成易分析的低維度資料 (5個狀態的離散類別資料)再去做更進一步的分析,進而了解系統。** ### ◾修改模型參數來模擬系統的行為 > 藉由虛擬參數值帶入數學模型當中,並模擬帶入之後的行為,藉此了解系統。 > 只要是可信度夠高的模型,便可以藉由**研究模型在帶入虛擬參數後表現的行為,來了解系統在現實中的運作機制**。 --- ## 🚩應用導向建模 :::warning > <span style='color:black'>使用數學模型所輸出的資料來做應用</span> ::: 應用方式主要分兩個方向: - **預測 (predcition):** 模型對**沒看過的輸入資料**,猜測資料對應的輸出。 (模型利用自身的經驗與規則,去對未知的資料輸出結果) - **迴歸 (regression):** 預測數值。 - **分類 (classifiaction):** 預測並給定資料類別。 - **生成 (generation):** 模型產生與在**建立模型時使用的資料**相似的資料。 (模型依照自己的經驗依樣畫葫蘆產出資料) ex. 生成模型學習如何生成資料並應用在影像處理上,或是自然語言處理 (natural language processing) 領域中 ## 🚩數學模型的限制與適用範圍 ### ◾對數學模型的誤解 一定要注意**數學模型不是萬能的**。我們只是藉由**觀察現有的資料,並找到一個數學模型來去盡量模擬目前看到系統某個面向的現象,並不是說這個模型可以完全替代系統**。 也就是說,**我們使用這個數學模型是因為他是目前最適合達成目標 (幫助理解系統或達成某個功能) 的工具**,並不是他是「正確的」,一旦出現比他更合適的模型可以更好的描述系統,那麼現在的模型就會被替代。 **所以要記得,數學模型只是在符合假設的前提下來幫助我們解決系統某個面向的問題 (理解機制或某些應用性目標),他是會因我們要解決問題的面向以及不同假設而有所不同。重點是我們要利用模型達成甚麼目的,所以未先設定目標的數學模型是不會有貢獻的。** ### ◾好的模型也不一定永遠正確 假如我們已經設定好目標,且建立起一個模型的時候,在應用前還需要注意一點,那就是**在說明或應用時的情況,需要與在建立模型時資料的環境是相同的。** 換句話說,我們在**建立模型時會以資料所處的環境(即是系統甚麼樣的環境所生成的資料)作為建立模型的假設**,所以如果在應用時不符合假設的話,那麼這個模型的可信力就不高了。 ex. 以上面所提到自然塞車現象為例,我們是假設在無車禍發生的情況下,建立模型說明每輛車應該保持怎樣的車距與速度,來描述發生塞車的原因,但如果將這套模型用到有發生車禍的情況下來說明發生塞車的原因,那就是一件很搞笑的事情了,因為這個模型根本就不能很好解釋在車禍事件發生的情況下塞車的原因。 因此,我們在使用數學模型的時候,應該要針對模型適用的範圍以及面對風險的強健性進行評估,來判斷是否要使用這個模型。 :::success 💡tip. 強健性 (Robustness, 魯邦性): 指的是目標在受到干擾的情況下,是否依然可以很好的執行它的功能。 (簡單來說就是目標的抗干擾或抗壓能力) ::: ex. 如果電腦軟體在輸入錯誤、磁碟故障、網路過載或有意攻擊情況下,依然不會當機或崩潰,那我們就會說這個軟體的強健性高,是個好的軟體。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up