多項式迴歸的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]

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

具體程序可參考

https://download.csdn.net/download/qq_32478489/10651951

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章