線性回歸(Linear Regression)是機器學習中最基礎、最常用的監督學習模型之一,用于解決回歸問題(預測連續數值輸出)。它的核心思想是通過擬合一條直線(或超平面)來描述輸入特征(自變量)與目標變量(因變量)之間的線性關系。
核心概念
-
模型形式
-
簡單線性回歸(單特征):
[
y = w_1 x + b
]- ( y ):預測值(目標變量)。
- ( x ):輸入特征。
- ( w_1 ):權重(斜率),表示特征的重要性。
- ( b ):偏置(截距),表示基線值。
-
多元線性回歸(多特征):
[
y = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b
]- ( x_1, x_2, \dots, x_n ):多個特征。
- ( w_1, w_2, \dots, w_n ):每個特征的權重。
-
-
目標
找到最優的權重 ( w ) 和偏置 ( b ),使得預測值 ( y ) 與真實值 ( y_{\text{true}} ) 的誤差最小。
如何訓練?
-
損失函數(Loss Function)
衡量預測值與真實值的差距,常用均方誤差(MSE):
[
\text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_{\text{true}}^{(i)} - y{(i)})2
]- ( N ):樣本數量。
- 目標是最小化MSE。
-
優化方法
- 最小二乘法:通過數學推導直接求解最優解(適用于小規模數據)。
- 梯度下降(Gradient Descent):迭代調整參數,逐步降低損失(適用于大規模數據)。
代碼示例(Python)
from sklearn.linear_model import LinearRegression
import numpy as np# 示例數據:X是特征,y是目標值
X = np.array([[1], [2], [3], [4]]) # 單特征
y = np.array([2, 4, 6, 8]) # y = 2x# 創建模型并訓練
model = LinearRegression()
model.fit(X, y)# 預測
print(model.predict([[5]])) # 輸出: [10.] (符合 y=2x)
print("權重 w:", model.coef_) # 輸出: [2.]
print("截距 b:", model.intercept_) # 輸出: 0.0
特點
- 優點:
- 簡單、易解釋(權重直接表示特征影響)。
- 計算效率高,適合小規模數據。
- 缺點:
- 假設數據是線性的,對復雜關系擬合不足。
- 對異常值和噪聲敏感。
應用場景
- 房價預測(特征:面積、地段 → 目標:房價)。
- 銷售額預測(特征:廣告投入、季節 → 目標:銷量)。
- 任何需要量化特征與目標之間線性關系的場景。
注意事項
- 數據預處理:
- 特征需歸一化(尤其梯度下降時)。
- 處理多重共線性(特征間高度相關)。
- 模型評估:
- 使用R2分數、MSE等指標衡量性能。
- 非線性擴展:
- 可通過多項式回歸(如 ( y = w_1 x + w_2 x^2 ))擬合非線性關系。