Numpy 多階迴歸線逼近法

Numpy 多階迴歸線逼近法

梯度下降是函數找極值的方法,如果應用在損失函數(迴歸線),就是在找極小值的參數。比如
一階迴歸線 : $(y=ax+b)$,找尋 a, b 的值
二階迴歸線 : $(y=ax^2+bx+c)$,找尋 a, b, c 的值

本篇使用動畫說明每一步驟的變化。

使用 numpy 

假設 一元 6 階方程式為 $(y=0.001x^6-0.1x^5-0.68x^4+10000x^2+2)$ 

計算一階迴歸線

一階迴歸線的方程式為 $(y=ax+b)$,使用 numpy 計算出來的結果為
$(a*x + b=-258285.54*x + 8838090.57)$

🔒 更多內容,請登入會員繼續閱讀。

立即登入

上述代碼執行後的結果如下

計算四階迴歸線

當 args=np.polyfit(x, y, 4) 作 4 階迴歸線時,迴歸線就愈接近實際值,列印的 args 值如下

[ 1.52290916e+01 -2.62626265e+03 1.31212114e+05 -1.92640644e+06
6.85425254e+06]

計算六階迴歸線

當 args=np.polyfit(x, y, 6) 作 6 階迴歸線時,迴歸線等於實際值。所得到的 args 值也幾乎等於方程式的每個參數。所以迴歸線就是使用每個點的值反推其原方程式。

[ 1.00000000e-03 -1.00000000e-01 -6.80000000e-01 -2.15229667e-11
1.00000000e+04 4.93033525e-10 2.00000004e+00]

計算八階迴歸線

args=np.polyfit(x, y, 8) 作 8 階迴歸線時,迴歸線也是等於實際值。但 args 多了二個 0 值。此時不但沒有提高精準度,反而耗時計算二個沒用的值,稱為 “過度擬合”。 

列印的參數如下

[ 3.51955078e-20 -1.32903585e-17 1.00000000e-03 -1.00000000e-01
-6.80000000e-01 -1.64237572e-10 1.00000000e+04 -6.90394067e-09
1.99999997e+00]

迴歸線或是PCA

損失函數的定義是 “實際值與預測值的差平方總合”。預測值如果是迴歸線產生出來的,那就是在計算迴歸線。但如果預測值是由 PCA 產生的,那就是計算 PCA 線。

實際與預測的最小值,不是只有這二種,還有其它的,以後還會有更多的理論。

一元一階梯度下降

損失函數偏微分的說明,一階迴歸線的公式是 $(y=ax+b)$,
對 a 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^1=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i)$
對 b 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^0=2\sum_{i=1}^{n}(\tilde{y_i}-y_i))$

如果要儲存動畫,需先安裝套件

🔒 更多內容,請登入會員繼續閱讀。

立即登入

Tensorflow版本

🔒 更多內容,請登入會員繼續閱讀。

立即登入

一元四階梯度下降

損失函數偏微分的說明,四階迴歸線的公式是 $(y=ax^4+bx^3+cx^2+dx+e)$,
對 a 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^4)$
對 b 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^3)$
對 c 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^2)$
對 d 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^3)$
對 e 的偏微分是 $(=2\sum_{i=1}^{n}(\tilde{y_i}-y_i)x_i^0)$
梯度下降逼近的代碼如下。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

Tensorflow 版

🔒 更多內容,請登入會員繼續閱讀。

立即登入

新版程式

🔒 更多內容,請登入會員繼續閱讀。

立即登入

二元損失函數

二元方程式 $(z=\frac{z=0.006x^6-0.005y^6+0.5x^5-0.1y^5+0.005x^4+0.003y^4}{10000000})$

二元一階迴歸(面)線為 $(y=ax+by+c)$,

下圖的迴歸面, a = 0.9,b =1.8,c = 200,怎麼算出來的? 那是本人瞎掰的,最終還是要使用梯度下降法來求。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

地型圖

地型圖也可以用 2 元 n 階方程式來表示,但方程式非常猙獰且複雜,所以只好使用這些點產生一個回歸面,再由 (x, y) 算出這個迴歸面的值來預估。展示圖片的代碼如下

🔒 更多內容,請登入會員繼續閱讀。

立即登入

多元迴歸線

其實並沒有迴歸面這個名詞,我們統一稱為 “多元迴歸線”。多元迴歸線的公式為

$(f(x_1, x_2, x_3, x_4…)=ax_1+bx_2+cx_3+dx_4+……)$

todo

後續工作

1. a, b, c,…. 的初始值該如何定才能加速收斂。
2. 如何加速梯度下降。
3. 學習率該如何定。
4. 要訓練幾次(epochs)。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *