机器学习&第二章线性回归

二、线性回归

线性回归的核心:用 "直线 / 平面(线性)" 去拟合数据,预测连续的数值(比如房价、销量)。你可以把它想象成 "找一条最贴合所有数据点的直线"。

2.1 预测函数(核心公式,模型的 "猜答案公式")

线性回归的预测函数,本质是 "自变量(特征)的线性组合 + 常数项",就像初中数学的 "y = kx + b",只是自变量可能不止一个。

单特征(单变量)情况(公式 2-1/2-2 通用形式)

如果只有 1 个特征(比如用 "房子面积" 预测房价),预测函数是:y^​=w1​x1​+b

  • 人话翻译:
    • y^(读 "y 帽"):模型猜的房价(预测值);
    • x1:房子面积(输入特征);
    • w1:权重(相当于初中的 k,代表 "面积每增加 1㎡,房价涨多少");
    • b:偏置项(相当于初中的 b,代表 "哪怕面积为 0,房子的基础价格",比如地皮钱)。

多特征(多变量)情况(更通用的公式)

如果有多个特征(面积x1​、楼层x2​、房龄x3​),预测函数是:y^​=w1​x1​+w2​x2​+w3​x3​+...+wd​xd​+b

  • 简化写法(机器学习常用):把b当成w0​x0​(令x0​=1),则公式变为:y^​=∑i=0d​wi​xi​=WTX

    • W=[w0,w1,w2,...,wd]T:权重向量(模型要学的参数);
    • X=[x0,x1,x2,...,xd]T:特征向量(输入数据)。
  • 例子:房价预测:y^​=10000x1​(面积) + 5000x_2(楼层) - 2000x_3(房龄) + 100000(地皮钱)。意思是:面积每涨 1㎡,房价涨 1 万;楼层每高 1 层,涨 5000;房龄每多 1 年,跌 2000;基础地皮钱 10 万。

2.2 目标函数(模型的 "纠错目标")

目标函数 = 损失函数 + (可选)正则项,核心是 "让模型的预测值y^​和真实值y的误差尽可能小"。

2.2.1 L2 损失(残差平方和损失)(公式 2-4)

最常用的损失函数,衡量单个样本的误差,"残差" 就是 "预测值 - 真实值"。LL2​(y,y^​)=(y−y^​)2

  • 人话翻译:把 "真实房价 - 模型猜的房价" 的差平方,平方的目的是:
    1. 让误差都是正数(避免正负误差抵消);
    2. 放大较大的误差(比如差 20 万,平方后是 400 万,模型会更关注这种大误差)。
  • 例子:真实房价y=200万,预测y^=180万,L2 损失 =(200−180)2=400。

2.2.2 L1 损失(公式 2-10)

另一种损失函数,对异常值更 "宽容"。LL1​(y,y^​)=∣y−y^​∣

  • 人话翻译:直接取 "真实值 - 预测值" 的绝对值。
  • 例子:同上,L1 损失 =∣200−180∣=20。
  • 对比:如果有个异常值(比如真实房价 1000 万,预测 500 万),L2 损失 =5002=250000(误差被放大),L1 损失 =500(误差没被放大)。

2.2.3 最小二乘回归的目标函数(L2 损失 + 无正则)(公式 2-14)

"最小二乘" 就是 "最小化平方误差",是线性回归最基础的目标函数(针对所有样本)。J(W)=2m1​∑i=1m​(yi​−y^​i​)2=2m1​∑i=1m​(yi​−WTXi​)2

  • 人话翻译:
    • m:样本总数(比如 100 套房子);
    • 21:纯为了后续求导方便(求导后系数会抵消,不影响最小值);
    • 整体意思:把所有样本的 L2 损失加起来,除以样本数,目标是让这个值最小。
  • 核心:训练模型就是找一组W,让J(W)最小。

2.2.4 岭回归的目标函数(L2 损失 + L2 正则)(公式 2-15)

解决 "过拟合" 的线性回归,给目标函数加 L2 正则(惩罚权重的平方)。J(W)=2m1​∑i=1m​(yi​−WTXi​)2+2mλ​∑j=1d​wj2​

  • 人话翻译:
    • 第一部分:原来的最小二乘损失(保证模型拟合数据);
    • 第二部分:L2 正则项(惩罚大权重,避免模型 "依赖某一个特征");
    • λ(lambda):超参数(手动调),λ越大,惩罚越重(权重会越小)。
  • 例子:如果模型学出w1=10000(面积的权重),w2=5000(楼层的权重),正则项会惩罚w1(因为平方后更大),迫使w1变小,避免模型只靠 "面积" 预测。

2.2.5 LASSO 回归的目标函数(L2 损失 + L1 正则)(公式 2-22)

不仅解决过拟合,还能 "特征选择"(让不重要的特征权重变为 0)。J(W)=2m1​∑i=1m​(yi​−WTXi​)2+mλ​∑j=1d​∣wj​∣

  • 人话翻译:正则项换成 "权重的绝对值",而非平方。
  • 关键区别:L1 正则能让部分权重直接变成 0(比如 "房龄" 的权重w3=0,相当于模型忽略这个特征),而 L2 正则只会让权重变小,不会变成 0。
  • 例子:如果 "楼层" 这个特征对房价影响很小,LASSO 会让w2=0,模型变成y^=10000x1−2000x3+100000,自动删掉 "楼层" 特征。

2.3 优化求解(怎么找最优的 W?)

核心问题:如何找到一组W,让目标函数J(W)最小?有两种核心方法:解析法(直接算)、梯度下降法(慢慢试)。

2.3.1 解析求解法:最小二乘法求解思路

适合样本量小、特征少的情况,直接通过 "求导找极值" 算出最优W。

求解步骤(人话版):
  1. 对目标函数J(W)求关于W的偏导数(找斜率为 0 的点,就是最小值点);
  2. 令偏导数等于 0,解这个方程,得到最优W的公式:W∗=(XTX)−1XTy
    • X:所有样本的特征矩阵(m行d列,m是样本数,d是特征数);
    • y:所有样本的真实标签向量(m行 1 列);
    • (XTX)−1:矩阵的逆(相当于除法)。
优点:一步算出最优解,不用迭代;
缺点:
  • 如果样本 / 特征太多(比如 100 万样本),计算(XTX)−1会非常慢;
  • 如果XTX不可逆(比如特征之间高度相关),算不出来。

2.3.2 梯度下降法(最常用!)

适合大数据量,核心是 "顺着误差的下坡路,一步步走到最低点"(就像下山找谷底)。

2.3.2.1 求解思路(人话版)
  1. 初始化:随便给W赋一个初始值(比如全 0);
  2. 计算梯度:梯度是目标函数J(W)关于W的偏导数(代表 "当前方向的坡度",正数是上坡,负数是下坡);以最小二乘的目标函数为例,梯度公式:∇J(W)=m1XT(XW−y)
  3. 更新参数 :沿着梯度的反方向(下坡)调整W,公式:W=W−α⋅∇J(W)
    • α(阿尔法):学习率(超参数),代表 "每一步走多远"。α太大容易 "冲过谷底",太小走得太慢。
  4. 重复迭代:重复步骤 2-3,直到梯度接近 0(走到谷底,J(W)不再下降)。
2.3.2.2 三种梯度下降法(核心区别:每次用多少样本算梯度)
方法 计算梯度的样本数 人话例子 优点 缺点
批量梯度下降(BGD) 所有样本(m 个) 下山前,看整座山的坡度,再走一步 每一步都朝着最优方向走,最终能到精准谷底 样本多的时候,算梯度超慢(比如 100 万样本,每次都要算 100 万次)
随机梯度下降(SGD) 随机选 1 个样本 下山前,只看脚下 1 块石头的坡度,就走一步 计算极快,适合大数据 步子走得乱(梯度波动大),容易在谷底附近晃悠,到不了精准位置
小批量梯度下降(MBGD) 随机选一小批样本(比如 32/64 个) 下山前,看身边 32 块石头的平均坡度,再走一步 兼顾速度和稳定性(行业主流) 要调 "批次大小" 这个超参数

2.3.3 实操计算(给定 X,W,算预测值、损失、梯度、更新参数)

用一个极简例子,帮你理解全过程:

已知条件:
  • 样本:X=[1,2](x0=1,x1=2,代表面积 2㎡,简化例子);
  • 真实标签:y=5(房价 5 万);
  • 初始权重:W=[1,1](w0=1,w1=1);
  • 学习率α=0.1。
步骤 1:计算预测值y^​

y^​=WTX=1×1+1×2=3

步骤 2:计算 L2 损失

L=(y−y^​)2=(5−3)2=4

步骤 3:计算梯度(以最小二乘为例)

∇J(W)=m1​XT(XW−y)=1×[1,2]T×(3−5)=[1×(−2),2×(−2)]=[−2,−4]

步骤 4:更新参数

W=W−α×∇J(W)=[1,1]−0.1×[−2,−4]=[1+0.2,1+0.4]=[1.2,1.4]

迭代后效果:

新的预测值y^​=1.2×1+1.4×2=1.2+2.8=4,损失 =(5−4)2=1(比原来的 4 小,说明走对了!)。

2.3.4 预测模型 + 目标函数 + 优化求解的统一讲解

用 "找下山的路" 总结三者的关系:

  • 预测模型:你当前的位置(W),以及 "从当前位置能看到的房价"(y^=WTX);
  • 目标函数:你当前位置的海拔高度(J(W)),目标是走到海拔最低的地方;
  • 优化求解:下山的方法(解析法是直接算谷底坐标,梯度下降是一步步往下走)。

三者的核心逻辑:通过优化求解(下山),调整预测模型的参数W(位置),让目标函数J(W)(海拔)最小,最终让预测值y^​(看到的房价)尽可能接近真实值y。

2.4 性能指标(怎么判断线性回归模型好不好?)

用 "误差" 衡量,数值越小,模型越好。

2.4.1 核心指标(针对所有样本)

指标 公式 人话翻译 例子
均方误差(MSE) MSE=m1​∑i=1m​(yi​−y^​i​)2 所有样本 L2 损失的平均值 10 个样本的 L2 损失总和是 400,MSE=40
均方根误差(RMSE) RMSE=MSE​ 给 MSE 开根号,还原误差的单位(和真实值单位一致) MSE=40,RMSE≈6.32(单位:万元),代表平均误差 6.32 万
平均绝对误差(MAE) $MAE = \frac{1}{m} \sum_{i=1}^m y_i - \hat{y}_i $ 所有样本 L1 损失的平均值 10 个样本的 L1 损失总和是 20,MAE=2(单位:万元)
关键:
  • RMSE 比 MSE 更易解释(单位和预测值一致),是线性回归最常用的指标;
  • MAE 对异常值不敏感,适合数据里有极端值的场景。

2.5 超参数(线性回归里需要手动调的参数)

超参数不是模型学出来的,是训练前定的,核心超参数:

超参数 作用 例子
学习率α 梯度下降的步长 α=0.01(小步走),α=0.1(大步走)
正则系数λ 岭回归 / LASSO 的惩罚力度 λ=0.1(轻惩罚),λ=10(重惩罚)
批次大小 小批量梯度下降的样本数 32、64、128(行业常用)
迭代次数 梯度下降的步数 1000 次、5000 次(直到损失不再下降)

2.6 特征工程(结合线性回归的特点)

线性回归对特征工程非常敏感,核心是让特征满足 "线性关系",常用操作:

1. 特征清洗

  • 处理缺失值:线性回归不能有缺失值,常用均值 / 中位数填充(比如房龄缺失,填所有房龄的中位数);
  • 处理异常值:用箱型图 / 3σ 原则识别异常值,要么修正,要么删除(L1 损失对异常值宽容,可不用删)。

2. 特征变换(核心!)

线性回归假设 "特征和标签是线性关系",如果不是,要做变换:

  • 标准化 / 归一化:把特征缩放到同一范围(比如均值 0,方差 1),避免 "面积(单位:㎡)" 和 "房价(单位:万)" 数值差距太大,导致权重被主导;标准化公式:x′=σx−μ(μ是均值,σ是标准差)。
  • 非线性变换:如果特征和标签是曲线关系(比如 "年龄" 和 "收入" 先涨后跌),对特征做平方 / 对数 / 指数变换(比如x′=log(x))。

3. 特征选择

  • 删掉和标签无关的特征(比如 "房子编号");
  • 删掉高度相关的特征(比如 "面积(㎡)" 和 "面积(平方尺)",留一个就行),避免XTX不可逆(解析法算不出);
  • LASSO 回归自动做特征选择,适合特征多的场景。

4. 特征构造

  • 造新的线性特征:比如 "每平米房价 = 总价 / 面积","楼层性价比 = 楼层 / 房价";
  • 交互特征:比如 "面积 × 地段"(地段好的大户型,房价涨得更多),公式:x3=x1×x2。

线性回归核心知识点速查表

一、预测函数(模型的 "猜答案公式")

场景 公式 符号说明
单特征(单变量) y^​=w1​x1​+b y^​:预测值x1​:输入特征w1​:特征权重b:偏置项
多特征(多变量) y^​=∑i=0d​wi​xi​=WTX W=[w0​,w1​,...,wd​]T:权重向量(w0​=b)X=[x0​,x1​,...,xd​]T:特征向量(x0​=1)

二、目标函数(模型的 "纠错目标")

模型类型 公式 核心特点
L2 损失(单个样本) LL2​(y,y^​)=(y−y^​)2 放大较大误差,对异常值敏感
L1 损失(单个样本) LL1​(y,y^​)=∣y−y^​∣ 误差无放大,对异常值更宽容
最小二乘回归(无正则) J(W)=2m1​∑i=1m​(yi​−WTXi​)2 m:样本数目标:最小化所有样本的平均平方误差
岭回归(L2 损失 + L2 正则) J(W)=2m1​∑i=1m​(yi​−WTXi​)2+2mλ​∑j=1d​wj2​ λ:正则系数(超参数)作用:惩罚大权重,防止过拟合,权重不会为 0
LASSO 回归(L2 损失 + L1 正则) J(W)=2m1​∑i=1m​(yi​−WTXi​)2+mλ​∑j=1d​∣wj​∣ 作用:惩罚权重绝对值,实现特征选择,不重要特征权重可降为 0

三、优化求解(找最优权重W)

1. 解析求解法(最小二乘法)

  • 公式:W∗=(XTX)−1XTy
  • 适用场景:样本量小、特征数少
  • 优缺点:一步到位,但计算矩阵逆速度慢,XTX不可逆时失效

2. 梯度下降法(迭代求解)

核心步骤 公式 说明
梯度计算(最小二乘) ∇J(W)=m1​XT(XW−y) 梯度表示目标函数下降方向
参数更新 W=W−α⋅∇J(W) α:学习率(超参数),控制步长
梯度下降变体 样本使用方式 优缺点
批量梯度下降(BGD) 每次用全部m个样本 优点:方向精准,收敛稳定缺点:大数据下速度慢
随机梯度下降(SGD) 每次随机用 1 个样本 优点:计算快,适合大数据缺点:梯度波动大,收敛不稳定
小批量梯度下降(MBGD) 每次随机用k个样本(k=32/64/128) 优点:兼顾速度与稳定性,行业主流缺点:需调批次大小k

3. 实操计算流程(给定X,W)

  1. 计算预测值:y^=WTX
  2. 计算损失:L=(y−y^)2(L2 损失)
  3. 计算梯度:∇J(W)=m1XT(XW−y)
  4. 更新参数:W=W−α⋅∇J(W)

四、性能指标(衡量模型好坏)

指标 公式 特点
均方误差(MSE) MSE=m1​∑i=1m​(yi​−y^​i​)2 数值越大误差越大,单位是标签单位的平方
均方根误差(RMSE) RMSE=MSE​ 还原标签单位,更易解释,最常用
平均绝对误差(MAE) MAE=m1​∑i=1m​∣yi​−y^​i​∣ 对异常值不敏感,鲁棒性强

五、超参数(训练前手动设置)

超参数 作用 常见取值
学习率α 控制梯度下降步长 0.001、0.01、0.1
正则系数λ 控制正则惩罚力度 0.001、0.01、0.1、1、10
批次大小k 小批量梯度下降的样本数 32、64、128
迭代次数 梯度下降的步数 1000、5000、10000(直到损失收敛)

六、特征工程(线性回归关键步骤)

操作类型 具体方法 目的
特征清洗 1. 缺失值:均值 / 中位数填充2. 异常值:箱型图 / 3σ 原则识别修正 保证数据完整性,避免模型受异常值干扰
特征变换 1. 标准化:x′=σx−μ​2. 非线性变换:对数 / 平方 / 指数变换 1. 消除量纲影响,加速模型收敛2. 拟合特征与标签的非线性关系
特征选择 1. 删除无关 / 高度相关特征2. 用 LASSO 回归自动选择 1. 避免矩阵不可逆2. 简化模型,提升泛化能力
特征构造 1. 计算比值:如 "每平米房价 = 总价 / 面积"2. 构造交互特征:如 "面积 × 地段" 创造更有价值的特征,提升模型拟合能力
相关推荐
nervermore9902 小时前
3.3 Python图形编程
python
zhengfei6112 小时前
世界各地免费电视频道的 M3U 播放列表。
python
小宇的天下2 小时前
HBM(高带宽内存)深度解析:先进封装视角的技术指南
网络·人工智能
rongcj2 小时前
2026,“硅基经济”的时代正在悄然来临
人工智能
狼叔也疯狂2 小时前
英语启蒙SSS绘本第一辑50册高清PDF可打印
人工智能·全文检索
全栈小精灵2 小时前
Winform入门
开发语言·机器学习·c#
心静财富之门2 小时前
退出 for 循环,break和continue 语句
开发语言·python
WJSKad12352 小时前
YOLO11-FDPN-DASI实现羽毛球拍与球的实时检测与识别研究
python
万行3 小时前
机器学习&第四章支持向量机
人工智能·机器学习·支持向量机