线性回归(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
特点
- 优点:
- 简单、易解释(权重直接表示特征影响)。
- 计算效率高,适合小规模数据。
- 缺点:
- 假设数据是线性的,对复杂关系拟合不足。
- 对异常值和噪声敏感。
应用场景
- 房价预测(特征:面积、地段 → 目标:房价)。
- 销售额预测(特征:广告投入、季节 → 目标:销量)。
- 任何需要量化特征与目标之间线性关系的场景。
注意事项
- 数据预处理:
- 特征需归一化(尤其梯度下降时)。
- 处理多重共线性(特征间高度相关)。
- 模型评估:
- 使用R²分数、MSE等指标衡量性能。
- 非线性扩展:
- 可通过多项式回归(如 ( y = w_1 x + w_2 x^2 ))拟合非线性关系。