Regression

Regression

「迴歸」就是找一個函數,盡量符合手邊的一堆函數點。此函數稱作「迴歸函數」。

當函數點不精確,則不適合內插,適合迴歸。

方便起見,以下用座標表示函數點。

Error(Loss)

強硬地用函數符合函數點,就會有「誤差」。

單一函數點的誤差,有許多種衡量方式,一般是用函數點與函數的差的平方(平方誤差),其他還有函數點與函數的差的絕對值(絕對值誤差)。

最佳化

人腦考慮的「最符合」,放到了電腦就被設定成「誤差總和最小」。把誤差總和寫成一個函數,迴歸問題就變成了最佳化問題!

運用最佳化演算法,求得誤差最小值,求得迴歸函數的係數。

迴歸函數 f(x) = ax² + bx + c
函數點 (2,3) ... (7,8)
代數符號 (x₁,y₁) ... (xN,yN)

每個函數點的平方誤差
(3 - f(2))² ... (8 - f(7))²
(3 - (a⋅2² + b⋅2 + c))² ... (8 - (a⋅7² + b⋅7 + c))²
代數符號
(y₁ - f(x₁))² ... (yN - f(xN))²

所有函數點的誤差總和
(3 - f(2))² + ... + (8 - f(7))²
代數符號
e(a,b,c) = (y₁ - f(x₁))² + ... + (yN - f(xN))²
         = ∑ (yᵢ - f(xᵢ))²
         = ∑ (yᵢ - ŷᵢ)²
         = ∑ ‖yᵢ - ŷᵢ‖²

令e(a,b,c)越小越好。
選定一個最佳化演算法,求出e(a,b,c)的最小值,求出此時abc的數值,
就得到迴歸函數f(x)。

Polynomial Regression

Linear Regression

「一次迴歸」。迴歸函數採用一次函數。誤差採用平方誤差。

一個變數,迴歸函數是直線。兩個變數,迴歸函數是平面。

一次迴歸性質特殊,不需要最佳化演算法。寫成一次方程組,套用「Normal Equation」,求得迴歸函數的係數。

迴歸函數 f(x) = ax + b
函數點 (2,3) (5,6) (7,8)
[ 2  1 ] [ a ]   [ 3 ]
[ 5  1 ] [ b ] = [ 6 ]
[ 7  1 ]         [ 8 ]

迴歸函數 f(x,y) = ax + by + c  
函數點 (2,3,4) (5,6,7) (7,8,9) (3,3,3) (4,4,4)
[ 2  3  1 ]         [ 4 ]
[ 5  6  1 ] [ a ]   [ 7 ]
[ 7  8  1 ] [ b ] = [ 9 ]
[ 3  3  1 ] [ c ]   [ 3 ]
[ 4  4  1 ]         [ 4 ]

一次迴歸可以寫成最佳化形式。數學符號重複使用了,請小心。

迴歸函數 f(x) = ax + b
函數點 (2,3) (5,6) (7,8)
所有函數點的誤差總和 ‖Ax - b‖²
一次迴歸化作最佳化問題 min ‖Ax - b‖²

    [ 2  1 ]       [ a ]       [ 3 ]
A = [ 5  1 ]   x = [ b ]   b = [ 6 ]
    [ 7  1 ]                   [ 8 ]

一次迴歸有公式解。

http://mathworld.wolfram.com/LeastSquaresFitting.html

一次迴歸可以找到輸入與輸出的大致關係:成正比、成反比。首項係數a的正負,代表正反比。

Polynomial Regression

「多項式迴歸」。迴歸函數採用多項式函數。誤差採用平方誤差。

演算法仍是Normal Equation。

迴歸函數 f(x) = ax + b
函數點 (2,3) (5,6) (7,8)
[ 2  1 ] [ a ]   [ 3 ]
[ 5  1 ] [ b ] = [ 6 ]
[ 7  1 ]         [ 8 ]

迴歸函數 f(x) = ax² + bx + c
函數點 (2,3) (5,6) (7,8)
[  4  2  1 ] [ a ]   [ 3 ]
[ 25  5  1 ] [ b ] = [ 6 ]
[ 49  7  1 ] [ c ]   [ 8 ]

迴歸函數 f(x,y) = ax² + bxy + cy² + dx + ey + f
函數點 (2,3,4) (5,6,7) (7,8,9)
                         [ a ]
[ 2²  2×3  3²  2  3  1 ] [ b ]   [ 4 ]
[ 5²  5×6  6²  5  6  1 ] [ c ] = [ 7 ]
[ 7²  7×8  8²  7  8  1 ] [ d ]   [ 9 ]
                         [ e ]
                         [ f ]

Underfitting / Overfitting

用單純的函數去符合複雜的函數點,顯然符合的不太完美。

用複雜的函數去符合單純的函數點,顯然事情被搞複雜了。

如果我們不清楚函數點的性質,也就無法抉擇函數了。那麼,該如何了解函數點的性質呢?這是心靈科學,就此打住。

Moving Regression

Moving Regression

「移動迴歸」。鄰近函數點的加權平均值,進行迴歸。

https://en.wikipedia.org/wiki/Moving_average

https://en.wikipedia.org/wiki/Moving_least_squares

https://en.wikipedia.org/wiki/Local_regression

Isotonic Regression

Isotonic Regression

「保序迴歸」。迴歸函數採用遞增函數。

http://stackoverflow.com/questions/10460861/

採用絕對值誤差,時間複雜度O(NlogN)。

採用平方誤差,時間複雜度O(N)。

迴歸函數的前後項差距在一定範圍內

http://www.careercup.com/question?id=5207197178920960