一、線性回歸簡介
1. 核心定義
線性回歸是一種通過屬性的線性組合進行預測的線性模型,核心目標是找到一條直線(二維)、一個平面(三維)或更高維的超平面,使模型的預測值與真實值之間的誤差最小化。
2. 適用場景
適用于回歸任務(預測連續型輸出,如房價、銷售額、溫度等),例如通過“房屋大小”預測“房屋價格”,通過“房間數量”“面積”等多特征預測“波士頓房價”。
3. 模型數學形式
(1)單特征線性回歸(簡單線性回歸)
僅含1個輸入特征(如房屋大小),模型形式為:
f(x) = w_0 + w_1x
x:輸入特征(如房屋大小);
?? ?? ? w_0:截距(直線與y軸交點,也可寫作b);
?? ?? ? w_1:特征權重(直線斜率,反映特征對預測結果的影響程度);
?? ?? ? f(x):模型預測值(如預測房價)。
(2)多特征線性回歸(多元線性回歸)
含d個輸入特征(如房間數、面積、樓層等),模型的一般形式為:
f(x) = w_1x_1 + w_2x_2 + ... + w_dx_d + b
x_1, x_2, ..., x_d:d個輸入特征的取值;
?? ?? ? w_1, w_2, ..., w_d:對應特征的權重;
?? ?? ? b:截距;
?? ?? ? 向量形式(簡化表達):f(x) = \boldsymbol{w}^T\boldsymbol{x} + b(\boldsymbol{w}為權重向量,\boldsymbol{x}為特征向量,\boldsymbol{w}^T表示\boldsymbol{w}的轉置)。
二、模型求解:最小二乘法
1. 核心思想
線性回歸通過最小二乘法求解最優參數(w和b),其本質是最小化“均方誤差”——均方誤差對應“歐氏距離”,即找到一條直線/超平面,使所有樣本到該直線/超平面的歐氏距離之和最小。
2. 誤差函數(損失函數)
需最小化的誤差函數(均方誤差對應的總損失)為:
E(w,b) = \sum_{i=1}^{m} (y_i - f(x_i))^2 = \sum_{i=1}^{m} (y_i - (wx_i + b))^2
m:樣本數量;
?? ?? ? y_i:第i個樣本的真實值;
?? ?? ? f(x_i) = wx_i + b:第i個樣本的預測值;
?? ?? ? E(w,b):所有樣本的“殘差平方和”(預測值與真實值差值的平方和)。
3. 參數求解過程
求解w和b的過程稱為“參數估計”,步驟如下:
?? ?1.?? ?求導:對E(w,b)分別關于w和b求偏導數,得到誤差隨參數變化的趨勢;
?? ?2.?? ?令導數為0:偏導數為0時,誤差函數E(w,b)取得最小值,據此解出最優參數:
?? ?? ? 最優權重w:w = \frac{\sum_{i=1}^{m} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{m} (x_i - \bar{x})^2}(\bar{x}為特征x的均值,\bar{y}為真實值y的均值);
?? ?? ? 最優截距b:b = \bar{y} - w\bar{x}。
三、線性回歸的評估指標
1. 殘差平方和(SSE/RSS)
?? ?? ? 定義:所有樣本預測值與真實值差值的平方和,反映模型預測的總誤差。
?? ?? ? 公式:SSE = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2(\hat{y}_i為第i個樣本的預測值);
?? ?? ? 特點:值越小,模型擬合效果越好;但受樣本數量影響(樣本越多,SSE可能越大),無法直接橫向對比不同數據集的模型。
2. 均方誤差(MSE)
?? ?? ? 定義:SSE的平均值,消除了樣本數量的影響,更適合對比不同模型。
?? ?? ? 公式:MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2;
?? ?? ? 特點:值越小,模型擬合效果越好;單位是“真實值單位的平方”(如房價預測中,單位為“元2”),不夠直觀。
3. 決定系數(R^2)
?? ?? ? 定義:衡量模型對數據的解釋能力,反映“模型能解釋的變異占總變異的比例”,是最常用的評估指標。
?? ?? ? 公式:
R^2 = 1 - \frac{SSE}{SST} = 1 - \frac{\sum_{i=1}^{m} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{m} (y_i - \bar{y})^2}
SST:總平方和(真實值與真實值均值的差值平方和,反映數據本身的總變異);
?? ?? ? 簡化形式:R^2 = 1 - \frac{MSE}{Var(y)}(Var(y)為真實值y的方差)。
?? ?? ? 特點:
?? ?? ? 取值范圍:(-\infty, 1];
?? ?? ? 越接近1:模型擬合效果越好(模型能解釋大部分數據變異);
?? ?? ? 等于1:模型完全擬合所有樣本;
?? ?? ? 小于0:模型效果差于“直接用真實值均值預測”(此時模型無意義)。
四、線性回歸代碼實現(Python sklearn)
1. 核心類
sklearn.linear_model.LinearRegression():用于構建線性回歸模型(支持單特征和多特征)。
2. 關鍵參數
參數 含義與取值?
fit_intercept 是否計算模型截距():- True(默認):模型包含截距;- False:模型不包含截距(直線過原點),需確保數據已中心化。?
normalize 是否在訓練前對數據進行歸一化:- False(默認):不歸一化;- True:對特征進行歸一化(均值為0、標準差為1),僅當fit_intercept=True時生效。?
3. 課堂練習:波士頓房價預測
核心步驟(示例思路):
?? ?1.?? ?加載數據:導入波士頓房價數據集(或類似房價數據集,含特征如房間數、距離市中心距離等,目標為房價);
?? ?2.?? ?數據預處理:處理缺失值、標準化特征(可選,若特征量綱差異大);
?? ?3.?? ?劃分數據集:將數據分為訓練集(用于訓練模型)和測試集(用于評估模型);
?? ?4.?? ?訓練模型:用LinearRegression()擬合訓練數據;
?? ?5.?? ?模型評估:計算測試集的MSE、R^2等指標,判斷模型效果。
示例代碼框架:
from sklearn import linear_model
from sklearn.datasets import load_boston ?# 加載波士頓房價數據集(注意:部分版本需手動安裝)
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
1. 加載數據
boston = load_boston()
X = boston.data ?# 特征(如房間數、面積等)
y = boston.target ?# 目標(房價)
2. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
?3. 初始化并訓練模型
model = linear_model.LinearRegression(fit_intercept=True, normalize=False)
model.fit(X_train, y_train)
4. 預測與評估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred) ?# 計算MSE
r2 = r2_score(y_test, y_pred) ?# 計算R2
print(f"均方誤差(MSE):{mse:.2f}")
print(f"決定系數(R2):{r2:.2f}")
print(f"模型截距(b):{model.intercept_:.2f}")
print(f"特征權重(w):{model.coef_}")