
回归问题提出
首先需要明确回归问题的根本目的在于预测。对于某个问题,一般我们不可能测量出每一种情况(工作量太大),故多是测量一组数据,基于此数据去预测其他未测量数据。
比如课程给出的房屋面积、房间数与价格的对应关系,如下表:
若要测量出所有情况,不知得测到猴年马月了。有了上面这一组测量数据,我们要估计出一套房子(如2800平方英尺5个房间)的价格,此时回归算法就可以荣耀登场了。
回归算法推导
有了上面这个问题,如何来估计房子的价格呢?首先需要建立模型,一种最简单的模型就是线性模型了,写成函数就是:
其中x1x1是房子面积,x2x2是房间数,hh是对应的房子面积,θjθj就是我们需要求的系数。
对于每个具体问题,需要根据测量数据的情况来确定是否为线性。这里假设为线性模型会限制适用范围,如果房屋面积与价格不是线性关系,则此模型估计的房子价格可能会偏差很大。因此实际上这里也可以假设为其他关系(如指数、对数等),那么估计结果可能就极度不准确了,当然那也就不是线性回归,这里就不必讨论。具体为什么选择线性模型,将在后面广义回归模型中来解答。
上面公式写成向量形式,则为
其中
那么上面的测量数据可以表示为,其中的y为测量的房屋面积。这样如何根据这m个测量数据来求解参数θθ就是我们需要解决的问题了。
我们可以通过保证此组测量的预测误差最小来约束求解。代价函数为
该代价函数表达的是测量数据的均方误差和。通过最小化该代价函数,即可估计出参数θθ。前面那个1/2并没有实质意义,主要为了后面求导方便加的;实际上为1/m更具有绝对意义。
回归算法求解
如何求解上述问题?主要有梯度下降法,牛顿迭代法,最小二乘法。这里主要讲梯度下降法,因为该方法在后面使用较多,如神经网络、增强学习等求解都是使用梯度下降。
函数在沿着其梯度方向增加最快的,那么要找到该函数的最小值,可以沿着梯度的反方向来迭代寻找。也就是说,给定一个初始位置后,寻找当前位置函数减小最快的方向,加上一定步长即可到达下一位置,然后再寻找下一位置最快的方向来到达再下一个位置……,直至其收敛。上述过程用公式表达出来即如下所示:
根据上述表达式,可以求得代价函数的偏导数为:
这样,迭代规则为
这个公式即是所谓的批量梯度下降。仔细观察该公式,每次迭代都需要把m个样本全部计算一遍,如果m很大时,其迭代将非常慢,因此一种每次迭代只计算1个样本的随机梯度下降(或增量梯度下降)可以极大减少运算量,其迭代如下:
若所有样本迭代完成后还未收敛,则继续从第1个样本开始迭代。
算法实现与结果
首先使用下面代码生成一组数据,为了后续显示方便,数据为一条直线上叠加一定噪声:
View Code
数据显示出来如下图:
线性回归函数使用梯度下降求解:
View Code
测试函数:
View Code
实际上上述代码中真正涉及算法求解的不多,其他都是保存中间结果和绘图等用于调试分析的。回归结果如图,蓝色点为上面保存的数据,红色直线是回归拟合的直线:
其中每次迭代后,代价函数J的变化则如下图(考虑其范围过大,绘制的是其对数图):
可以看出,当迭代超过1000次时,代价函数已经基本不变了。梯度下降迭代过程如下左图,xy坐标分别为θ0和θ1θ0和θ1,z轴为对应θθ的代价函数值,图中心的红色小块是真实的最优值,绿色方块是每次迭代的位置,可以看到迭代过程是不断靠近最优解。由于图中绿色方块重叠过多导致绘图出来中间部分显示为黑色了,右图为局部放大的结果。
算法分析
1. 梯度下降法中,BatchSize为一次迭代使用的样本数量,当其为m时,即为批量梯度下降,为1时即是随机梯度下降。实验效果显示,BatchSize越大,迭代越耗时,但其收敛越稳定;反之,则迭代越快,而易产生振荡现象;具体可修改测试代码中的BatchSize来看实验结果。
2. 关于步长的选择。在梯度下降法中,步长的影响是非常大的,步长过小会导致收敛非常慢,过大则容易导致不收敛。上述程序中的步长是经过若干次运行修改的,换一组其他数据可能不收敛,这是该程序存在的问题,待回归算法完结后将专门来一篇分析该问题,并给出解决方法。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据成为新时代“石油”的今天,几乎每个职场人都在焦虑: “为什么别人能用数据驱动决策、升职加薪,而我面对Excel表格却无从 ...
2025-10-18数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15在机器学习入门领域,“鸢尾花数据集(Iris Dataset)” 是理解 “特征值” 与 “目标值” 的最佳案例 —— 它结构清晰、维度适 ...
2025-10-15在数据驱动的业务场景中,零散的指标(如 “GMV”“复购率”)就像 “散落的零件”,无法支撑系统性决策;而科学的指标体系,则 ...
2025-10-15在神经网络模型设计中,“隐藏层层数” 是决定模型能力与效率的核心参数之一 —— 层数过少,模型可能 “欠拟合”(无法捕捉数据 ...
2025-10-14在数字化浪潮中,数据分析师已成为企业 “从数据中挖掘价值” 的核心角色 —— 他们既要能从海量数据中提取有效信息,又要能将分 ...
2025-10-14在企业数据驱动的实践中,“指标混乱” 是最常见的痛点:运营部门说 “复购率 15%”,产品部门说 “复购率 8%”,实则是两者对 ...
2025-10-14在手游行业,“次日留存率” 是衡量一款游戏生死的 “第一道关卡”—— 它不仅反映了玩家对游戏的初始接受度,更直接决定了后续 ...
2025-10-13分库分表,为何而生? 在信息技术发展的早期阶段,数据量相对较小,业务逻辑也较为简单,单库单表的数据库架构就能够满足大多数 ...
2025-10-13在企业数字化转型过程中,“数据孤岛” 是普遍面临的痛点:用户数据散落在 APP 日志、注册系统、客服记录中,订单数据分散在交易 ...
2025-10-13在数字化时代,用户的每一次行为 —— 从电商平台的 “浏览→加购→购买”,到视频 APP 的 “打开→搜索→观看→收藏”,再到银 ...
2025-10-11在机器学习建模流程中,“特征重要性分析” 是连接 “数据” 与 “业务” 的关键桥梁 —— 它不仅能帮我们筛选冗余特征、提升模 ...
2025-10-11在企业的数据体系中,未经分类的数据如同 “杂乱无章的仓库”—— 用户行为日志、订单记录、商品信息混杂存储,CDA(Certified D ...
2025-10-11在 SQL Server 数据库操作中,“数据类型转换” 是高频需求 —— 无论是将字符串格式的日期转为datetime用于筛选,还是将数值转 ...
2025-10-10