1. 程式人生 > >最小二乘迴歸,嶺迴歸,Lasso迴歸,彈性網路

最小二乘迴歸,嶺迴歸,Lasso迴歸,彈性網路

普通最小二乘法

理論:

 

損失函式:

 

權重計算:

 

1、對於普通最小二乘的係數估計問題,其依賴於模型各項的相互獨立性。

2、當各項是相關的,且設計矩陣 X的各列近似線性相關,那麼,設計矩陣會趨向於奇異矩陣,這會導致最小二乘估計對於隨機誤差非常敏感,產生很大的方差。

例如,在沒有實驗設計的情況下收集到的資料,這種多重共線性(multicollinearity)的情況可能真的會出現。

使用:

from sklearn import datasets, linear_model

regr = linear_model.LinearRegression()

reg.fit(X_train, y_train)

嶺迴歸

理論:

損失函式:

 

 

其中阿爾法大於0,它的值越大,收縮量越大,這樣係數對公線性的魯棒性也更強

當X矩陣不存在廣義逆(即奇異性),最小二乘法將不再適用。可以使用嶺迴歸

 

X矩陣不存在廣義逆(即奇異性)的情況:

1)X本身存線上性相關關係(即多重共線性),即非滿秩矩陣。

當取樣值誤差造成本身線性相關的樣本矩陣仍然可以求出逆陣時,此時的逆陣非常不穩定,所求的解也沒有什麼意義。

2)當變數比樣本多,即p>n時.

 

嶺跡圖:

嶺跡圖作用:

1)觀察λ較佳取值;

2)觀察變數是否有多重共線性;

在λ很小時,W很大,且不穩定,當λ增大到一定程度時,W係數迅速縮小,趨於穩定。

λ的選擇:一般通過觀察,選取喇叭口附近的值

 

嶺引數的一般選擇原則

選擇λ值,使到

1)各回歸係數的嶺估計基本穩定;

2)用最小二乘估計時符號不合理的迴歸係數,其嶺估計的符號變得合理;

3)迴歸係數沒有不合乎實際意義的值;

4)殘差平方和增大不太多。 一般λ越大,係數β會出現穩定的假象,但是殘差平方和也會更大

 

嶺迴歸選擇變數的原則(僅供參考)

1)在嶺迴歸中設計矩陣X已經中心化和標準化了,這樣可以直接比較標準化嶺迴歸係數的大小。可以剔除掉標準化嶺迴歸係數比較穩定且值很小的自變數。

2)隨著λ的增加,迴歸係數不穩定,震動趨於零的自變數也可以剔除。

3)如果依照上述去掉變數的原則,有若干個迴歸係數不穩定,究竟去掉幾個,去掉哪幾個,這無一般原則可循,這需根據去掉某個變數後重新進行嶺迴歸分析的效果來確定。

 

使用:

import numpy as np

import matplotlib.pyplot as plt

from sklearn import linear_model

 

# X is the 10x10 Hilbert matrix

X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])

y = np.ones(10)

# #############################################################################

# Compute paths

n_alphas = 200

alphas = np.logspace(-10, -2, n_alphas)

coefs = []

for a in alphas:

    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)

    ridge.fit(X, y)

    coefs.append(ridge.coef_)

# #############################################################################

# Display results

ax = plt.gca()

ax.plot(alphas, coefs)

 

 

Lasso迴歸

理論:

維數災難:

何謂高維資料?高維資料指資料的維度很高,甚至遠大於樣本量的個數。高維資料的明顯的表現是:在空間中資料是非常稀疏的,與空間的維數相比樣本量總是顯得非常少。

在分析高維資料過程中碰到最大的問題就是維數的膨脹,也就是通常所說的“維數災難”問題。研究表明,隨著維數的增長,分析所需的空間樣本數會呈指數增長。

如下所示,當資料空間維度由1增加為3,最明顯的變化是其所需樣本增加;換言之,當樣本量確定時,樣本密度將會降低,從而樣本呈稀疏狀態。假設樣本量n=12,單個維度寬度為3,那在一維空間下,樣本密度為12/3=4,在二維空間下,樣本分佈空間大小為3*3,則樣本密度為12/9=1.33,在三維空間下樣本密度為12/27=0.44。

設想一下,當資料空間為更高維時,X=[x1x1,x2x2,….,xnxn]會怎麼樣?

1、需要更多的樣本,樣本隨著資料維度的增加呈指數型增長;

2、資料變得更稀疏,導致資料災難;

3、在高維資料空間,預測將變得不再容易;

4、導致模型過擬合。

 

資料降維:

對於高維資料,維數災難所帶來的過擬合問題,其解決思路是:1)增加樣本量;2)減少樣本特徵,而對於現實情況,會存在所能獲取到的樣本資料量有限的情況,甚至遠小於資料維度,即:d>>n。如證券市場交易資料、多媒體圖形影象視訊資料、航天航空採集資料、生物特徵資料等。

主成分分析作為一種資料降維方法,其出發點是通過整合原本的單一變數來得到一組新的綜合變數,綜合變數所代表的意義豐富且變數間互不相關,綜合變數包含了原變數大部分的資訊,這些綜合變數稱為主成分。主成分分析是在保留所有原變數的基礎上,通過原變數的線性組合得到主成分,選取少數主成分就可保留原變數的絕大部分資訊,這樣就可用這幾個主成分來代替原變數,從而達到降維的目的。

 

但是,主成分分析法只適用於資料空間維度小於樣本量的情況,當資料空間維度很高時,將不再適用。

 

Lasso是另一種資料降維方法,該方法不僅適用於線性情況,也適用於非線性情況。Lasso是基於懲罰方法對樣本資料進行變數選擇,通過對原本的係數進行壓縮,將原本很小的係數直接壓縮至0,從而將這部分系數所對應的變數視為非顯著性變數,將不顯著的變數直接捨棄。

 

目標函式:

 

 

 

1、Lasso 是估計稀疏係數的線性模型。

2、它在一些情況下是有用的,因為它傾向於使用具有較少引數值的情況,有效地減少給定解決方案所依賴變數的數量。 因此,Lasso 及其變體是壓縮感知領域的基礎。 在一定條件下,它可以恢復一組非零權重的精確集

彈性網路

1、彈性網路 是一種使用 L1, L2 範數作為先驗正則項訓練的線性迴歸模型。

2、這種組合允許學習到一個只有少量引數是非零稀疏的模型,就像 Lasso 一樣,但是它仍然保持 一些像 Ridge 的正則性質。我們可利用 l1_ratio 引數控制 L1 和 L2 的凸組合。

3、彈性網路在很多特徵互相聯絡的情況下是非常有用的。Lasso 很可能只隨機考慮這些特徵中的一個,而彈性網路更傾向於選擇兩個。

4、在實踐中,Lasso 和 Ridge 之間權衡的一個優勢是它允許在迴圈過程(Under rotate)中繼承 Ridge 的穩定性。

 

損失函式:

 

 

使用:

from sklearn.linear_model import ElasticNet

enet = ElasticNet(alpha=0.2, l1_ratio=0.7)    #alpha=α   l1_ratio=ρ