發表文章

線性和非線性的直覺解釋

線性和非線性現象的區別在科學和工程中無處不在。但這究竟意味著什麼呢? 假設不用付出很大的努力,你就可以以每小時20英里的速度投擲一個網球。現在假設你騎著自行車以每小時10英里的速度向前扔網球。球將以每小時30英里的速度向前行進。線性,基本上是這樣的想法,結合兩個輸入-如你的手臂的速度和自行車的速度-將產生的總和,他們各自的輸出-速度的球。 現在假設,不是扔網球,而是扔紙質飛機。根據飛機的設計,它可能直接向前航行,或者它可能會旋轉回路。一些紙質飛機似乎表現得更不穩定,你扔得越重:自行車的附加速度可能使飛機幾乎不可能做任何可以預測的事情。這是因為紙飛機機翼上的氣流是非常非線性的。 如果自行車內置感測器和車載電腦,它可以在一秒鐘內計算網球的速度。但它永遠不可能及時計算紙飛機機翼上的所有氣流來做任何有用的事情。Pablo Parrilo說: “我認為這是一個合理的說法,我們主要理解線性現象,”[他是MIT的工程資訊和決策系統實驗室的教授]。 為了使線性和非線性之間的區別更精確,回憶一下數學方程可以被認為是一個函數——把輸入映射到輸出的東西。方程y= x,相當於一個函數,它的輸入為x的值,作為它的輸出為y的值。y=x^2也是如此。 方程y= x是線性的,因為加在一起的輸入產生它們各自的輸出的總和:1=1, 2=2,而1=2=1 2。但y=x^2是不成立的:如果x是1,y是1;如果x是2,y是4;但是如果x是3,y不是5。 這個例子說明了“線性”這個詞的由來:y= x的圖是一條直線,而y=x^2的圖是曲線。但是線性的基本定義適用於更複雜的方程,如工程中用來描述動態系統的微分方程。 雖然線性函數很容易定義,但“非線性”一詞佔據了一切。Parrilo說:“有一句名言——我不確定是誰先說的——非線性系統理論就像非大象理論一樣。”“建立非線性系統的理論是不可能的,因為任意的事物都能滿足這個定義。”因為線性方程比非線性方程更容易求解,許多學科的研究都致力於尋找非線性現象的線性近似。 來源: http://news.mit.edu/2010/explained-linear-0226

Levenberg-Marquardt、Gradient Descent、與 Gauss-Newton 方法

圖片
最小二乘問題是在將參數化函數擬合到一組實測資料點時,通過最小化資料點與函數之間誤差的平方和而產生的最小二乘問題。 如果擬合函數在參數中不是線性的,則最小二乘問題是非線性的。非線性最小二乘方法通過對參數值的一系列更新,反覆運算地減小了函數與被測資料點之間誤差的平方和。 當要對非線性最小二乘問題求解時,通常我們使用 Gradient Descent 或 Newton Gauss 方法求解。而 Levenberg-Marquardt  方法也是求解非線性最小二乘問題的一種標準數值方法 .   Levenberg-Marquardt  曲線擬合方法是兩種極小化方法的結合:梯度下降法和高斯 - 牛頓法。 梯度下降法:  在梯度下降法中,通過對最陡下降方向的參數進行更新,減小了平方誤差之和。 Gauss-Newton 方法:  在 Gauss-Newton 方法中,假設最小二乘函數為局部二次函數,求二次函數的最小值,從而減小平方誤差之和。 Note:  1. 在實作時,W 一般視為 identity matrix,所以 h 就等於 Jacobian 的 inverse 乘於 (y-yhat),也就是 residuals。 2. 要求 Jacobian,在 Python 中,可以利用 sympy 套件進行  symbolic computing。先用 sympy 中的 symplify 將字串公式符號化,再利用 diff 將符號化的公式進行微分,將產生微分後的符號公式以 sub 代入對應目前的參數值並以 lambdify 將代入後的公式轉成可傳入向量的變數函數,呼叫前面函數後產生 Jacobian matrix 再以 numpy.linalg.pinv 產生其廣義反矩陣後,乘上 residuals 矩陣,即產生新的 h。 3. residuals = yhat - y ,其中 yhat 也是用微分前的符號公式,以 以 sub 代入對應目前的參數值並以 lambdify 將代入後的公式轉成可傳入向量的變數函數產生 yhat 值 Levenberg-Marquardt 方法: 當參數遠離最優值時, Levenb...

用 MAPE 來作為預測誤差的量測方法,會對預測值有何影響?

圖片
MAPE 通常用來做為度量預測誤差的方法。這種度量預測誤差方法有個不常被注意到的問題。就是如果以 MAPE 作為模型的預測表現準則,則當我們找到有最低預測誤差的模型時,此模型通常是那種會產生較低預測值的模型。因為產生較低預測值的模型會使 MAPE 傾向較小。用下圖來看 與真實的需求比起來,以最小化 MAPE 值的模型產生的需求預測值偏低。相較而言,以 MAD/Mean 來作為度量預測誤差方法的模型產生的需求預測值較為接近期望值。

如何進行因果推論

X 是造成 Y 的原因嗎? 如何進行 X 是 Y 的因果推論呢? 要說 X 與 Y 有因果關係, 這可不能隨便說說,X 與 Y 之間必須至少滿足下列 3 個條件: 1. X 與 Y 間有共變異性 2. 在時間上 X 的改變必須在 Y 改變之前 3. 只剩下 X,所有其它可以解釋的原因都已經被排除了 那就可以推論是 X 造成 Y 的原因了。

學習 Kalman filter 入門好文推薦

學習 Kalman filter 希望您不錯過下面兩篇文章 Kalman filter Interview: https://towardsdatascience.com/kalman-filter-interview-bdc39f3e6cf3 How a Kalman filter works, in pictures https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

ARIMA? 它憑什麼!

您可能知道如何使用 ARIMA 去配適一個時間序列或使用它去預測。但不知道您是否想過為何我們假設一些隨機時間序列可以適當的用 ARIMA 來建模? Wold 分解可以提供一些理論上的理由。此分解定理斷言任何協方差平穩過程  Yt可寫為Yt = Xt + Zt,其中 Zt  是確定性過程,並且 Xt 可寫為不相關的 N(0,σ2)隨機振盪的移動平均。  由於我們的目的,確定性部分 Zt 可以單獨處理。 在考慮 Xt 時,如果ψi係數快速衰減到0,那麼在q項之後截斷無限和可能是合適的。 在這種情況下,我們將有一個MA(q)模型。 即使我們不能安全截斷無窮級數,我們也希望找到一個ARψ(p,q)模型,其ψ權重與Xt的權重非常接近。 許多時間序列都是非平穩的。 ARIMA模型支持的唯一一種非平穩性是d度的簡單差分。 在實踐中,一個或兩個差分水平通常足以將非平穩時間序列減少到明顯的平穩性。

時間序列概觀 - 它可以預測一天中的股價變化嗎?

時間序列分析的目的一般有兩面向: 1. 探究生成觀測到的序列的隨機機制或生成此序列的模型 2. 用來預測。此預測除了基於觀測到的序列,也許也會考慮到其他相關的序列或因素 對時間序列中的每一個觀測值有一特別的性質 - 通常我們不會假設它們來自同一個母體,如它們取自有不相同的均值的母體。 而所以,通常時間序列分析的要點在於研究具有相關性的模型。例如,趨勢性、季節性、遞延性均是前後相關的性質。 另外,常常會被問到你用的時間序列模型可以用來預測每天的股票市場嗎? 我用的時間序列模型通常是指數平滑、或 ARIMA 這一類的,這些模型通常較適合那些有趨勢或季節性的數據。每日股票市場數據是典型沒有趨勢也沒有季節性。也許你會說有啊 ?! 股票市場有趨勢啊, 那用 Holt 或 Winter 模型可以嗎? 事實上是不行的。因為在股票市場數據出現的趨勢,簡單只是因為他們是隨機漫步的局部效果。 Holt 方法會給出無用的預測。 做事情有時候必須見樹亦見林。所謂"見"就是看見,有意的看見、心中有此意象有此空間才有會有觀點的著落。