1. 程式人生 > >多項式迴歸的matlab實現

多項式迴歸的matlab實現

一次函式的線性迴歸

首先我們回顧一下當迴歸函式為一次函式的情況

存在訓練樣本矩陣 X ,該矩陣大小為m*n ,其中m為樣本數量,n為特徵數量

此時迴歸方程為

                                                                             h_{\theta }\left ( x \right )=\theta _{0}+\theta_{1}x_{1}+..+\theta_{n}x_{n}=X\theta

其中\theta為係數向量

此時代價函式為

                                                                            J(\theta)=\frac{1}{2}(X\theta -Y)^{T}(X\theta -Y)

當代價函式取得最小值時,\theta為最優解

J(\theta)進行求導得到

                                                                               \frac{\partial }{\partial \theta }J(\theta)=X^{T}(X\theta-Y)

批量梯度下降法

                                                                                 \theta = \theta-\alpha\frac{\partial }{\partial \theta }J(\theta)

其中\alpha為步長係數,\alpha\frac{\partial }{\partial \theta }J(\theta)為步長,不斷迭代上式,當步長變化小於某個值時,認為得到代價函式的區域性最小值。

數學上,梯度方向是函式值下降最為劇烈的方向。那麼,沿著 J(θ) 的梯度方向走,我們就能接近其最小值,或者極小值,從而接近更高的預測精度。

多項式的線性迴歸

此時迴歸方程為

                                               h_{\theta }\left ( x \right )=\theta _{0}+\theta_{1}x_{1}+..+\theta_{n}x_{n} +\theta_{11}x_{11}^{2}+\theta_{12}x_{12}^{2}+..+\theta_{1n}x_{1n}^{2}+...

代價函式

                                                                        J(\theta)=\frac{1}{2}\sum (h_{\theta}(x_{i})-y_{i})^2

此時我們可以通過遍歷矩陣來計算該代價函式的導數,但是會感覺到程式設計複雜

那麼可以像一次函式一樣去用矩陣表示代價函式嗎?

是可以的,我們只需要將x^n視作一個整體就可以了

在一次迴歸中,樣本矩陣 X為           [1,X]         其中 1 表示該列都為1

在多項式迴歸中,我們可以將 X 擴充套件為                 [1,X,X^2,X^3,...,X^n]

此時我們回到了一次迴歸的矩陣運算中

具體程式可參考