嶺回歸演算法

2021-10-01 15:00:16 字數 1051 閱讀 7655

回歸演算法的本質上就是為了解決乙個線性方程:

ax = b

標準估計方法是普通的最小二法的線性回歸,然而如果x是乙個病態的矩陣,在這種情況下使用普通最小二法估計會導致過擬合或者欠擬合的情況。此外,嶺回歸還可以處理矩陣陣列的多重共線性問題。

通常最小二乘法尋求的是最小花平方殘差的綜合,公式:

在嶺回歸中,在這種最小化中加入正則化項:

其中г是tikhonov matrix矩陣,在許多情況下,這個矩陣被選為單位矩陣的倍數,г=αi(注意:此處考慮的是具有較小範數的解決方案,不是較小係數,這裡的係數指的是「回歸係數」)

1)嶺回歸與ols的關係:

由於嶺回歸與ols相差無幾,這裡就不在詳細贅述了,直接上**。

#實現嶺回歸的函式

def ridge_regression(array_x,array_y,lambda_1):

#建立設計矩陣

x = np.column_stack((np.ones(array_x[0]),array_x))

#計算上面公式中a.ta+lambda單位矩陣i

alpha_vector = np.dot(x.t,x)+lambda_1np.identity(x.shape[0])

#行列式判斷a.ta是否可逆

if np.abs(linalg.det(alpha_vector))-0.0 < 10*-14:

#如果不可逆,直接結束程式

return

#如果可逆,計算回歸係數

alpha = np.dot(alpha_vector,np.dot(x.t,array_y))

#將得到的截距項和回歸係數返回

return alpha

#計算回歸係數,有x_train,x_test,y_train,y_test資料集

ridge_data = ridge_regression(x_train,y_train,0.1)

#**(此處ridge_data[0]是截距項,ridge_data[1]是回歸係數)

pre_data = ridge_data[0] + ridge_data[1]*x_test

嶺回歸 lasso回歸

嶺回歸 ridge regression 和lasso least absolute shrinkage and selection operator 都是ols的改進,知乎上有關於三者異同的詳細討論 關於lasso 這裡記錄一下最近的學習心得。嶺回歸的含義 嶺回歸的權值計算公式中有單位方陣i,就像...

核心嶺回歸

kernel ridge regression krr 核心嶺回歸 它所學習到的在空間中不同的線性函式是由不同的核心和資料所導致的。對於非線性的核心,它與原始空間中的非線性函式相對應。由kernelridge學習的模型的形式與支援向量回歸 svr 是一樣的。但是他們使用不同的損失函式 核心嶺回歸 k...

R 嶺回歸 lasso回歸

1.嶺回歸 嶺回歸 ridge regression,tikhonov regularization 實際上算是最小二乘法 ols 的改良版。最小二乘法中使用的是無偏估計回歸,而嶺回歸使用的是 有偏估計回歸 通過損失部分資訊 減低精度得到的回歸係數,但是這樣跟符合實際情況。因為ols有四個基本假設 ...