ML- 线性回归推导
线性回归, 这部分算是我最为擅长的了, 真的不吹, 6年经验, 我高中时代就已经会推导了, 当然是最最小二乘法和统计学(假设检验, 参数分布等)的角度.
后来上了大学, 又是从最小二乘和统计学角度, 最终呢, 还是从线性代数(向量投影) 和 微积分 角度 + 代码实现给整了一遍, 再后来就是ML, 撸了一遍梯度下降, 嗯, 整体感悟就是,对一个事物的认知, 需要一个时间的过程和实践.
正如古人所讲, 纸上来得终觉浅, 绝知此事要躬行.
回归模型
数据:
\((y_i, X_{i1}, X_{i2}...X_{ip}), \ i = 1,2,3...n\)
y 是一个向量, X是一个矩阵
样本 X 是一个 nxp 的矩阵, 每一行是表示一个样本, 对应一个目标值
y 是由这 p 个(维) 列向量 线性组合 而成, 因此叫线性回归.
模型:
\(y_i = \beta_0 +\beta_1 X_{i1} + \beta_2 X_{i2} + \beta_p X_{il} + \epsilon_i, \ i=1,2,...n\)
\(\epsilon \backsim N(0, \sigma)\) , 为啥误差的均值是0, 参考大数定律呗.(总体和样本的关系)
写为矩阵的形式:
\(y = X\beta + \epsilon\)
X 是 nxp, \(\beta\) 是 px1, y 是 nx1
误差函数:
\(J(\beta) = ||X\beta - y||^2\)
\(X\beta - y\) 表示两个列向量相减, 表示两个向量 相似, 如果相似, 则对应的分量应该接近0, 这样得到的差向量, 对其求模, 就可衡量了.
当然, 之前在SVM 衡量相似 用的是 内积, 方法很多啦, 可解释就好.
最线性代数(投影)求解 \(\beta\)
涉及的现代知识有些多,不过这是必须的, 当你认识到本质的时候, 你会发现, 原来世界如此美妙.
这是为方便说明投影概念,我在2017年画的几张图.
\(\beta = (X^TX)^{-1}X^Ty\)
从向量投影角度: 参考MIT <线性代数> 最小二乘
\(y = X\beta\) 无解, 做一个变换, 等号两边左乘 \(X^T\) 求近似解(空间投影找近似)
\(X^Ty = X^TX\beta\)
$即: \beta = (XTX){-1}X^Ty $
感觉这是一个历史问题, 最小二乘在17-18世纪是非常火的, 但也是受到很多怀疑, 于是高斯这批人,就从概率的角度, 再对最小二乘法进行了一个推广, 也就差不多时大二的概率论书中的那个样子, 用似然来整的.
从微分(梯度)角度求解 \(\beta\)
\(J(\beta) = ||X\beta -y||^2\)
$ = (X\beta -y)^T (X\beta -y)$
\(= (\beta^T X^T -y^T) (X\beta -y)\)
\(=\beta^T X^T X \beta - \beta^T X^Ty - y^TX \beta + y^Ty\)
然后对 beta 求 偏导 = 0 即可
矩阵求导: http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=3274
矩阵求导讲起来有点复杂, 我目前都是记住了一些常用的形式的, 哈哈, CV 调参侠 一枚
\(\nabla_\beta J(\beta) = 0 = 2X^TX \beta - X^Ty - X^Ty\)
\(即X^TX\beta = X^Ty\)
$即: \beta = (XTX){-1}X^Ty $
矩阵来写确实很优美简洁, 但有些抽象,尤其是求导, 这样还有啥好处呢? 当然是非常容易写代码了呀
人们来理解矩阵是非常困难的 - 涉及很多思想和求解
but
计算机理解矩阵是非常容易的 - 就是多维数组而已啦
只需一行代码求解 参数 beta
def 求解线性回归_beta(A, b):
"""return 值 = (
ML- 线性回归推导的更多相关文章
- ML 线性回归Linear Regression
线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...
- 线性回归和梯度下降代码demo
程序所用文件:https://files.cnblogs.com/files/henuliulei/%E5%9B%9E%E5%BD%92%E5%88%86%E7%B1%BB%E6%95%B0%E6%8 ...
- programming-languages学习笔记--第4部分
programming-languages学习笔记–第4部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} program ...
- ML(3)——线性回归
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性 ...
- 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型
本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 闲话:二项Logistic回归是我去年入门机器学习时学的第一个模 ...
- 大叔学ML第四:线性回归正则化
目录 基本形式 梯度下降法中应用正则化项 正规方程中应用正则化项 小试牛刀 调用类库 扩展 正则:正则是一个汉语词汇,拼音为zhèng zé,基本意思是正其礼仪法则:正规:常规:正宗等.出自<楚 ...
- 大叔学ML第二:线性回归
目录 基本形式 求解参数\(\vec\theta\) 梯度下降法 正规方程导法 调用函数库 基本形式 线性回归非常直观简洁,是一种常用的回归模型,大叔总结如下: 设有样本\(X\)形如: \[\beg ...
- ML之多元线性回归
转自:http://www.cnblogs.com/zgw21cn/archive/2009/01/07/1361287.html 1.多元线性回归模型 假定被解释变量与多个解释变量之间具有线性关系, ...
- ml的线性回归应用(python语言)
线性回归的模型是:y=theta0*x+theta1 其中theta0,theta1是我们希望得到的系数和截距. 下面是代码实例: 1. 用自定义数据来看看格式: # -*- coding:utf ...
- 线性回归(Linear Regression)均方误差损失函数最小化时关于参数theta的解析解的推导(手写)
第一页纸定义了损失函数的样子, theta, X 和 y 的 shape, 以及最终的损失函数向量表现形式. 第二页纸抄上了几个要用到的矩阵求导公式,以及推导过程和结果. 要说明的是:推导结果与the ...
随机推荐
- Linux中一些命令的区别
1. yum provides 和 yum search provides是在文件中查找软件,类似于rpm -qf: search是查找软件包或其描述的关键字. 2. gzip 和 bzip2 对 ...
- notapad++正则替换
1.替换小数点后一位 XP_001663106.2XP_001662510.3XP_001655249.2XP_001655248.1NP_001165739.1 \.[0-9]或者\.\d #第一个 ...
- eclipse中自动生成serialVersionUID
serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性. 如果你修改代码重新部署后出现序列化错误,可以考虑给相应的类增加seri ...
- Web项目中使用Log4net 案例
简介: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日 ...
- JavaScriptDOM编程学习笔记(一)DOM概述
首先介绍下DOM,一套对文档的内容进行抽象和概念化的方法.即Document Object Model,当创建了一个网页并加载到Web浏览器中时,DOM就把编写的网页转换为一个文档对象,而通过浏览器提 ...
- Android Studio 之 Navigation【2.数据的传递】
Android Studio 之 Navigation[2.数据的传递和过渡动画] 在资源navigation资源的xml文件中,在[目标界面] detialFragment中点击,在右边 Argum ...
- 详解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
转载(https://www.jb51.net/article/130560.htm) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...
- 课后选做题-MyOD
课后选做题-MyOD od命令的了解 功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符.od命令系统默 ...
- c++primer(第五版) 阅读笔记
快速阅读一遍c++ primer,复习c++ 1.本书代码:http://www.informit.com/store/c-plus-plus-primer-9780321714114 2.本书结构:
- WebBrowser内存泄露
使用WebBrowser控件开发的程序,占用内存会随着时间不停增长,最终内存溢出导致崩溃.究其原因是由于其自身的缺陷造成的.每一次加载新页面,WebBrowser就会多占用10-20M内存,有资料说是 ...