最小二乘

1.最小二乘的背景

这种东东的来源,比较容易找到而且比较靠谱的途径自然是wiki百科了,以下部分的内容来自wiki百科: 
1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥伯斯根据高斯计算出来的轨道重新发现了谷神星。 
高斯使用的最小二乘法的方法发表于1809年他的著作《天体运动论》中,而法国科学家勒让德于1806年独立发现“最小二乘法”,但因不为世人所知而默默无闻。两人曾为谁最早创立最小二乘法原理发生争执。1829年,高斯提供了最小二乘法的优化效果强于其他方法的证明,见高斯-马尔可夫定理。

2.举个最简单的例子理解最小二乘

现在大家都越来越重视自己的身体健康。现代人最常见的亚健康问题就是肥胖,本博主身体棒棒哒,唯一困扰本博主的健康问题就是超重。(好吧,承认自己是个死胖子就完了) 
假设身高是变量X,体重是变量Y,我们都知道身高与体重有比较直接的关系。生活经验告诉我们:一般身高比较高的人,体重也会比较大。但是这只是我们直观的感受,只是很粗略的定性的分析。在数学世界里,我们大部分时候需要进行严格的定量计算:能不能根据一个人的身高,通过一个式子就能计算出他或者她的标准体重? 
接下来,我们肯定会找一堆人进行采用(请允许我把各位当成一个样本)。采样的数据,自然就是各位的身高与体重。(为了方便计算与说明,请允许我只对男生采样)经过采样以后,我们肯定会得到一堆数据(x1,y1),(x2,y2),⋯,(xn,yn),其中x是身高,y是体重。 
得到这堆数据以后,接下来肯定是要处理这堆数据了。生活常识告诉我们:身高与体重是一个近似的线性关系,用最简单的数学语言来描述就是y=β0+β1x。于是,接下来的任务就变成了:怎么根据我们现在得到的采样数据,求出这个β0与β1呢?这个时候,就轮到最小二乘法发飙显示威力了。

3.最小二乘的cost function

在讲最小二乘的详情之前,首先明确两点:1.我们假设在测量系统中不存在有系统误差,只存在有纯偶然误差。比如体重计或者身高计本身有问题,测量出来的数据都偏大或者都偏小,这种误差是绝对不存在的。(或者说这不能叫误差,这叫错误)2.误差是符合正态分布的,因此最后误差的均值为0(这一点很重要) 
明确了上面两点以后,重点来了:为了计算β0,β1的值,我们采取如下规则:

β0,β1应该使计算出来的函数曲线与观察值的差的平方和最小。用数学公式描述就是: 


其中,yie表示根据y=β0+β1x估算出来的值,yi是观察得到的真实值。

可能有很多同学就会不服了,凭什么要用差的平方和最小勒?用差的绝对值不行么?不要骗我们好不好? 
本博主不敢骗大家,为了让大家相信,特意找了一种本博主认为比较靠谱的解释: 
我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP[-(ΔYi)^2]。(EXP(..) 代表以常数 e 为底的多少次方)。 
所以我们在前面的两点里提到,假设误差的分布要为一个正态分布,原因就在这里了。 
另外说一点我自己的理解:从数学处理的角度来说,绝对值的数学处理过程,比平方和的处理要复杂很多。搞过机器学习的同学都知道,L1正则就是绝对值的方式,而L2正则是平方和的形式。L1能产生稀疏的特征,这对大规模的机器学习灰常灰常重要。但是L1的求解过程,实在是太过蛋疼。所以即使L1能产生稀疏特征,不到万不得已,我们也还是宁可用L2正则,因为L2正则计算起来方便得多。。。

4.最小二乘法的求解

明确了前面的cost function以后,后面的优化求解过程反倒变得so easy了。 
样本的回归模型很容易得出: 

现在需要确定β0、β1,使cost function最小。学过高数的同志们都清楚,求导就OK。对于这种形式的函数求导,

将这两个方程稍微整理一下,使用克莱姆法则,很容易求解得出:

因为求和符号比较多,省略了上标与下标。 
根据这个公式,就可以求解出相应的参数。 
对应上面的身高体重关系的例子,我们只需要将采样得到的数据,一一代入即可求解。

 

5.矩阵表达形式

如果我们推广到更一般的情况,假如有更多的模型变量x1,x2,⋯,xm(注意:x1是指 一个样本,x1是指样本里的一个模型相关的变量),可以用线性函数表示如下: 

 

对于n个样本来说,可以用如下线性方程组表示:

如果将样本矩阵记为矩阵A,将参数矩阵记为向量β,真实值记为向量Y,上述线性方程组可以表示为:

即Aβ=Y
对于最小二乘来说,最终的矩阵表达形式可以表示为:

最后的最优解为:

6.注意事项

经典的最小二乘法使用起来够简单粗暴,计算过程也不复杂。但是一个致命的问题就是其对噪声的容忍度很低。试想一下,如果前面我们得到的总采样数据为100个,但是里面有几个大胖子,这几个大胖子就相当于不是普通人的身高-体重系数,他们就是噪声了。如果不采取一些手段对这几个噪声样本进行处理,最后计算出来的身高-体重系数肯定会比正常值要偏大。 
对于噪声的处理,比如有加权最小二乘等方法,后续有时间跟大家再讲讲。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

团队冲刺计划第八天

1、 所有工作的预期时间:96h 目前已经花的时间:78h 还剩余的时间:18h 2、任务看板 3、冲刺会议照片: 4、燃尽图: 转载于:https://www.cnblogs.com/532BEST/p/10871189.html

[Linux]Linux下经常会用到的简单实例(持续更新)

1、查找某些进程并结束他们: ps -elf | grep 进程关键字 | awk {print $4}| xargs kill -9 解析: ps -elf 的 -e 代表列出所有进程,-l 代表长格式,-f 代表完整的格式 grep的工作方式是这样的,它在一个或多个文件中搜索…

elupload获取文件名与路径_Uipath获取文件名,路径,扩展名等操作

Uipath获取文件名,路径,扩展名等操作东京IT青年前线​www.rpatokyo.com使用Assign Activity,声明一个字符串变量为str获取文件路径代码System.IO.Path.GetDirectoryName(“C:UsersAdministratorDesktop备课二回目css基础.pptx”)运行&#xf…

servlet3.0新特性_查看Servlet 3.0的新增功能

servlet3.0新特性随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化。 在本文中,我将介绍有关Web应用程序开发的一些更改。 首先,请告别web.xml部署描述符(至少是其中的一部分)。 好吧&am…

Android(2)-----Fragment //(第七周后的知识)

1、Fragmentandroid.app.Fragment版本://v4版本是为了由3.0向下兼容到1.6,改那个Fragment文件里的import android.support.v4.app.Fragment;换成 import android.app.Fragment;!!!!!&#xff01…

延迟加载是一种代码气味

您见过那些具有许多属性的巨大物体吗? 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载? 我敢打赌你有这种令人怀疑的快乐。 今天,我想与大家分享我对它们的印象- 使用延迟加载应该被视为一种代码味道! 让我解释…

c#时间函数

我们可以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04)、时间(12:12:12)、日期时间(2008-09-04 12&…

gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具

本文要推荐的[TOOLFK]在线汉字/字母/人民币/简繁体转换工具,提供简繁体在线转换、人民币大写转换、字母大小写互转、汉字转拼音在线日常使用工具。網站名稱:ToolFk網站鏈結:https://www.toolfk.com/工具链接:https://www.toolfk.com/tool-onl…

hive的metatable学习

一、存储Hive版本的元数据表(VERSION)   二、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS) DBS --存储Hive中所有数据库的基本信息   DATABASE_PARAMS --该表存储数据库的相…

clickhouse官方文档_clickhouse分析:结合grafana和metabase完成监控和数据分析

点击上方蓝字关注我们“ 关于clickhouse的监控和可视化界面,想必刚接触到ch的人是一头雾水,大厂往往会给ch集群定制各种监控和可视化分析,普通用户就需要我们自己寻求现成的开源工具,在一些常见的开源工具上,我们可以较…

hazelcast_带弹簧的Hazelcast分布式执行

hazelcastExecutorService功能是Java 5附带的,位于java.util.concurrent包中。 它扩展了Executor接口,并提供了线程池功能来执行异步简短任务。 建议使用Java Executor服务类型来查看基本的ExecutorService实现。 ThreadPoolExecutor也是ExecutorServic…

OpenCV测试程序

#include<opencv2\opencv.hpp> using namespace cv; int main() {Mat picture imread("1.jpg");//图片必须添加到工程目下//也就是和test.cpp文件放在一个文件夹下&#xff01;&#xff01;&#xff01;imshow("测试程序", picture);waitKey(201509…

Java中的do-while循环——通过示例学习Java编程(11)

作者&#xff1a;CHAITANYA SINGH 来源&#xff1a;https://www.koofun.com/pro/kfpostsdetail?kfpostsid22&cid0 在上一篇教程中&#xff0c;我们讨论了while循环。在本教程中&#xff0c;我们将讨论java中的do-while循环。do-while循环类似于while循环&#xff0c;但是它…

centos7离线安装mysql_Centos7离线安装metasploit详细教程

最近需在内网服务器搭建安全工具环境&#xff0c;苦于内网服务器无法访问互联网&#xff0c;需要很多依赖包比较麻烦&#xff0c;尤其metasploit无互联网安装特别麻烦&#xff0c;而且网上metasploit的安装教程均是在线一键安装教程&#xff0c;对于无法访问互联网的服务器进行…

净资产的结构

Netty的包装结构很棒。 每个程序员都应该研究它。 每个系统都应该模仿它&#xff1b; 每个项目经理都应将其打印出来&#xff0c;拍在墙上&#xff0c;然后对开发人员说&#xff1a;“那样。” Netty是一个“……用于快速开发可维护的高性能协议服务器和客户端的异步事件驱动…

常用的HTTP响应头

响应头 说明 示例 状态 Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Access-Control-Allow-Origin: * 临时 Accept-Patch 指定服务器所支持的文档补丁格式 Accept-Patch: text/example;charsetutf-8 固定 Accept-Ranges 服务器所支持的内容范围 …

iframe嵌入页面白屏_封闭在家学网页制作!为页面嵌入PDF文件——零基础自学网页制作

在页面中嵌入PDF文件在上一篇《在html页面中嵌入其他页面的方法——零基础自学网页制作》(结尾见目录)中我们学习了如何在页面中嵌入其他页面的操作。今天我们来嵌入一个pdf文件。其实使用示例代码如下&#xff1a;页面效果如下&#xff1a;考虑到pdf的版权问题就不给大家上传云…

ITK读取RGB图像像素值

/*这个程序接收输入参数作为文件路径&#xff0c; 读取指定的图片数据&#xff08;RGB&#xff09;&#xff0c; 并显示指定位置的像素值。&#xff08;这里是[0,0]位置&#xff09; */ #include "itkImage.h" #include "itkRGBPixel.h" #include "…

微小宝公众号排行榜_排行榜 | 山西省高校、高职中专微信公众号周数据排行榜...

戳上面的蓝字关注我们哦&#xff01;《山西教育》杂志社公众号“山西教育杂志”微信号shanxi_jiaoyu山西教育杂志社山西教育山西省高校微信公众号2020年周数据分析11月22日至11月28日WCI指数 通过微信公众号推送文章的传播度、覆盖度及公号的成熟度和影响力&#xff0c;来反映微…

二阶段冲刺第七天

站立会议时间&#xff1a;5.15 站立会议地点&#xff1a; 站立会议内容&#xff1a; 王建宁&#xff1a; 昨天把管理员界面上的listview添加了点击事件&#xff0c;点击进去可以填写维修信息&#xff0c;也可以对维修信息进行更改 今天制作管理员界面&#xff0c;长按对反馈信息…