程序员的数学基础课
黄申
LinkedIn 资深数据科学家
83374 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
导读 (1讲)
基础思想篇 (18讲)
程序员的数学基础课
15
15
1.0x
00:00/00:00
登录|注册

40 | 线性回归(中):如何使用最小二乘法进行直线拟合?

步骤e:常量对于变量求导为0
步骤d:d(tr(BXXB))dB=2XXB\frac{d(tr(B'X'XB))}{dB}=2X'XB
步骤c:d(tr(BXY))dB=XY\frac{d(tr(B'X'Y))}{dB}=X'Y
步骤b:(XBY)=BXY(XB-Y)'=B'X'-Y'
步骤a:(XB)=BX(XB)'=B'X'
计算误差的Python代码
最小二乘法的定义和作用
为什么线性方程组无法满足线性函数拟合的需求
步骤d的证明
步骤c的证明
步骤b的证明
步骤a的证明
推导过程
最小二乘问题的矩阵形式
误差的平方和最小化
求解未知参数的思想
图示说明观测数据的线性关系
观测数据之间的线性关系
拟合模型的定义
多元线性回归模型
允许误差ε的存在
线性回归和线性方程组的区别
思考题
总结
补充证明和解释
最小二乘法
使用观测值拟合
如何使用最小二乘法进行直线拟合?

该思维导图由 AI 生成,仅供参考

你好,我是黄申。
上一节,我提到了,求解线性回归和普通的线性方程组最大的不同在于误差ε。在求解线性方程组的时候,我们并不考虑误差的存在,因此存在无解的可能。而线性回归允许误差ε的存在,我们要做的就是尽量把ε最小化,并控制在一定范围之内。这样我们就可以求方程的近似解。而这种近似解对于海量的大数据分析来说是非常重要的。
但是现实中的数据一定存在由于各种各样原因所导致的误差,因此即使自变量和因变量之间存在线性关系,也基本上不可能完美符合这种线性关系。总的来说,线性回归分析并不一定需要 100% 精确,而误差ε的存在可以帮助我们降低对精度的要求。通常,多元线性回归会写作:
这里的 是自变量, 是因变量, 是截距,,…, 是自变量的系数, 是随机误差。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

最小二乘法是线性回归中的重要方法,通过最小化误差的平方和来寻找与观测数据最匹配的函数。该方法通过矩阵运算求解未知参数,使得理论值与观测值之差的平方和最小化。在实际数据分析中具有重要意义,能够帮助降低对精度的要求,对大数据分析尤为重要。文章还介绍了极值的概念和如何使用求导获取极小值,以及最小二乘法的理论推导过程。下一步将通过具体例子和Python代码验证最终结果。文章还提出了思考题,要求读者使用Boston Housing数据计算样本因变量预测值和真实值之间的误差。整体而言,本文深入探讨了最小二乘法的原理和应用,为读者提供了理论和实践结合的学习体验。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的数学基础课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • Peng
    老师,线性代数这部分开始很难看懂了,是不是需要先复习一遍线代?请老师指点,明确课程前置条件。

    作者回复: 线性代数基础应该就够了,或者是根据我课程的内容有针对性的补一下,这样效率比较高

    2019-03-18
    6
  • 罗耀龙@坐忘
    茶艺师学编程 刚打开课文,“哇,全是公式,AWSL。” 但真的学下来,脑子居然蹦出来说:“啊,我能跟上!”(手斜眼看着脑) 这节课我是这么消化的: 最小二乘(平方)法,就是在考虑误差的情况下,求解一组方程组的系数矩阵B,并且确保误差最小。按照这样的要求,系数矩阵B=(X’X)^(-1)X’Y。 这节课就是*花大力气*在推导B是怎么来的。 在推导过程中,矩阵操作是主线,tr()对角线加和、矩阵点乘的转置/逆。而在确保误差最小时,线性函数的求导操作起大作用,一阶导数为0表示函数为“极值”,二阶导数>0表示该“极值”为“最小值”(反之为“最大值”)。 感觉回到了大学,但在大学没能现在理解如此清晰···············不愧是黄老师!

    作者回复: 嗯,一步步来,总能理解

    2020-05-04
    3
  • zzz
    不太明白为什么要取tr()

    作者回复: 你可以看下L2范式的定义,就能明白为什么我们只关心对角线上的值

    2019-04-08
    3
  • howhigh
    黄老师,关于矩阵求导的步骤我依然没有看懂,有没有矩阵求导的资料推荐?

    作者回复: 其实如果你理解了一般函数的求导,矩阵求导并不难理解。你可把矩阵先简化为向量,也就是单个方程式来看,然后整个矩阵就是不同向量的集合。

    2019-03-21
    3
  • 米饭
    分享一下国外的网站“数学乐“,里面对于一些数学概念,运算法则讲的很形象具体 就比如这节课的重点就在如何求ε的最小值,这里用到了导数的概念,可以参考用导数求极大值极小值(https://www.shuxuele.com/calculus/maxima-minima.html) 对于我这种数学渣也能快速理解

    作者回复: 感谢推荐,我也去看了,不过你确定是国外的网站吗?都是中文的内容,不过节约阅读时间了:)

    2020-08-24
    2
  • qinggeouye
    补充证明的步骤 d ,tr(B'X'XB) 对 矩阵 B 的求导,拆成了两部分 tr(B'(X'XB)) 、tr((B'X'X)B) 分别对 B 求导,求和;意思是 B' 和 B 实际上都与矩阵B相关,第一部分求导相当于固定 B 再对 B 求导,第二部分固定 B‘ 后对 B 求导,而后两部分利用了补充证明步骤 c 的结论得出证明结果?

    作者回复: 是的

    2019-03-30
    2
    2
  • 骑行的掌柜J
    感觉零基础的我看懂了七七八八。。。但是在求导那里有点懵 还是下来好好补一下线代 思考题这个“计算 train.csv 中所有样本因变量预测值和真实值之间的误差。”是指的MSE吗?黄老师 如果是 那么我用traIn_test_split 把训练集和测试集 按默认的测试集占比33%划分数据集后 最后拟合得到的MSE 是 23.4644515655 但是按8: 2划分后 MSE 是 23.4148125597 发现多运行几次 会有不一样的MSE 。。。这是怎么回事呢 黄老师 谢谢

    作者回复: MSE是指Mean Square Error,常用语线性分析中的误差分析。至于你说的MSE会变化的问题,我认为是和数据划分有关的,具体你可以参考第32讲,有关机器学习中的拟合。即使是同一个标注样本,如果训练和测试的划分不同,也会导致训练集中的数据分布和测试集的不一样,这就会产生新的MSE。除非你能确保每次的训练集和测试集完全一样,MSE才会一样。不过,人们通常都希望尝试不同的训练、测试划分,例如交叉验证,这样能避免误差计算的偶然性

    2020-07-02
    1
  • liying
    老师,课程中好像缺步骤b的证明公式

    作者回复: 我的原文是有的,可能是系统显示问题,我让编辑同学看看,谢谢提醒

    2020-04-28
    2
    1
  • 逐风随想
    黄老师,越到后面越吃力,怎么办。当年家里条件不好,读到初二就辍学出去工作了。是否需要从新把初中到大学的数学知识补一补呢?

    作者回复: 咱们这个专栏还是讲究实用性,从应用和需求出发。如果觉得有些知识需要补,我的建议是根据不理解知识点出发,逐步倒推,缺啥补啥,一定会有收获

    2019-03-31
    1
  • 拉欧
    今天的数学推导看的有点吃力,不过还好

    作者回复: 加油加油 一步步来

    2019-03-18
    1
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部