文章目錄
- 理論
- 正規方程
- 梯度下降法
- Python實作
- 正規方程
- 梯度下降法
理論
嶺回歸在最小二乘法的基礎上加上了一個懲罰項
損失函數:
正規方程
梯度下降法
一般形式:
重複以下步驟 直到收斂:
是控制模型複雜度的因子,可看做收縮率的大小。越大,收縮率越大,系數對于共線性的魯棒性更強
矩陣形式:
Python實作
正規方程
import numpy as np
# 準備資料
X = np.array([[1, 2], [3, 2], [1, 3], [2, 3], [3, 3], [3, 4]])
y = np.array([3.1, 5.1, 4.2, 5.2, 5.9, 6.8])
n_samples, n_features = X.shape
# # 給X添加一列1, 将y轉換成(n_samples, 1) 便于計算
X = np.concatenate((np.ones(n_samples).reshape((n_samples, 1)), X), axis=1)
y = y.reshape((n_samples, 1))
- **用正規方程求解theta**
```python
from numpy.linalg import pinv
alpha = 0.1
theta = pinv(X.T @ X + alpha) @ X.T @ y # A@B 等于 np.dot(A, B)
intercept = theta[0, 0] # 截距項
coef = theta[1:, 0] # 系數
func = intercept + coef[0]
print("截距項:%s" % intercept)
print("系數:%s" % coef)
截距項:0.06761565836301364
系數:[0.92597865 1.03843416]