机器学习基础:线性回归全解析,万象EXCEL开发(十二)excel 结构化查询 ——东方仙盟金丹期。
线性回归的基本概念
线性回归是监督学习中最基础的算法之一,用于建模输入变量(特征)与连续目标变量之间的线性关系。其核心思想是通过拟合一条直线(或超平面)来最小化预测值与实际值之间的误差。
线性回归的数学表达式为:
$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_n x_n + \epsilon $$
其中:
- $y$ 是目标变量
- $\beta_0$ 是截距项
- $\beta_1, \ldots, \beta_n$ 是特征系数
- $x_1, \ldots, x_n$ 是输入特征
- $\epsilon$ 是误差项
损失函数与优化目标
线性回归通常使用均方误差(MSE)作为损失函数:
$$ J(\beta) = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 $$
其中 $m$ 是样本数量,$\hat{y}_i$ 是模型预测值。优化目标是通过调整系数 $\beta$ 最小化 $J(\beta)$。
求解方法
普通最小二乘法(OLS)
通过解析解直接计算最优系数:
$$ \beta = (X^T X)^{-1} X^T y $$
适用于特征数量较少且 $X^T X$ 可逆的情况。
梯度下降
一种迭代优化方法,适用于大规模数据:
- 初始化系数 $\beta$
- 计算损失函数的梯度
- 沿梯度反方向更新系数:
$$ \beta := \beta - \alpha \nabla J(\beta) $$
其中 $\alpha$ 是学习率。
模型评估指标
R2(决定系数)
衡量模型解释目标变量方差的比例:
$$ R^2 = 1 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2} $$
取值范围 $[0, 1]$,越接近1说明模型拟合效果越好。
均方根误差(RMSE)
$$ \text{RMSE} = \sqrt{\frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2} $$
反映预测值与真实值的平均偏差。
正则化方法
岭回归(L2正则化)
在损失函数中加入L2惩罚项,防止过拟合:
$$ J(\beta) = \text{MSE} + \lambda \sum_{j=1}^{n} \beta_j^2 $$
Lasso回归(L1正则化)
加入L1惩罚项,可实现特征选择:
$$ J(\beta) = \text{MSE} + \lambda \sum_{j=1}^{n} |\beta_j| $$
代码实现示例(Python)
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成示例数据
X = np.random.rand(100, 2)
y = 3 * X[:, 0] + 5 * X[:, 1] + np.random.randn(100)
# 训练模型
model = LinearRegression()
model.fit(X, y)
# 预测与评估
y_pred = model.predict(X)
print("R2:", r2_score(y, y_pred))
print("RMSE:", np.sqrt(mean_squared_error(y, y_pred)))
应用场景与局限性
适用场景
- 目标变量与特征之间存在近似线性关系
- 需要快速建模或解释性强的情况
局限性
- 对异常值敏感
- 无法直接处理非线性关系(需引入多项式特征)
- 高维数据下可能表现不佳(需正则化)
更多推荐
所有评论(0)