1. 程式人生 > >線性迴歸預測數值型資料

線性迴歸預測數值型資料

所謂線性迴歸(linear regression),就是根據訓練資料找到一組引數w,利用 y = w*s 對新資料進行預測。

通常使用誤差函式為平方誤差:

\sum^m_{i=1} (y_i - x^T_i w) ^2

使該誤差最小化,求導令其導數為零求得係數w,利用矩陣可以表示為:

w = (X^TX)^{-1}X^Ty

該過程成為普通最小二乘法(ordinary least squares,OLS)
 

由於OLS只能找到資料最佳擬合直線,所以應用有限。引入區域性加權線性迴歸(Locally Weighted Linear Regression, LWLR)

給每個點賦予權重,誤差函式為:\sum^m_{i=1}W^i(y_i - x^T_iw)^2,求解w得:w=(X_TWX)^{-1}X^TWy

W即使權重矩陣,是一個只含對角元素的方陣(其餘為0),根據預測點與附近的點的距離分佈,通常使用高斯核函式:

w(i, i) = exp(\frac{|x^{(i)}-x|}{-2k^2})

但是該方法計算量大

為了防止過擬合,也為了縮減係數,可以使用嶺迴歸、lasso、前向逐步迴歸方法。

嶺迴歸也就是說線上性迴歸求解w時加入λI懲罰項,即w = (X^TX+$\lambda$I)^{-1}X^Ty

根據不同λ可以得到多個係數w,可以交叉驗證最優解。

嶺迴歸這個名字只是因為λI這個懲罰項是個對角矩陣,看起來像個分界嶺。

最小二乘法增加約束 \sum^n_{k=1}w^2_k \leq $\lambda$ 時可以得到嶺迴歸一樣的公式,而lasso只在次基礎上更改了限定:\sum^n_{k=1}|w_k| \leq $\lambda$

但是求解則需要二次規劃演算法,增加了計算複雜度。

前向逐步方法是一種貪心演算法,即每一步都儘可能減少誤差。

在迭代中,對於每個特徵,都採取增加或減小一個很小得數值來改變w,如果誤差小於當前最小誤差,則前進。

這裡得很小得數值和迭代次數都是引數。