scikit learn廣義線性模型之嶺回歸

2021-08-11 17:51:53 字數 2520 閱讀 2947

嶺回歸(ridge regression)是一種專用於共線性資料分析的有偏估計,實質上就是一種改良的最小二乘法。我們知道,最小二乘法是通過優化

而嶺回歸則是通過優化

通過,上面兩個公式可以發現其實嶺回歸只是在平方差的後面加一項。其實,這就是我們所說的正則化,常見的正則化有l1正則化和l2正則化還有將兩種一起結合用。而這裡是屬於l2正則化,通過正則化可以防止訓練的模型過擬合。過擬合就是指,模型對於訓練資料有很好的判斷能力,而對於未知資料的**能力並不是很好,為什麼會這樣呢?因為,在訓練模型的過程中,有可能將訓練資料中的雜訊加入到模型中了。那這和最小二乘法又有什麼關係呢?在介紹最小二乘法的時候,有提到最小二乘法的方程組個數要多於未知數的個數,而且特徵之間不存在共線性。共線性就是指,如果輸入有多個x1、x2...,也許x1和x2之間的特徵是相似的。如果,遇到上面的問題應該怎麼處理呢?常用的方法有兩種,第一種通過人工判斷去掉共線性的特徵,也就是從x1和x2中去掉乙個(對於某些情況可能很難實現),第二種通過正則化的方式,來實現減少輸入引數(也稱為降維)。通過觀察兩個式子可以發現,其中α大於等於0,如果α=0時,就等價於最小二乘法。如果阿爾法大於0,下面式子中的權重必定會小於上面公式中的權重,當α到一定值的時候,權重會趨於0,從而達到去除共線性的引數。

1、alpha對權重的影響

下面程式展示的是乙個,不同的alpha值對權重的影響,一共有10個權重(沒有截距),所以最後可以看到10條曲線,可以發現當alpha的值趨近於0的時候,對權重的影響為0,也就退化成了最小二乘法。

import numpy as np

import matplotlib.pyplot as plt

from sklearn import linear_model

if __name__ == "__main__":

#建立乙個10*10的希爾伯特矩陣,其元素a(i,j)=1/(i+j-1),i,j分別為其行標和列標

#希爾伯特矩陣是乙個共線性的矩陣

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

#建立乙個全為1的10維的矩陣

y = np.ones(10)

n_alphas = 200

#建立乙個有200個alpha的列表,列表的開始值是-10,結束值是-2,步長是8/200

#列表中的元素都是10^(-10....)

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

#建立乙個權重列表

coefs =

#遍歷所有的alpha值

for a in alphas:

#建立模型,沒有截距

ridge = linear_model.ridge(alpha=a,fit_intercept=false)

#訓練模型

ridge.fit(x,y)

#將權重的值新增到列表中

#獲取座標

ax = plt.gca()

#根據alpha和權重的值繪圖

ax.plot(alphas,np.array(coefs))

#設定資料在座標軸上的顯示比例

ax.set_xscale("log")

#翻轉x軸

ax.set_xlim(ax.get_xlim()[::-1])

#設定x軸座標的標籤

plt.xlabel("alpha")

#設定y軸座標的標籤

plt.ylabel("weights")

#設定圖的標題

plt.title("ridge coefficients as a function of the regularization")

#設定資料在圖上的顯示

2、留一交叉驗證(從多個α中選擇乙個)

from sklearn import linear_model

if __name__ == "__main__":

#建立乙個嶺回歸模型,設定α的值

#α從0.1開始,到1.0結束,一共去10個α,每個α之間的間隔為1/10

clf = linear_model.ridgecv(alphas=[0.1,1.0,10.0])

#訓練模型

clf.fit([[0,0],[0,0],[1,1]],[0,.1,1])

#獲取模型選擇的α值

print(clf.alpha_) #0.1

線性回歸 scikit learn

線性回歸即是我們希望能通過學習來得到乙個各屬性線性組合的函式,函式的各項係數表明了該屬性對於最後結果的重要性,可以用以下公式表達 y x 1 x1 2x2 pxp b線性回歸試圖讓各個點到回歸直線上的距離和最小,即最小化均方誤差。可用以下公式描述 min x y 22 matplotlib inli...

廣義線性回歸

最小二乘法 least squares 線性回歸 代價函式 loss function損失函式,成本函式 代價函式為均方誤差,注意 優化方法 解方程的方法 一般為正規方程法,在特徵數量大的時候,正規方程計算會很緩慢,應該把優化方法替換為梯度下降。正規方程 閉式解 對正規方程的理解可閱讀 嶺回歸 代價...

廣義線性模型

廣義線性模型是線性模型的擴充套件,主要是對非正態因變數的分析 廣義線性擬合的核心是最大似然估計,而不是最小二乘 擬合模型如下 y 0 pj 1 jx j 其中,beta是係數,mu是優勢比的對數,beta係數是對優勢比的影響。通過擬合求得的就是 我們可以通過兩個例子看一下兩種變數 類別型 自變數x ...