楼主: 迦桔
25 0

[学科前沿] 机器学习 Day3:线性回归全面总结(含 API、案例与正则化) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-4-11
最后登录
2018-4-11

楼主
迦桔 发表于 2025-12-2 19:18:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、线性回归基础理论

线性回归是一种通过构建线性方程,来描述一个或多个自变量(特征)与因变量(目标值)之间关系的统计分析方法。其核心目标是寻找一条最优的线性函数,以尽可能准确地拟合观测数据中的规律。

1. 基本定义

该方法基于最小化预测输出与实际结果之间的误差,建立数学模型,广泛应用于连续数值的预测任务中。

2. 主要分类

类型 说明 公式表达 典型应用
一元线性回归 仅涉及单一特征对目标值的影响 y = wx + b 如身高与体重的关系、气温与销量的变化趋势
多元线性回归 多个特征共同影响目标值 y = wx + wx + ... + wx + b 适用于房价评估、信贷额度计算等多因素场景

3. 典型应用场景

  • 趋势分析:研究GDP与消费水平之间的关联,或温度变化对产品销售量的影响。
  • 数值预测:用于房价、股票价格、贷款额度及产品质量评分等连续变量的估算。
  • 关系探究:分析昆虫鸣叫频率与环境温度的关系,或钢轨热胀冷缩长度随温度的变化规律。

二、线性回归求解流程

1. 标准建模步骤

完整的建模过程包括以下环节:

  1. 数据准备
  2. 模型结构设计
  3. 损失函数设定
  4. 参数优化求解
  5. 模型效果评估

2. 损失函数的作用

损失函数(又称代价函数)用于量化模型预测值与真实值之间的偏差,为后续参数调整提供方向依据,通常采用均方误差(MSE)作为衡量标准。

3. 参数优化方法

(1)正规方程法

原理:通过对损失函数关于参数求导并令导数为零,直接获得解析解。

公式(多元情况):w = (XX)Xy

优点:无需迭代,不依赖学习率,适合小规模数据。

缺点:当特征维度超过一万时,矩阵求逆运算开销大,效率显著下降。

(2)梯度下降法

原理:沿着损失函数梯度的负方向逐步更新参数,逼近最优解。

更新公式:θ = θ αJ(θ),其中α表示学习率。

学习率建议范围:0.001 ~ 0.01。过大可能导致震荡无法收敛;过小则收敛速度缓慢。

(3)梯度下降的不同形式

类型 特点 适用条件
全梯度下降(FGD) 使用全部样本计算梯度 数据量较小,追求高精度但可接受较慢训练速度
随机梯度下降(SGD) 每次仅用单个样本更新参数 大数据集下速度快,但波动性强
小批量梯度下降(Mini-batch) 采用小批次样本进行梯度估计 兼顾效率与稳定性,工业中最常用
随机平均梯度下降(SAG) 利用历史梯度均值加速收敛 适用于大规模数据集,收敛更平稳

(4)两种方法对比

比较项 正规方程法 梯度下降法
是否需要迭代
学习率设置 不需要 必须调整
适合特征维度 低维(<10000) 高维均可
计算复杂度 O(n),主要来自矩阵求逆 O(knm),k为迭代次数,n为特征数,m为样本数
典型使用场景 小数据集、特征较少 大数据集、高维特征

三、关键数学工具支持

1. 导数与偏导数

导数:反映单变量函数在某一点处的变化速率,即切线斜率,常用于单参数优化问题。

偏导数:在多元函数中,固定其余变量,仅观察某一变量变化带来的影响,是多参数优化的基础。

核心用途:通过令导数或偏导数等于零,定位损失函数的极值点,从而求得最优参数组合。

2. 向量与矩阵运算

向量:表示一组有序数值,例如一个样本的所有特征构成的特征向量。

矩阵:二维数组结构,如特征矩阵 X ∈ ^(m×n),其中 m 为样本数量,n 为特征数量。

常见操作:矩阵乘法、转置、求逆(正规方程关键)、范数计算(正则化基础)等。

3. 范数概念

L1 范数:||x|| = Σ|xi|,对应 Lasso 正则化,具有稀疏化特性。

L2 范数:||x|| = √Σ(xi),对应 Ridge 正则化,促使权重趋向于小值。

四、Sklearn 中的线性回归接口详解

from sklearn.linear_model import LinearRegression
# 实例化(fit_intercept=True表示计算偏置)
estimator = LinearRegression(fit_intercept=True)
# 训练模型
estimator.fit(x_train, y_train)
# 模型参数
print("回归系数:", estimator.coef_)  # 特征权重w
print("偏置:", estimator.intercept_)  # 截距b
# 预测
y_pred = estimator.predict(x_test)

1. 基于正规方程的实现 API

sklearn.linear_model.LinearRegression 使用正规方程法求解,适用于中小规模数据集。

from sklearn.linear_model import SGDRegressor
# 实例化(loss为损失函数类型)
estimator = SGDRegressor(
    loss="squared_loss",  # 均方误差损失
    fit_intercept=True,   # 计算偏置
    learning_rate='constant',  # 学习率策略
    eta0=0.01  # 初始学习率
)
# 训练与预测(同LinearRegression)
estimator.fit(x_train, y_train)
y_pred = estimator.predict(x_test)

2. 梯度下降相关 API

包括 SGDRegressor 等类,支持在线学习和大规模数据处理,需注意特征标准化。

from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

# 计算MAE
mae = mean_absolute_error(y_test, y_pred)
# 计算MSE
mse = mean_squared_error(y_test, y_pred)
# 计算RMSE
rmse = np.sqrt(mse)

print(f"MAE: {mae:.2f}, MSE: {mse:.2f}, RMSE: {rmse:.2f}")

3. 模型性能评估接口

常用指标包括 R、均方误差(MSE)、平均绝对误差(MAE),可通过 sklearn.metrics 调用。

五、实战示例:波士顿房价预测

1. 数据背景介绍

本案例使用经典的波士顿房价数据集,包含 506 条记录,每条样本涵盖 13 个住房相关特征(如犯罪率、房间数量、税率等),目标是预测房屋价格中位数(单位:千美元)。

# 导入库
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error

# 1. 获取数据
data = load_boston()
x, y = data.data, data.target

# 2. 数据划分与标准化(梯度下降必须标准化)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 3. 正规方程法建模
def linear_model_normal():
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)
    y_pred = estimator.predict(x_test)
    print("正规方程法 - 回归系数:", estimator.coef_)
    print("正规方程法 - MSE:", mean_squared_error(y_test, y_pred))

# 4. 梯度下降法建模
def linear_model_sgd():
    estimator = SGDRegressor(max_iter=1000, eta0=0.01)
    estimator.fit(x_train, y_train)
    y_pred = estimator.predict(x_test)
    print("梯度下降法 - 回归系数:", estimator.coef_)
    print("梯度下降法 - MSE:", mean_squared_error(y_test, y_pred))

# 运行模型
linear_model_normal()
linear_model_sgd()

2. 完整代码实现

代码展示了从数据加载、预处理、模型训练到结果评估的全流程。

3. 关键注意事项

  • 特征标准化:由于梯度下降对各特征尺度敏感,必须进行归一化或标准化处理。
  • 结果分析:MSE 值越低,表明模型拟合效果越好。一般情况下,正规方程法精度略优,而梯度下降更适合处理大规模数据。

六、模型泛化问题及其应对策略

1. 欠拟合与过拟合识别

问题类型 训练集表现 测试集表现 主要原因
欠拟合 模型过于简单,未能捕捉数据的核心模式
过拟合 模型过于复杂,过度记忆了训练噪声

2. 改进方案

(1)解决欠拟合

  • 引入更多特征,如多项式项(x)、交叉项(xx)等。
  • 改用更复杂的非线性模型,如多项式回归。

(2)缓解过拟合

  • 数据层面:扩充训练集规模,剔除异常值和噪声数据。
  • 模型层面:采用正则化技术(L1/L2)、实施特征降维。
  • 训练策略:应用早停机制(Early Stopping),防止过度训练。

3. 正则化方法深入解析

(1)L1 正则化(Lasso 回归)

损失函数:J(w) = MSE(w) + αΣ|wi|

特性:能将部分权重压缩至零,实现自动特征选择。

from sklearn.linear_model import Lasso

(2)L2 正则化(Ridge 回归)

损失函数:J(w) = MSE(w) + αΣwi

特性:使权重趋近于小值但不为零,保留所有特征的同时抑制过拟合。

from sklearn.linear_model import Ridge

(3)正则化实战代码演示

from sklearn.linear_model import Lasso, Ridge

# L1正则化(Lasso)
lasso = Lasso(alpha=0.01, normalize=True)
lasso.fit(x_train, y_train)
print("Lasso回归系数:", lasso.coef_)  # 部分系数为0

# L2正则化(Ridge)
ridge = Ridge(alpha=0.01, normalize=True)
ridge.fit(x_train, y_train)
print("Ridge回归系数:", ridge.coef_)  # 系数均接近0但不为0

(4)正则化参数调优建议

  • α 较大:正则化强度增强,权重被大幅压缩,可能引起欠拟合。
  • α 较小:约束作用减弱,权重接近原始值,存在过拟合风险。
  • 推荐做法:结合交叉验证(如 RidgeCV、LassoCV)自动搜索最佳 α 值。

七、总结

线性回归作为机器学习中最基础且实用的算法之一,不仅逻辑清晰、易于理解,而且在多种实际场景中表现出良好的预测能力。掌握其背后的数学原理、优化方式以及常见问题的解决方案,对于进一步学习高级模型具有重要意义。合理选择求解方法、正确处理数据特征,并有效运用正则化手段,是提升模型泛化性能的关键所在。

线性回归作为机器学习中最基础的数值预测方法,因其结构简单、易于理解且具备良好的可解释性而被广泛使用。其核心目标是通过构建一个最优的线性方程来描述输入特征与输出结果之间的关系,并通过最小化损失函数实现模型拟合。

在求解方式上,可根据数据规模灵活选择:对于小规模数据集,推荐使用正规方程法直接求解参数;而对于大规模数据,则更适合采用梯度下降算法进行迭代优化,以提升计算效率。

模型评估方面,建议结合MAE和RMSE两个指标综合判断。MAE对异常值较为稳健,能反映平均误差水平;而RMSE对较大误差更敏感。若两者数值接近,表明误差分布较均匀,异常值较少;若RMSE显著大于MAE,则提示数据中可能存在异常值,需进行数据清洗或优先考虑使用MAE作为主要评价标准。

在实际应用中,为提升模型性能,应注意以下两点:一是当特征维度较高时,引入正则化(如L1/L2)可有效防止过拟合;二是对特征进行标准化处理,有助于加快梯度下降的收敛速度,提升训练效率。

深入理解线性回归的原理并熟练掌握其实现方法,不仅能够解决基本的回归问题,也为后续学习逻辑回归、神经网络等更复杂的模型打下坚实的理论与实践基础。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:线性回归 机器学习 正则化 Day API

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 18:21