二、线性回归
线性回归的核心:用 "直线 / 平面(线性)" 去拟合数据,预测连续的数值(比如房价、销量)。你可以把它想象成 "找一条最贴合所有数据点的直线"。
2.1 预测函数(核心公式,模型的 "猜答案公式")
线性回归的预测函数,本质是 "自变量(特征)的线性组合 + 常数项",就像初中数学的 "y = kx + b",只是自变量可能不止一个。
单特征(单变量)情况(公式 2-1/2-2 通用形式)
如果只有 1 个特征(比如用 "房子面积" 预测房价),预测函数是:y^=w1x1+b
- 人话翻译:
- y^(读 "y 帽"):模型猜的房价(预测值);
- x1:房子面积(输入特征);
- w1:权重(相当于初中的 k,代表 "面积每增加 1㎡,房价涨多少");
- b:偏置项(相当于初中的 b,代表 "哪怕面积为 0,房子的基础价格",比如地皮钱)。
多特征(多变量)情况(更通用的公式)
如果有多个特征(面积x1、楼层x2、房龄x3),预测函数是:y^=w1x1+w2x2+w3x3+...+wdxd+b
-
简化写法(机器学习常用):把b当成w0x0(令x0=1),则公式变为:y^=∑i=0dwixi=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
- 人话翻译:把 "真实房价 - 模型猜的房价" 的差平方,平方的目的是:
- 让误差都是正数(避免正负误差抵消);
- 放大较大的误差(比如差 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=1dwj2
- 人话翻译:
- 第一部分:原来的最小二乘损失(保证模型拟合数据);
- 第二部分: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。
求解步骤(人话版):
- 对目标函数J(W)求关于W的偏导数(找斜率为 0 的点,就是最小值点);
- 令偏导数等于 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 求解思路(人话版)
- 初始化:随便给W赋一个初始值(比如全 0);
- 计算梯度:梯度是目标函数J(W)关于W的偏导数(代表 "当前方向的坡度",正数是上坡,负数是下坡);以最小二乘的目标函数为例,梯度公式:∇J(W)=m1XT(XW−y)
- 更新参数 :沿着梯度的反方向(下坡)调整W,公式:W=W−α⋅∇J(W)
- α(阿尔法):学习率(超参数),代表 "每一步走多远"。α太大容易 "冲过谷底",太小走得太慢。
- 重复迭代:重复步骤 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)=m1XT(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^=w1x1+b | y^:预测值x1:输入特征w1:特征权重b:偏置项 |
| 多特征(多变量) | y^=∑i=0dwixi=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=1dwj2 | λ:正则系数(超参数)作用:惩罚大权重,防止过拟合,权重不会为 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)=m1XT(XW−y) | 梯度表示目标函数下降方向 |
| 参数更新 | W=W−α⋅∇J(W) | α:学习率(超参数),控制步长 |
| 梯度下降变体 | 样本使用方式 | 优缺点 |
|---|---|---|
| 批量梯度下降(BGD) | 每次用全部m个样本 | 优点:方向精准,收敛稳定缺点:大数据下速度慢 |
| 随机梯度下降(SGD) | 每次随机用 1 个样本 | 优点:计算快,适合大数据缺点:梯度波动大,收敛不稳定 |
| 小批量梯度下降(MBGD) | 每次随机用k个样本(k=32/64/128) | 优点:兼顾速度与稳定性,行业主流缺点:需调批次大小k |
3. 实操计算流程(给定X,W)
- 计算预测值:y^=WTX
- 计算损失:L=(y−y^)2(L2 损失)
- 计算梯度:∇J(W)=m1XT(XW−y)
- 更新参数: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. 构造交互特征:如 "面积 × 地段" | 创造更有价值的特征,提升模型拟合能力 |