嶺回歸(ridge regression)
如果資料的特徵比樣本點還多,資料特徵n,樣本個數m,如果n>m,則計算(xtx)的逆矩陣時會出錯,因為(xtx)不是滿秩矩陣,所以不可逆。(注:xt表示x的轉置矩陣)
嶺回歸是有偏估計
嶺回歸代價函式這裡就不貼了
選取λ值使得:
1.各回歸係數的嶺估計基本穩定;
2.殘差平方和增大不多。
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
# 匯入資料
data = np.genfromtxt("c:\\ml\\chapter-1\\longley.csv",delimiter=",") # 這種方法只能讀取數字,不能讀取字元,字元會變成nan
print(data)
# 切分資料
x_data = data[1:,2:]
y_data = data[1:,1]
print(x_data)
print(y_data)
# 建立模型
# 生成50個值
alphas_to_test = np.linspace(0.001,1) # 預設是50,均勻變大
# 建立模型,儲存誤差值
model = linear_model.ridgecv(alphas=alphas_to_test,store_cv_values=true)
model.fit(x_data,y_data)
# 嶺係數
print(model.alpha_)
# loss值
print(model.cv_values_.shape)
# 畫圖
# 嶺係數跟loss值的關係
plt.plot(alphas_to_test,model.cv_values_.mean(axis=0)) # axis=0代表方向
# 獲取的嶺系數值的位置
plt.plot(model.alpha_,min(model.cv_values_.mean(axis=0)),'ro')
plt.show()
print(model.predict(x_data[2,np.newaxis])) # x_data的帶三行資料,是一維的,np.newaxis將其變為二維的,得到**結果
sklearn嶺回歸應用
前言 前面博文關於線性回歸模型我們可以用梯度下降法或者標準方程法進行訓練,但是兩種方法各有優缺點。特別是標準方程法乙個比較重要的缺點是資料存在不可逆現象則無法訓練出結果,而嶺回歸就是解決標準方程法這一缺點出現的,嶺回歸模型是由帶正則化的代價函式推導得到,他避免資料不可逆的現象,進而得到近似最優解。關...
sklearn學習筆記之嶺回歸
嶺回歸是一種專用於共線性資料分析的有偏估計回歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分資訊 降低精度為代價獲得回歸係數更為符合實際 更可靠的回歸方法,對病態資料的擬合要強於最小二乘法。乙個簡單的例子 from sklearn.linear model impor...
嶺回歸與sklearn模型的儲存與載入
帶有正則化的線性回歸 嶺回歸api sklearn.linear model.ridge 語法 sklearn.linear model.ridge alpha 1.0 具有l2正則化的線性最小二乘法 alpha 正則化力度 coef 回歸係數 正則化程度的變化,對結果的影響 正則化力度越大,權重越...