天天看點

機器學習系列——嶺回歸

文章目錄

  • ​​理論​​
  • ​​正規方程​​
  • ​​梯度下降法​​
  • ​​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]      

梯度下降法

繼續閱讀