机器学习入门:线性回归实战
·
机器学习入门:线性回归实战
线性回归是监督学习中最基础的算法,用于建立输入特征与连续目标值之间的线性关系模型。其核心思想是通过最小化预测值与真实值的差异来拟合最佳直线(或超平面)。数学表达式为:
$$y = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n + \epsilon$$
其中:
- $y$ 是目标变量
- $\theta_0$ 是截距项
- $\theta_1$ 到 $\theta_n$ 是特征系数
- $x_1$ 到 $x_n$ 是特征变量
- $\epsilon$ 是随机误差
实战步骤(使用Python)
-
数据准备
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split # 生成示例数据 X = np.random.rand(100, 3) # 100个样本,3个特征 y = 2.5 + 1.8*X[:,0] - 0.7*X[:,1] + 3.2*X[:,2] + np.random.randn(100)*0.1 # 划分训练集/测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) -
模型训练
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) # 拟合数据 -
结果分析
# 输出系数和截距 print(f"截距项: {model.intercept_:.4f}") print(f"特征系数: {model.coef_}") # 预测测试集 y_pred = model.predict(X_test) -
模型评估
from sklearn.metrics import mean_squared_error, r2_score mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f"均方误差(MSE): {mse:.4f}") print(f"决定系数(R²): {r2:.4f}")
关键概念解析
-
损失函数
采用最小二乘法,目标是最小化残差平方和:
$$J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2$$
其中 $m$ 为样本数,$h_\theta(x)$ 为预测值。 -
梯度下降
通过迭代更新参数(学习率 $\alpha$):
$$\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta)$$ -
正则化(进阶)
- 岭回归 (L2正则化):添加 $\lambda \sum_{j=1}^n \theta_j^2$ 惩罚项
- Lasso回归 (L1正则化):添加 $\lambda \sum_{j=1}^n |\theta_j|$ 惩罚项
典型输出示例
截距项: 2.5031
特征系数: [ 1.8023 -0.6987 3.1956]
均方误差(MSE): 0.0087
决定系数(R²): 0.9923
说明:R²接近1表明模型能解释99%的数据变异,MSE接近0说明预测误差极小。
注意事项
- 确保特征与目标存在线性关系(可通过散点图验证)
- 处理多重共线性:使用方差膨胀因子(VIF)检测
- 特征缩放:当特征量纲差异大时,需标准化处理
- 异常值处理:线性回归对异常值敏感,可使用箱线图识别
通过这个实战框架,您可快速掌握线性回归的核心实现与应用场景!
更多推荐
所有评论(0)