文章目錄
- 線性回歸與梯度下降:理論與實踐
- 1. 引言
- 2. 回歸分析
- 2.1 什么是回歸?
- 2.2 線性回歸
- 2.3 損失函數
- 2.4 多參數回歸
- 3. 參數求解:最小二乘法
- 3.1 最小二乘法 MSE
- 3.2 最小二乘法的優缺點
- 優點:
- 缺點:
- 4. 梯度下降
- 4.1 梯度下降概念
- 4.2 梯度下降步驟
- 4.3 梯度下降公式
- 4.4 學習率
- 4.5 自己實現梯度下降
- 4.6 梯度下降的變種
- BGD(批量梯度下降)
- SGD(隨機梯度下降)
- MBGD(小批量梯度下降)
- 4.7 梯度下降優化
- 5. 使用場景
- 6. 優缺點
- 6.1 線性回歸
- 優點:
- 缺點:
- 6.2 梯度下降
- 優點:
- 缺點:
- 7. 總結
線性回歸與梯度下降:理論與實踐
1. 引言
回歸分析是一種常用的統計方法,用于建立一個因變量與一個或多個自變量之間的關系模型。本文將重點討論線性回歸和梯度下降,兩者是數據科學和機器學習中常見的基礎方法。
2. 回歸分析
2.1 什么是回歸?
回歸分析是一種統計方法,用于建模因變量(目標值)與自變量(特征)之間的關系。在回歸分析中,目標是找到一個數學函數來預測因變量的值。
- 回歸定義:通過建立數學模型,研究自變量(X)與因變量(Y)的映射關系 ?
- 核心價值:預測連續型變量(如房價預測、銷量分析),揭示變量間因果關系
- 回歸模型:預測連續值,如房價、溫度、銷售額等。
2.2 線性回歸
線性回歸是回歸分析中最簡單的一種方法,它假設因變量與自變量之間存在線性關系。
-
線性回歸模型的公式為:
y=β0+β1x1+β2x2+...+βnxn+?y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n + \epsilon y=β0?+β1?x1?+β2?x2?+...+βn?xn?+?
其中:
- yyy 是因變量。
- x1,x2,...,xnx_1, x_2, ..., x_nx1?,x2?,...,xn? 是自變量(特征)。
- β0\beta_0β0? 是截距(模型基準點)。
- β1,β2,...,βn\beta_1, \beta_2, ..., \beta_nβ1?,β2?,...,βn? 是回歸系數(特征權重系數)。
- ?\epsilon? 是誤差項。
2.3 損失函數
損失函數用于度量模型預測值與實際值之間的誤差。在線性回歸中,通常使用 均方誤差 (MSE) 作為損失函數。
-
數學本質:誤差平方和的期望最小化
-
幾何意義:尋找最佳擬合超平面(高維空間中的直線)📐
-
均方誤差(MSE) 公式:
MSE=1m∑i=1m(yi?y^i)2MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 MSE=m1?i=1∑m?(yi??y^?i?)2
其中:
- yiy_iyi? 是實際值。
- y^i\hat{y}_iy^?i? 是預測值。
- mmm 是樣本數量。
2.4 多參數回歸
在多參數回歸中,目標是通過多個特征來預測一個因變量。例如,在房價預測中,可能有多個因素(如面積、房間數量、位置等)影響房價。多參數回歸即通過多個自變量來建立線性關系。
3. 參數求解:最小二乘法
最小二乘法(Least Squares)是一種優化方法,常用于線性回歸中,用來找到最佳擬合的線。
3.1 最小二乘法 MSE
最小二乘法通過最小化損失函數(MSE)來求解回歸系數。在矩陣形式下,最小二乘法的公式為:
β^=(XTX)?1XTy\hat{\beta} = (X^T X)^{-1} X^T y β^?=(XTX)?1XTy
- XXX 是樣本特征矩陣。
- yyy 是目標變量。
- β^\hat{\beta}β^? 是回歸系數向量。
前景知識:矩陣相關公式
- 矩陣運算前提:
- 特征矩陣需滿秩(無多重共線性)
- 樣本量 > 特征維度
-
矩陣轉置: (AT)T=A(A^T)^T = A(AT)T=A
-
矩陣逆: (AB)?1=B?1A?1(AB)^{-1} = B^{-1}A^{-1}(AB)?1=B?1A?1
from sklearn.linear_model import LinearRegressionmodel = LinearRegression().fit(X_train, y_train)print(f"系數: {model.coef_}, 截距: {model.intercept_}")
3.2 最小二乘法的優缺點
優點:
- 簡單且易于理解。
- 對小數據集表現良好,計算效率高。
缺點:
- 對異常值敏感。
- 需要滿足線性假設。
4. 梯度下降
梯度下降(Gradient Descent)是一種優化算法,用于最小化損失函數。它通過計算損失函數關于參數的梯度,并沿梯度的反方向更新參數。
4.1 梯度下降概念
梯度下降通過迭代的方式不斷優化參數,直到找到損失函數的最小值。假設我們有損失函數 L(θ)L(\theta)L(θ),梯度下降的更新公式為:
θ:=θ?α?θL(θ)\theta := \theta - \alpha \nabla_\theta L(\theta) θ:=θ?α?θ?L(θ)
- θ\thetaθ 是模型參數。
- α\alphaα 是學習率。
- ?θL(θ)\nabla_\theta L(\theta)?θ?L(θ) 是損失函數關于參數的梯度。
4.2 梯度下降步驟
- 初始化參數:隨機或通過某種方式初始化參數。
- 計算梯度:計算損失函數對參數的偏導數。
- 更新參數:按照梯度反方向更新參數。
- 迭代:重復以上步驟,直到損失函數收斂或達到最大迭代次數。
4.3 梯度下降公式
損失函數 L(θ)L(\theta)L(θ) 相對于參數 θ\thetaθ 的梯度計算公式為:
?θL(θ)=??θ(1m∑i=1m(yi?y^i)2)\nabla_\theta L(\theta) = \frac{\partial}{\partial \theta} \left( \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 \right) ?θ?L(θ)=?θ??(m1?i=1∑m?(yi??y^?i?)2)
4.4 學習率
學習率(α\alphaα)決定了每次更新的步長大小。選擇一個合適的學習率非常重要:
- 學習率過大,可能導致跳過最優解。
- 學習率過小,收斂速度會很慢。
4.5 自己實現梯度下降
import numpy as np# 假設數據集X和y已經準備好
def gradient_descent(X, y, theta, alpha=0.01, iterations=1000):m = len(y)cost_history = []for i in range(iterations):predictions = X.dot(theta)error = predictions - ygradient = (1/m) * X.T.dot(error)theta = theta - alpha * gradientcost = (1/2*m) * np.sum(np.square(error))cost_history.append(cost)return theta, cost_history# 初始化theta,假設X和y已經定義
theta_initial = np.zeros(X.shape[1])
theta, cost_history = gradient_descent(X, y, theta_initial, alpha=0.01, iterations=1000)
4.6 梯度下降的變種
BGD(批量梯度下降)
在批量梯度下降中,每次迭代都使用整個訓練集計算梯度。它收斂穩定,但計算量大,尤其在數據集較大時。
SGD(隨機梯度下降)
在隨機梯度下降中,每次迭代使用一個樣本來計算梯度,收斂較快,但噪聲大。
MBGD(小批量梯度下降)
小批量梯度下降結合了BGD和SGD的優點。每次迭代使用一個小批量的樣本進行計算,能有效減少計算開銷并加速收斂。
4.7 梯度下降優化
為加速梯度下降的收斂速度,可以使用動量法(Momentum)、**自適應梯度(AdaGrad)**等優化算法。
5. 使用場景
- 線性回歸:適用于預測房價、銷售量、溫度等連續變量,尤其是特征之間存在線性關系時。
- 梯度下降:適用于大數據集或高維數據集,尤其是在無法直接求解閉式解(如最小二乘法)時。
6. 優缺點
6.1 線性回歸
優點:
- 簡單易懂。
- 計算效率高,尤其是數據量小的時候。
缺點:
- 對異常值敏感。
- 假設特征與目標變量之間存在線性關系。
6.2 梯度下降
優點:
- 適用于大規模數據集,尤其是在線性回歸無法使用最小二乘法時。
- 可以處理復雜的非線性模型。
缺點:
- 可能收斂到局部最優解。
- 需要選擇合適的學習率。
7. 總結
本文介紹了線性回歸和梯度下降的基本理論及實現方法,分析了它們的優缺點和應用場景。通過結合這些方法,能夠為不同的數據問題提供高效的解決方案。