当前位置: 首页 > news >正文

【机器学习】线性回归数学推导

从零开始机器学习001-线性回归数学推导

陆永剑讲师关注1人评论58872人阅读2017-12-17 18:14:48

机器学习中回归是同学们在学习过程中重要的一环。无论是面试还是实际应用都会经常用到。很多人都会使用线性回归,那么有多少人知道线性回归是怎么来的呢?如果想让自己在机器学习的方向上更有价值,数学方面的推导必不可少。今天就给大家讲解下回归中比较重要的线性回归的数学推导。

老师的课程1.从零开始进行机器学习2.机器学习数学基础(根据学生需求不断更新)3.机器学习Python基础4.最适合程序员的方式学习TensorFlow

线性回归的公式

从零开始机器学习001-线性回归数学推导

线性回归的数学推导主要涉及到以下几个知识点。

1. 利用矩阵的知识对线性公式进行整合

2. 误差项的分析

3. 似然函数的理解

4. 矩阵求偏导

5. 线性回归的最终求解


我们先来看下这个图

姓名工资(元)房屋面积(平方米)可贷款金额(元)
张三60005830000
李四90007755010
王五110008973542
陆永剑150005463201

这个是近期比较火的现金贷产品的贷款额度。这个表格表示的是可贷款的金额 与 工资 和 房屋面积之间的关系,其中 工资 和 房屋面积 为 特征,可贷款金额为目标函数值。
那么根据线性函数可得到以下公式。

从零开始机器学习001-线性回归数学推导

上面的这个式子是当一个模型只有两个特征(x1,x2)的时候的线性回归式子。 
正常情况下,现金贷中可贷款的额度和用户的很多特征相关联,并不只是简单的这两个特征。所以我们需要把这个式子进行通用化。
假如有n个特征的话,那么式子就会变成下面的样子
从零开始机器学习001-线性回归数学推导

上面的式子是一个多项求和的式子,用机器学习的思想,怎么把这个式子聚合一下呢?
因为机器学习中基本上都是用矩阵的方式来表示参数的,也就是说我们需要把这个多项求和的式子用矩阵的方式表达出来,这样才方便后续的计算。
从零开始机器学习001-线性回归数学推导

我们把权重参数和特征参数,都看成是1行n列的矩阵(或者是行向量)。那么就可以根据矩阵乘法的相关知识,把上述多项求和的式子,转换成矩阵的乘法的表达式。
由此我们就把多项求和化简称了
从零开始机器学习001-线性回归数学推导

这个就是第一步,利用矩阵的知识对线性公式进行整合。
接着我们来看第二步,误差项的分析
从零开始机器学习001-线性回归数学推导

式子里面其实并不是只有W*X吧? 还有一个参数b。也就是我们说的偏移量,或者叫做误差项。
我们先来看下面的这个图
从零开始机器学习001-线性回归数学推导

图中的横坐标X1 和 X2 分别代表着 两个特征(工资、房屋平米) 。纵坐标Y代表目标(可贷款的额度)。其中红点代表的就是实际的目标值(每个人可贷款的额度).而平面上和红点竖向相交的点代表着我们根据线性回归模型得到的点。也就是说实际得到的钱和预估的钱之间是有一定误差的,这个就是误差项。
因为误差项是真实值和误差值之间的一个差距。那么肯定我们希望误差项越小越好。
从零开始机器学习001-线性回归数学推导

我们根据实际情况,假设认为这个误差项是满足以下几个条件的。
从零开始机器学习001-线性回归数学推导

1.独立:张三和李四一起使用这款产品,可贷款额互不影响
2.同分布:张三和李四是使用的是同一款产品
3.高斯分布:绝大多数的情况下,在一个的空间内浮动不大
下面是高斯分布的图,忘记的同学们可以回忆下。
从零开始机器学习001-线性回归数学推导

第三步. 似然函数的理解
由前面两步,我们已经把线性回归模型,推导成下面的这个式子了。

从零开始机器学习001-线性回归数学推导

第二步,已经知道误差项是符合高斯分布的,所以误差项的概率值就是下面的式子。
从零开始机器学习001-线性回归数学推导

再把误差值带入到这个式子里面,就得到了下面的式子。
从零开始机器学习001-线性回归数学推导

误差项肯定是越小越好了,那么接下来要讨论的就是什么样的参数和特征的组合能够让误差项最小呢? 这里就引入了似然函数的作用。似然函数的作用就是要根据样本来求什么样的参数和特征的组成能够最接近真实值。越接近真实值则误差越小。

从零开始机器学习001-线性回归数学推导

似然函数就是求能让真实值和预测值相等的那个参数的。
从零开始机器学习001-线性回归数学推导

上面的式子是多个参数的乘积的形式,很难进行计算,所以我们又采用了对数的一个小技巧,把多个数相乘,转化成多个数相加的形式。
从零开始机器学习001-线性回归数学推导

根据上面的这种换算关系,我们就把似然函数的式子换算成下面的这个。
(因为似然函数是越大越好,似然函数的值和对数似然函数的值是成正比的,对值求对数,并不会影响到最后求极限的值。所以才敢进行对数处理。)
从零开始机器学习001-线性回归数学推导

对上面的式子进行整合,得到
从零开始机器学习001-线性回归数学推导
从零开始机器学习001-线性回归数学推导

通过上面一系列推导,就把式子转化为最小二乘法的相关知识了。
这就是在线性回归中使用似然函数的相关知识。
---【如果想了解更多的数学基础知识,及机器学习的相关课程,请点击下面链接】
---【从零开始学习机器学习,包含全套的机器学习课程】

接着看下一步:矩阵求偏导
怎么计算最小二乘法的公式的最小值。这里面就要涉及到导数的相关知识了,
求之前,我们根据矩阵的知识,把上面的式子再转换一下。

从零开始机器学习001-线性回归数学推导

把这个式子求一下偏导。

从零开始机器学习001-线性回归数学推导

上面的公式里面还涉及到矩阵转置的性质。想了解矩阵转置的性质,请点击此链接【机器学习数学基础】。

将打开的式子,根据矩阵求导的三个重要公式

从零开始机器学习001-线性回归数学推导

我们就可以把偏导的值求出来,
从零开始机器学习001-线性回归数学推导

最终得到结果:
从零开始机器学习001-线性回归数学推导

X和Y都是已知的,那么得到了最终的参数值。

原文:http://blog.51cto.com/12133258/2051527

相关文章:

  • 【VS消除警告】VS消除特定警告/安全函数警告C4996 strncpy unsafe……
  • CSDN 博客备份工具
  • 【FTP】linux FTP传文件到windows
  • 【VS】在VS中添加lib库的三种方法
  • 【合并lib】windows下多个lib合并的方法|查看lib是导入库还是静态库
  • 【python】anaconda 安装第三方包
  • 【IP/TCP】127.0.0.1和localhost和本机IP三者的区别
  • 【C/C++相互调用】C调用C++库和C++调用C库的方法
  • [STL]C++ STL中常见容器的时间复杂度
  • 【STL map】map用法、插入方法、pair和make_pair的区别
  • 【字符编码】 简洁理解ANSI,UTF8,Unicode,ASCII编码的差别
  • [MYSQL]mysql将两个表结果合并到一起
  • 【MYSQL】mysql把字段进行逗号分隔成多条数据
  • 【python备份】Python备份CSDN完整博客 研读
  • 【python】Python中yield的理解与使用|python生成器
  • 4个实用的微服务测试策略
  • Java精华积累:初学者都应该搞懂的问题
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • npx命令介绍
  • rabbitmq延迟消息示例
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 多线程 start 和 run 方法到底有什么区别?
  • 后端_MYSQL
  • 计算机在识别图像时“看到”了什么?
  • 数据可视化之 Sankey 桑基图的实现
  • 双管齐下,VMware的容器新战略
  • 微信开源mars源码分析1—上层samples分析
  • 新书推荐|Windows黑客编程技术详解
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #1014 : Trie树
  • #162 (Div. 2)
  • (13)Hive调优——动态分区导致的小文件问题
  • (C++17) std算法之执行策略 execution
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八)Spring源码解析:Spring MVC
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (十八)SpringBoot之发送QQ邮件
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)VC++中ondraw在什么时候调用的
  • ***监测系统的构建(chkrootkit )
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net中的Queue和Stack
  • .sh
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /etc/fstab和/etc/mtab的区别
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [04] Android逐帧动画(一)
  • [2018-01-08] Python强化周的第一天
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [AIGC] SQL中的数据添加和操作:数据类型介绍