线性回归-学习笔记
📅 2026/7/24 20:55:52
👁️ 阅读次数
📝 编程学习
线性回归
线性回归是最简单的有监督回归算法,用于建立自变量(特征 x) 和因变量(预测值 y) 之间的线性数学关系,目标是用一条直线(高维为超平面)拟合数据,实现连续值预测。
损失函数
误差 = 预测值 - 真实值
损失函数就是用来描述每个样本和其预测值之间关系的
各个样本的误差和,越小越好
公式:
正规方程
求解线性回归最小二乘的最优参数,不需要迭代,一步直接算出解析解。
正规方程的问题:
如果运算量可能内存溢出,
如果矩阵没有逆,则计算不出来
公式:
梯度下降
梯度下降是机器学习最基础、最常用的优化算法,核心目的:不断迭代更新参数,最小化损失函数(代价函数),找到函数最小值点。
更新公式:
例子:
梯度下降分类
全梯度下降:
每次更新参数,使用全部 m 条样本计算梯度随机梯度下降:
每次只用 1 条随机样本更新参数
每看完一条样本立刻更新 θ,不用等全部样本算完。小批量梯度下降 Mini-batch GD(深度学习最常用):
把数据集切成一小块一小块(batch,如 32/64 条)
每次取一小批样本算梯度更新。
线性回归例子
# 导包fromsklearn.linear_modelimportLinearRegression# 1.加载数据集(身高/体重)x_train=[[160],[166],[172],[174],[180]]y_train=[56.3,60.6,65.1,68.5,75]x_test=[[176]]# 2.数据预处理# 3.特征化处理# 4.模型训练estimator=LinearRegression()estimator.fit(x_train,y_train)# 显示权重(斜率)与偏置(截距)print(f"权重:{estimator.coef_}")print(f"偏置:{estimator.intercept_}")# 5.模型预测y_pred=estimator.predict(x_test)print(y_pred)欠拟合、过拟合、正好拟合
欠拟合
欠拟合就是训练集和测试集表现都不好
解决方法:增加模型复杂度,添加特征列
过拟合
过拟合就是训练集表现好,但是测试集表现不好
解决方法:手动筛选(减少)特征,还可以L1和L2正则化
L1和L2都是基于惩罚系统,来修改特征列的权重,惩罚系数越大,修改力度越大,对应的权重就越小
正好拟合
正好拟合就是训练集和测试集表现都好
线性回归的正则化
L1 正则:Lasso 套索回归
Lasso:几乎全部权重归零,只剩极少数有用特征
不重要权重直接 = 0,自动删除特征
L2 正则:Ridge 岭回归
Ridge:所有权重无限贴近 0,模型变成水平线,欠拟合
所有权重同步缩小,全部不为 0,保留所有特征
编程学习
技术分享
实战经验