1、線性回歸
優點:結果易於理解,計算上不復雜。
缺點:對非線性的數據擬合不好。
適用數據:數值型、標稱型。
回歸的目的是預測數值型的目標值。最直接的辦法是依據輸入寫出一個目標值的計算公式;這就是回歸方程,其中的未知系數稱作回歸系數,求這些回歸系數的過程就是回歸。
線性回歸意味着可以將輸入項分別乘以一些常量,再將結果加起來得到輸出。
Y=XTw如何求w,常用方法就是找出使誤差最小的w。
平方誤差可以寫做:sum(yi-xiTw)2
用矩陣表示:(y-Xw)T(y-Xw),對w求導,得到XT(Y-Xw),令其等於0,求解出w如:w'=(XTX)-1XTy。該方法也稱作OLS(普通最小二乘法)。
模型效果可以通過計算預測值和真實值的相關系數來衡量,numpy庫的corrcoef(yEstimate,yActual)可以計算;相關性越高,模型效果越好。
代數求解:
第一:用所給樣本求出兩個相關變量的(算術)平均值:
x_=(x1+x2+x3+...+xn)/n
y_=(y1+y2+y3+...+yn)/n
第二:分別計算分子和分母:(兩個公式任選其一)
分子=(x1y1+x2y2+x3y3+...+xnyn)-nx_Y_
分母=(x1^2+x2^2+x3^2+...+xn^2)-n*x_^2
第三:計算b:b=分子/分母
python實現:
2、局部加權線性回歸
線性回歸的問題:可能出現欠擬合現象;原因:求的是具有最小均方誤差的無偏估計;解決:引入一些偏差。
LWLR算法:給待預測點附近的每個點賦予一定的權重,然后在這個子集上基於最小均方差來進行普通的回歸。
w'=(
X
T
WX)
-1
X
T
Wy,其中W是一個矩陣,用來給每個數據點賦予權重。
LWLR使用“核”來對附近的點賦予更高的權重。最常用的核是高斯核,其對應權重如下:
w(i,i)=exp(|x(i)-x|/(-2k2)),其中x(i)是預測點,k是唯一考慮的參數,決定了對附近點賦予多大的權重。
如果k取值較大,和標准回歸類似,可能出現欠擬合現象;若k取值較小,則可能出現過擬合現象。
局部線性回歸的問題:增加了計算量(因為其對每個點預測時都必須使用整個數據集)。
python實現:
3、嶺回歸
如果特征比樣本點還多,用前面的方法不可行,因為輸入數據矩陣不再是滿秩矩陣,求逆會出錯。
嶺回歸就是在矩陣XTX上加一個λI從而使其非奇異,回歸系數的計算公式變成:
w'=(
X
T
X+
λI)
-1
X
Ty
嶺回歸最先用於處理特征數多於樣本數的情況,現在也應用於在估計中加入偏差,從而得到更好的估計。
通過引入λ來限制了所有w之和,通過引入該懲罰項,能夠減少不重要的參數,該技術在統計學中也叫做縮減。
縮減方法可以去掉不重要的參數,因此能更好地理解數據。此外,與簡單線性回歸相比,縮減法能取得更好的預測效果。
λ非常小時,系數與普通回歸一樣;而λ非常大時,所有回歸系數縮減為0;可以在中間某處找到使得預測結果最好的λ值。
python實現:
4、lasso(另一個縮減方法)
在增加如下約束時,普通的最小二乘法回歸會得到與嶺回歸的一樣的公式。
sum(wk2)<=λ
lasso方法也對回歸系數做了限定,對應的約束條件如下:
sum(|wk|)<=λ
這個約束條件使用絕對值取代平方和。在λ足夠小的時候,一些系數會因此被迫縮減到0,這個特性可以幫助我們更好地理解數據。
缺點:計算復雜。
5、前向逐步回歸
效果與lasso方法差不多,但更加簡單,屬於一種貪心算法,即每一步都盡可能減少誤差。(一開始,所有權重設為1,然后每一步所做的決策是對某個權重增加或減少一個很小的值。)
python實現:
6、權衡偏差與方差
https://blog.csdn.net/qq_30490125/article/details/52401773