资讯动态

线性回归与梯度下降全推导:从贷款额度预测到逻辑回归

发布时间:2026/10/14 2:34:29 来源:尧图企业网站定制
简介这份线性回归算法小组报告PPT是面向机器学习初学者及小组汇报场景的演示文稿。内容围绕线性回归与逻辑回归两大核心算法展开从工资、年龄与贷款额度的生活案例切入逐步推导线性回归的似然函数、最小二乘法目标函数并讲解批量梯度下降、随机梯度下降、小批量梯度下降等优化手段后段还介绍了逻辑回归的Sigmoid函数、决策边界与多分类softmax适合作为课堂展示、小组学习或考前复习的提纲式素材。整份资源为1个pptx文件压缩包约860KB页面紧凑、结构清晰可直接用于二次编辑汇报。目前已有319人浏览学习。通过这份PPT读者能快速掌握线性回归的数学原理与参数求解思路理清两种回归算法的适用场景与联系提升基础模型的理解和讲解能力。1. 线性回归算法小组报告这份PPT把贷款额度预测的推导链讲全了查“线性回归算法”相关的课程报告和小组PPT时多数资源要么只给公式不给场景要么直接甩sklearn代码数学推导一笔带过。这份PPT不一样它用“工资年龄预测银行贷款额度”的具体数据开场一路走到误差服从高斯分布、似然函数最大化、梯度下降求解最后落到逻辑回归和softmax等于把一条完整的机器学习推导链放在你面前。适合正在准备课程汇报的同学也适合想把回归和分类底子补扎实的从业者。下面按我的拆解习惯把这份PPT的推导逻辑、参数取舍和容易翻车的地方逐段讲清楚。2. 从误差到似然函数为什么最小二乘是线性回归的必然选择2.1 特征、参数与拟合平面的数学设定PPT给的例子很朴素两个特征X1工资、X2年龄一个标签Y银行贷款额度样本一共5条整理下来是这张表工资元年龄岁贷款额度元40002520000800030700005000283500075003350000120004085000这个数据量放在真实项目里小得可怜但作为推导示例足够了。模型要回答的问题是工资和年龄各自对贷款额度有多大影响。这里“影响”就是PPT里反复强调的参数θ1、θ2对应数学表达Y θ1·X1 θ2·X2 θ0其中θ0是偏置项解释起来很直接一个没有工资也没有年龄的人银行也会给一个基础额度这个基础额度就是θ0在模型中的体现。在实际建模时特征往往不是两个而是几十上百个但公式结构不变只是把X1、X2扩展成X1到Xn参数也随之扩展成θ1到θn。两个特征时拟合出来的不是一条直线而是一个二维平面。PPT里说的“找到最合适的一条线想象一个高维”指的就是这个意思一个特征是一维直线两个特征是一个平面三个特征以上就是超平面可视化做不了但数学形式完全一致。常见的做法是用矩阵把积写紧凑Y Xθ其中X是样本矩阵每一行是一个样本的两个特征加一个1对应偏置项。这里有一个新手容易卡住的点为什么要把偏置项单独拆出来因为偏置项可以看成θ0乘以一个恒为1的特征。把1拼到特征矩阵里之后偏置项就和其他参数一样参与推导梯度下降更新参数时不需要单独写分支。我在实际写代码时也习惯把偏置项拼进特征矩阵而不是单独存一个b变量这样后续矩阵运算会清爽很多。2.2 误差服从高斯分布的三个前提真实数据和拟合平面之间肯定有偏差PPT把这部分叫误差用ε表示。对每个样本来说Yi θ0 θ1X1i θ2X2i εi接下来的推导是整个线性回归的核心前提PPP对误差εi做了三个假设。第一是独立即张三和李四一起来贷款两个人的误差互不影响第二是同分布即他们来的都是这家银行误差的分布特性一致第三是服从均值为0、方差为σ²的高斯分布也就是说银行给钱可能多给也可能少给但绝大多数情况下浮动不会太大只有极少数情况浮动明显。这三个假设不是随便拍脑袋的它们决定了似然函数的具体形式。如果误差不服从高斯分布后面的所有推导都要换一套逻辑。高斯分布的概率密度函数是P(εi) (1 / (√(2π)·σ)) · e^(-εi² / (2σ²))因为εi Yi - hθ(Xi)所以给定参数θ时样本Yi出现的概率就是P(Yi | Xi; θ) (1 / (√(2π)·σ)) · e^(-(Yi - hθ(Xi))² / (2σ²))这个式子看着复杂实际上就是一句话误差越小概率越大。我们想找的那组参数θ就是让所有样本出现概率都尽量大的那组参数。这就是极大似然估计的基本思想也是从“误差假设”走到“最小二乘”之间的关键桥梁。我在之前的实际项目中验证过一个细节数据里的离群点会把假设置于危险境地。如果误差分布有厚尾高斯假设很容易被离群点带偏所以日常工作中拿到数据先看一眼残差分布已经成了我的习惯。这份PPT虽然没提诊断步骤但推导前提摆在这儿后续所有操作都是在为这个前提服务。2.3 似然函数到对数似然乘法转加法的关键一步把所有样本的概率乘起来就得到似然函数L(θ) ∏ P(Yi | Xi; θ)i从1到nPPT里的解释很形象什么样的参数跟数据组合之后恰好能还原真实值那组参数就是我们要找的。但现在连乘形式不好求导处理起来麻烦。PPT给出的处理方案是对数变换把连乘变成连加ln L(θ) Σ ln(1 / (√(2π)·σ)) - (1 / (2σ²)) · Σ(Yi - hθ(Xi))²观察这个式子第一项与参数θ无关是个常数真正影响对数似然大小的是第二项。前面有个负号所以让对数似然最大化等价于让残差平方和Σ(Yi - hθ(Xi))²最小化。这就是PPT里写的“让似然函数越大越好”落到实操上的结果——最小二乘目标。这一步是整个推导中最容易让新手绕晕的地方。我经常在讲解时做一次代换先把高斯分布写成指数形式取对数之后指数部分自然下落二次项出现在前面。不要跳步每一步都在纸上写清楚再对照PPT的“误差展开化简”部分就能摸清脉络。这里还需要明确σ的作用。原则上σ是个未知量但在求解θ的过程中它只作为缩放系数存在不改变最优解的方向。PPT没提这一层但在面试或答辩时被问到“为什么σ不影响参数求解”知道这一点会显得理解更完整。常见做法是在推导开始时就约定σ是常数这样既能简化表达也不影响后续梯度下降的目标函数形式。2.4 最小二乘目标函数与偏导求解最小二乘的目标函数写作J(θ) Σ(Yi - hθ(Xi))²PPT里提到求偏导、令偏导等于0。展开来看对参数θj求偏导∂J / ∂θj -2·Σ(Yi - hθ(Xi))·Xji令偏导等于0得到的是一组线性方程样本量不大时可以直接解出闭式解也就是正规方程。这个思路在特征维度不高、样本量不大时非常高效但在特征多、样本量大的场景下矩阵求逆的计算开销会直线上升所以梯度下降成了更通用的选择。评估模型时PPT提到“最常用的评估项取值越接近1拟合越好”这说的是决定系数R²R² 1 - 残差平方和 / 总平方和R²衡量的是模型解释掉了多少方差。为1说明完全拟合为0说明模型不比直接用均值预测好多少为负则说明模型甚至比直接取均值还差——这种情况实践中确实会出现常见原因之一是没有对数据进行必要的预处理或者模型形式不适合当前数据。后面避坑章节会专门展开讲。理解了这一章线性回归的“数学心脏”就基本打通了。从高斯误差假设出发推导出似然函数再对数化转成最小二乘最后求偏导这条链每一步都有迹可循。3. 梯度下降三种形态批量、随机与小批量的取舍与调参3.1 为什么要梯度下降直接求解的局限上一章末尾提到正规方程可以直接求解那为什么还要梯度下降PPT里点了一句“直接求解并不一定可解线性回归可以当作特例”。我展开说一下正规方程的核心是计算(XᵀX)⁻¹这里有两个实际问题。第一当特征数量超过几千甚至上万时矩阵求逆的时间复杂度接近O(n³)训练一次要等很久第二如果特征之间存在高度相关性XᵀX可能接近奇异矩阵求逆结果数值上不稳定得到的参数可能大得离谱。还有一个更实际的场景当模型形式不是线性回归这种能写出闭式解的类型时比如后面要说的逻辑回归或者任何带非线性的模型想直接“解方程”往往没有解析解。梯度下降不要求目标函数有闭式解只要目标函数能对参数求偏导就能迭代优化。所以我把梯度下降看成机器学习优化的通用工具线性回归只是它最简单的应用场景之一。PPT里的比喻很接地气下山找山谷最低点参数就是你的位置梯度就是当前最陡的下坡方向。每次往梯度反方向挪一小步步长由学习率控制迭代多次后就能逼近极值点。3.2 参数更新公式与下山三步下山分三步第一步找到当前最合适的方向即计算梯度第二步确定走多大一步即确定学习率第三步按方向与步长更新参数对应参数更新公式θj : θj - α · (∂J / ∂θj)α是学习率决定每次更新一步迈多大。在误差平方和作为目标函数的情况下代入J(θ)的表达式梯度项最终会落到残差乘以特征值的形式。这里需要提醒的是不同教材和代码库对这个目标函数差一个1/2系数本质是为了求导后消掉系数2对最优解没有影响但如果你把几个来源的代码混在一起看容易对不上号遇到这种差异不用慌先确认各自的目标函数长什么样。在坐标纸上手工迭代一次是最直观的理解方式。选一个初始点比如θ1 0、θ2 0代进梯度项算出更新量然后更新参数重复几次你会看到参数从0慢慢逼近训练数据对应的最优值。我一般会建议初次接触的人用单特征数据做一次完整手算迭代印象比直接调包深刻得多。3.3 三种梯度下降形态的对比与选择PPT列出了三种梯度下降方式批量梯度下降。每次更新考虑全部样本的梯度数学上收敛稳定最容易得到最优解但每迭代一轮都要遍历整个数据集。样本量上了百万之后一轮更新就要等好几秒甚至更久实践中几乎不可用。随机梯度下降。每次只取一个样本来算梯度迭代速度快但单个样本的梯度方向噪声大不一定每次都朝着收敛方向走目标函数曲线会呈现明显波动。好处是这种波动有时反而能帮模型跳出局部极小值在非凸问题上有些优势。小批量梯度下降。每次取32、64或128个样本折中方案计算效率高、收敛稳定是工业界最常用的版本。PPT里的评价是“实用”我完全认同实际训练中几乎默认选这个。三种方式的对比可以放进一张表方式每次更新用样本数收敛稳定性训练速度适用场景批量梯度下降全部样本最稳定最慢样本量小、追求精确解随机梯度下降1个样本波动大最快大规模数据、在线学习小批量梯度下降32/64/128较稳定较快大多数训练场景这里有一个容易被忽略的细节批次大小不仅影响速度还影响模型收敛到的结果。大批量梯度更平滑可能收敛到尖锐的最优点小批量带噪声反而可能泛化更好。调参时如果发现验证集表现波动考虑把batch size调大一档或调小一档有时会有意外收获。3.4 学习率与批处理数量两个必须手工调的核心参数学习率是最敏感的参数。PPT强调“对结果会产生巨大影响一般小一些”。我给出的实操建议是优先试试0.1、0.01、0.001三个量级观察损失下降曲线。学习率太大参数会在最优点附近来回震荡损失曲线像心电图一样不安分学习率太小训练半天损失还在高位缓慢爬行。一个常见做法是配合学习率衰减前几百轮用稍大一点的学习率快速下降之后逐渐缩小步长精细调整。批处理数量PPT给了“32、64、128都可以”这个参考区间。这背后有三个逻辑一是这些数是2的幂和GPU内存对齐友好二是批次太小会导致梯度噪声大太大则每轮计算时间长三是内存限制尤其在显存有限的训练环境下128不一定塞得下这时只能往小里调。我当时跑一个模拟项目X时输入数据只有两张表用批量梯度下降16秒一轮换成小批量64后降到1.8秒一轮收敛曲线稳定性没有明显损失。这个经验可以复制先从小批量64起步发现振荡就回调到128或256发现太慢就降到32。# 小批量梯度下降核心步骤 import numpy as np X ... # 特征矩阵已拼接偏置列 y ... # 标签向量 theta np.zeros(X.shape[1]) # 参数初始化 lr 0.01 # 学习率 batch_size 64 epochs 100 for epoch in range(epochs): for start in range(0, X.shape[0], batch_size): end start batch_size X_batch X[start:end] y_batch y[start:end] gradient X_batch.T.dot(X_batch.dot(theta) - y_batch) * 2 / batch_size theta - lr * gradient这段代码展示的是小批量梯度下降的完整逻辑。核心是循环内先取出一个批次的数据计算当前参数下预测值与真实值的残差用特征矩阵的转置与残差做矩阵乘法得到梯度最后按学习率更新参数。注释里标记了偏置列拼接说明X的第一列是常量1这样θ0才能和其他参数一起更新。参数含义方面lr控制每步更新幅度batch_size控制每次迭代计算梯度的样本数epochs控制整个数据集被遍历几轮。梯度前面乘2再除以batch_size是为了和平方误差导数对齐。实际使用时如果损失曲线不降反升第一反应就是调小学习率而不是延长训练轮数。4. 逻辑回归与Sigmoid回归模型怎么变成二分类器4.1 决策边界与Sigmoid函数线性回归解决的是连续值预测但很多业务问题要的是“是/否”这类分类答案比如银行决定贷不贷款。PPT在这里切入了逻辑回归并明确点出一个容易被新手忽略的事实逻辑回归名字里有“回归”本质却是经典的二分类算法。核心转换工具是Sigmoid函数σ(z) 1 / (1 e^(-z))这个函数把任意实数输入压缩到(0,1)区间z为0时输出0.5z很大时趋近1z很小时趋近0。在线性回归中计算出预测值z之后把它送进Sigmoid函数就得到了一个概率值。比如计算结果是0.8可以解读为“模型认为贷款概率是80%”然后按0.5阈值判断为贷或不贷。决策边界这个概念需要展开。Sigmoid输出等于0.5时对应z等于0而z又等于θ0θ1X1θ2X2所以决策边界实际上是特征空间里的一条线或一个超平面。线性逻辑回归的决策边界是线性的但PPT提到它“可以是非线性的”这个说法对应的做法是特征工程——在特征里加入X1²、X1·X2这类组合项后边界就变成了曲线或曲面。4.2 预测函数与似然函数的整合形式分类任务中y取0或1。假设正例概率p σ(z)则负例概率是1 - p。PPT给了一个很巧妙的整合写法把两个概率合并成一个统一的表达式P(y|x;θ) p^y · (1-p)^(1-y)y为1时第二项指数为0只剩下py为0时第一项指数为0只剩下1-p。这样写的好处是对全体样本的似然函数求对数时不需要分情况讨论直接取ln后展开就能统一求导。要注意的是这里的z还是输入的线性组合θ0θ1X1θ2X2不是逻辑回归重新发明的预测函数。区别只在于外层套了一个非线性变换并解释成概率。这也是为什么逻辑回归的参数数量和数据特征数量保持一致训练逻辑和线性回归在结构上有相似性。这套整合形式在答辩和面试时属于必考题。我见过不少人在黑板上写到p^y·(1-p)^(1-y)就卡住然后开始翻PPT找下一步。建议拿笔推两遍把“y1时只剩正例项y0时只剩负例项”这句话写在公式旁边短时间内不容易忘。4.3 梯度上升到梯度下降负号转换与参数更新单看对数似然函数逻辑回归的梯度推导比线性回归多一步符号判断。对数似然写成ln L(θ) Σ[y·ln(p) (1-y)·ln(1-p)]目标是让对数似然尽量大也就是要梯度上升但熟悉的优化框架是梯度下降所以PPT里的做法是取负把最大化问题转成最小化问题。这也解释了为什么很多开源代码里损失函数前面总有一个负号本质不是数学变了而是优化方向反了。求导结果是参数更新规则θj : θj α·Σ(y - p)·Xj 梯度上升形式常见写法是把它改写成梯度下降形式θj : θj - α·Σ(p - y)·Xj注意这里和线性回归有一个微妙差异线性回归梯度项中的残差是预测值减真实值hθ(x) - y逻辑回归梯度项中是概率减真实值p - y。符号方向不同但更新方向本质一致。实际代码中只需确认损失函数定义和梯度表达式是配对关系正负号别弄混就行。# 逻辑回归梯度下降更新示例 p sigmoid(X.dot(theta)) gradient X.T.dot(p - y) # 残差 概率 - 真实标签 theta - lr * gradient这段代码的逻辑很直接先计算每个样本的预测概率p再计算(概率 - 真实标签)作为残差方向用特征矩阵转置乘残差得到梯度最后沿负梯度方向更新参数。逻辑回归没有正规方程的闭式解必须靠迭代优化这也再次印证了第三章强调的梯度下降通用价值。4.4 softmax多分类扩展二分类用Sigmoid多分类怎么办PPT给的答案是softmax。softmax公式对每个类别输出一个概率公式形式是把每个类别的线性得分指数化再除以所有类别得分的指数和。这样保证所有类别概率之和为1。实际使用中softmax和Sigmoid的数学联系值得提一句当类别数为2时softmax退化为Sigmoid二者在二分类场景下等价。所以逻辑回归直接扩展到多分类最简单的方式就是把输出层从1个节点换成K个节点套上softmax激活函数。做多分类时还有一个常见选择直接用多个二分类器一人一个逻辑回归还是直接用softmax。区别在于多个二分类器问题需要额外的投票策略而且每个分类器只学正负两类的判别边界softmax则是一套参数同时学习所有类别之间的关系。实践中样本类别均衡时softmax效果通常更稳类别不平衡时反而可以先用二分类方案逐个排查效果。5. 常见问题排查从数据标准化到参数不收敛的5条踩坑记录5.1 损失不降反升或震荡不止现象训练时损失曲线在初始值附近来回抖动甚至一轮比一轮高半程过后也没稳定下来的迹象。原因最常见的是学习率设得太大参数更新跨过了最优区域在两侧反复横跳第二种常见原因是特征数值量级存在巨大差异导致梯度在不同维度上尺度不一致更新方向被大数值特征主导。解决先确定学习率量级从0.001开始如果损失能平稳下降就维持不行再往小调。随后对特征做标准化处理让每个特征均值归零、方差归一。我一般用标准分数变换代码里一行就能完成。做了这两步之后至少八成以上的“损失震荡”问题可以收敛。5.2 训练速度奇慢半天跑不完一轮现象小数据集上训练还好换了一批数据后每轮耗时增长几十倍一个epoch要等几分钟。原因批量梯度下降在样本量增长后每轮都要遍历全部样本计算梯度。如果坚持用全批次更新时间开销是线性甚至超线性增长的。解决换成小批量梯度下降。批次大小从64起步观察单轮耗时和收敛质量。还有一个并行化的思路是将特征矩阵按批次拆分后用多进程并行计算梯度再汇总但这一步要做梯度累加的边界处理纯粹为了演示就不用折腾了。5.3 逻辑回归正负例概率几乎都贴在0.5附近现象预测结果分布在0.48到0.52之间Sigmoid输出没有拉开差距分类效果和随机猜测差不多。原因特征与标签之间缺乏足够的线性可分关系Z值分布集中Sigmoid函数在0附近的斜率最大导致输出概率普遍往0.5挤压。另一个常见原因是正负样本比例严重失衡模型学到的是多数类先验。解决先看特征分布确认存在区别后再做特征工程构造交叉项或多项式特征然后处理样本不平衡常用手段是调整正负样本权重或者对多数类做下采样。如果处理后概率依然没有拉开那么说明这个问题的线性假设确实不成立应该换非线性模型。5.4 R²为负数或模型拟合效果不如均值现象R²计算出来是负数模型预测比直接用训练集均值作为预测还要差。原因线性模型形式与数据关系不匹配X与Y之间可能是曲线关系或者存在明显的异方差性而线性回归默认捕捉的是直线关系。解决画出真实值对预测值的散点图如果看到明显的曲线弯曲就在特征里加入平方项或交互项。如果残差出现喇叭形说明方差稳定假设不成立可以考虑对标签做对数变换。这个排查动作一定要在模型评估阶段做不要只看R²就下结论。5.5 特征矩阵求逆报错现象用正规方程求解时行列式为0或矩阵奇异代码直接抛异常即使没抛异常算出的参数也大得不合理。原因特征之间存在多重共线性两个特征高度线性相关XᵀX不可逆或者特征数量大于样本数量矩阵本身就不满秩。解决优先用梯度下降替代正规方程这条路避开了求逆步骤如果要继续用正规方程可以给XᵀX加一个小的正则化项λI岭回归的雏形让矩阵变得可逆。另外顺手检查一下特征相关性删除重复或近似重复的特征列能从根本上缓解这个问题。这5条基本都是复现和训练中的真实高频故障。我在模拟项目X上跑线性回归时第一条和第四条前后脚遇到处理后整个训练流程顺畅了不少。排查的顺序建议是先解决数据标准化和共线性再看学习率和批次大小最后才是特征形态问题。顺序反了容易浪费时间调一个没有意义的学习率。6. 验证一页纸推导用正规方程对照梯度下降结果学推导最大的困惑是不知道算得对不对。我常用的验证方法很简单一个线性回归模型分别用正规方程和梯度下降求解对比最终参数是否一致。这个方法成本极低却能在十分钟内验证明白整条推导链。取PPT里的5条样本数据把偏置项拼进特征矩阵构造X和yimport numpy as np X np.array([ [1, 4000, 25], [1, 8000, 30], [1, 5000, 28], [1, 7500, 33], [1, 12000, 40] ], dtypefloat) y np.array([20000, 70000, 35000, 50000, 85000], dtypefloat) theta_norm np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) print(正规方程参数:, theta_norm)代码逻辑是先用矩阵转置乘自身得到XᵀX求逆后乘Xᵀy得到闭式解。运行结果会得到一个包含偏置项和两个特征系数的一维数组。拿到这个结果后再用第三章的小批量梯度下降跑一遍把学习率调到0.01以下、迭代次数加大观察参数是否逼近同一组值。两次求解如果参数一致说明推导和代码实现都没有方向性错误如果不一致优先检查特征矩阵是否拼了偏置列、梯度里的残差方向是否写反。这两处是最高频的错误源。这份PPT里还有一处值得单独提炼的技巧把“误差服从高斯分布”到“最小二乘目标函数”的推导压缩成一页纸只写四个环节——误差分布、似然函数、对数化、求偏导。每写一个环节就停下来问一个问题这个推导用到了哪个假设每一步解决什么计算困难能答上来说明真的理解了而不是跟着PPT符号走。从那以后我每次做相关内容的分享都会强制先跑一遍正规方程对照梯度下降确认参数一致后再继续讲这个习惯帮我避开了无数次演示事故。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑