最小二乘法

普通最小二乘OLS

血红的双手。 提交于 2019-12-05 15:34:29
https://www.datalearner.com/blog/1051539312290417 在统计学中,普通最小二乘法(OLS)是一种用于在线性回归模型中估计未知参数的线性最小二乘法。 OLS通过最小二乘法原则选择一组解释变量的线性函数的参数:最小化给定数据集中观察到的因变量(被预测变量的值)与预测变量之间残差的平方和。这篇博客将简要描述其参数的求解过程(模型的表示参考: 最小二乘法简介 )。 我们以一个二元数据为例,假设有一组数据 X=\{(x_1,y_1),\cdots,(x_m,y_m)\} X = { ( x ​ 1 ​ ​ , y ​ 1 ​ ​ ) , ⋯ , ( x ​ m ​ ​ , y ​ m ​ ​ ) } ,我们希望求出一条直线,来拟合这一组数据: y = x\beta + \beta_0 y = x β + β ​ 0 ​ ​ 残差平方和: S(\beta) = \sum_{i=0}^m (y_i - x_i\beta - \beta_0)^2 S ( β ) = ∑ ​ i = 0 ​ m ​ ​ ( y ​ i ​ ​ − x ​ i ​ ​ β − β ​ 0 ​ ​ ) ​ 2 ​ ​ 我们要求出 \beta β 和 \beta_0 β ​ 0 ​ ​ 使得上述目标函数取得最小值,显然,可以通过对 \beta β 和 \beta_0 β ​

最小二乘法推导

天涯浪子 提交于 2019-12-04 07:18:15
最小二乘法 最小二乘法可以更广泛地应用于非线性方程中,我们可以使用一些已知的离散的点,拟合出一条与这些离散点最为接近的曲线,从而可以分析出这些离散点的走向趋势。 设x和y之间的函数关系由直线方程:   y=ax+b 公式中有两个待定参数,b代表截距,a代表斜率。问题在于,如何找到“最合适”的a和b使得尽可能多的数据落在或者更加靠近这条拟合出来的直线上; 我们关心的是方程中的a和b,也就是说,在这个待定的方程中,a和b才是所求的变量,它们可以描述出x和y的关系。 所以我们接下来的任务就是找到一组最好的a和b。 我们对a和b的要求就是,使得所有x和y相对拟合直线的误差总和最小。也就是说,我们要考虑的是,要使这些数据点距离拟合直线的和最小,距离最短,这样就可以使得尽可能多的数据成为有效点。 最小二乘法的推导过程 一.是我们要将误差最小化 二.是我们将误差最小化的方法是使误差的平方和最小化。(用误差平方和最小化来约束误差的原因是要规避负数对计算的影响) 来源: https://www.cnblogs.com/-wenli/p/11846285.html

最小二乘思想

╄→гoц情女王★ 提交于 2019-12-04 04:57:57
线性回归预测的基础,最小二乘法,学习推导过程的时候,对这个概念不是特别清楚。在网上整理的这个正好可以满足我对它的理解,特此记录 在估计方法中,最大似然和最小二乘是经常被使用到的,其中的最小二乘更是回归的基础。楼主在刚接触最小二乘的时候曾经想过一个问题,为什么非要用平方?绝对值不行么?……很多问题萦绕脑中。略微整理了一下分享给大家: 1、什么是最小二乘思想? 简单地说,最小二乘的思想就是要使得 观测点和估计点的距离的平方和达到最小 .这里的“二乘”指的是用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小。从这个上也可以看出,最小二乘也可用于拟合数据模型。 这当中涉及到如下问题: ①观测点和距离点的距离: 这个距离也被称为误差。既然要估计,总希望找到最好的估计值,那么误差越小越好。 ②为什么是距离的平方和: 距离的平方和也就是误差的平方和,既然误差越小越好,那是否可以用绝对值来代替?;楼主觉得用绝对值代替的这个想法是可以的,只是在之后的运算求值时处理比较复杂。(楼主隐约记得取绝对值最小的方法好像是最小一乘法) ③为什么平方求解方便呢? 那就要从公式讲起了(楼主说好不上复杂公式推导的,好吧,这里就简单描述一下吧……) 设拟合直线是 ,距离(或误差)为 ,那么最小二乘的思想就是让等式 具有最小值

scipy中最小二乘法函数leastsq的用法及其实例应用

匿名 (未验证) 提交于 2019-12-03 00:22:01
机器学习中最小二乘法可以理解为就是通过最小化误差的平方和来寻找最佳的匹配函数。一般常用于曲线的拟合。 关于曲线的拟合,就是求出最佳的k,b的值来找出好的曲线实现好的分类效果。 一般情况下拟合的曲线为k*x+b一次函数,不过如果需要拟合的函数不是一次函数,就比较麻烦了。python的科学计算包scipy的里面提供了一个函数,可以求出任意的想要拟合的函数的参数。那就是scipy.optimize包里面的leastsq函数。函数原型是 leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=0.0, factor=100, diag=None, warning=True) 一般我们只要指定前三个参数就可以了: func 是我们自己定义的一个计算误差的函数, x0 是计算的初始参数值 args 是指定func的其他参数 一个简单的应用实例为: import numpy as np import scipy as sp import matplotlib.pyplot as plt from scipy.optimize import leastsq ##样本数据(Xi,Yi),需要转换成数组

深度学习之最大似然估计与最小二乘(二)

匿名 (未验证) 提交于 2019-12-02 22:56:40
一、机器学习中的最大似然、最小二乘、梯度下降   最小二乘和极大似然估计是目标函数,梯度下降是优化算法。机器学习的核心是一个模型,一个损失函数loss fuction,加上一个优化的算法。一个目标函数可以用不同的优化算法,不同的目标函数也可以用相同的优化算法。所以最小二乘和极大似然根本不是算法,和梯度下降毫无可比性。   PS:最小二乘和极大似然也不是对立的。最小二乘是从函数形式上来看的,极大似然是从概率意义上来看的。事实上,最小二乘可以由高斯噪声假设+极大似然估计推导出来。当然 极大似然估计 还可以推导出其他的loss function,比如 logistic回归 中,loss function是交叉熵.   最大似然(MLE),最小二乘都是构造 目标函数 的方法,构造出这个目标函数后,我们可以用各种 优化方法 来找到它的极值,这些优化方法中,有一类是使用函数的梯度信息,包括一阶的方法,例如梯度下降,以及二阶的方法,例如牛顿法等。     对于线性回归问题,它的 模型 ,我们采用 最大似然 来构造一个目标函数,最后用 梯度下降 来找到目标函数的最值。当然,对于这个问题,我们也可以不用梯度下降,直接用向量的投影来 直接算出 最优解的表达式(最小二乘)。    实际上可以这样理解,极大似然函数(构造损失函数)+梯度下降可以解决所有回归问题,但多用于logist回归

python3-多项式最小二乘法拟合

匿名 (未验证) 提交于 2019-12-02 22:11:45
class numpy.poly1d(c_or_r, r=False, variable=None)[source] 参数: c_or_r:array_like 多项式的系数,或者如果第二个参数的值是True,多项式的根(值多项式的求值结果为0)。 例如,poly1d([1, 2, 3])返回一个对象,代表: x ^ 2 + 2 + 3, 而poly1d((1、2、3),真正的)返回一个对象,代表: (x - 1) (x - 2) (3) = x ^ 3 - 6 x ^ 2 + 11 * 6。 r: bool,可选 如果为真,c_or_r指定多项式的根;默认值为False。 variable:str,可选 将打印p时使用的变量从x改为变量 import numpy as np import scipy as sp import pylab as pl from scipy.optimize import leastsq#最小二乘法函数 n=9#多项式次数 #目标函数 def real_func(x): return np.pi*(np.sin(x)+np.cos(x))#pi*(sinx+cosx) #多项式函数 def fit_func(p,x): f=np.poly1d(p) return f(x) #残差函数 def residuals_func(p,y,x): ret

最小二乘法进行曲线拟合 Python

匿名 (未验证) 提交于 2019-12-02 22:11:45
分享一下我老师大神的人工智能教程!零基础,通俗易懂! http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 本文不手动实现最小二乘,调用scipy库中实现好的相关优化函数。 考虑如下的含有4个参数的函数式: f ( x ) = A D 1 + ( x / C ) B + D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 1 2 3 4 5 6 7 8 给我老师的人工智能教程打call! http://blog.csdn.net/jiangjunshow 文章来源: 最小二乘法进行曲线拟合 Python

线性回归

♀尐吖头ヾ 提交于 2019-11-30 18:51:43
1. 线性回归 核心公式: w = (X T X) -1 X T Y 流程伪代码: 读入数据,将数据特征x、特征标签y存储在矩阵x、y中 验证 x^Tx 矩阵是否可逆 使用最小二乘法求得 回归系数 w 的最佳估计 核心代码: 1 def standRegres(xArr, yArr): 2 xMat = mat(xArr) 3 yMat = mat(yArr).T 4 # 矩阵乘法的条件是左矩阵的列数等于右矩阵的行数 5 xTx = xMat.T * xMat 6 # 因为要用到xTx的逆矩阵,所以事先需要确定计算得到的xTx是否可逆,条件是矩阵的行列式不为0 7 # linalg.det() 函数是用来求得矩阵的行列式的,如果矩阵的行列式为0,则这个矩阵是不可逆的,就无法进行接下来的运算 8 if linalg.det(xTx) == 0.0: 9 print("This matrix is singular, cannot do inverse") 10 return 11 # 最小二乘法 12 # 求得w的最优解 13 ws = xTx.I * (xMat.T * yMat) 14 return ws 2. 局部加权线性回归 (就是中间乘上权值W) 核心公式: 参数w = (X T WX) -1 X T WY 权值Wi = exp( ||xi - x|| / ( -2*k 2

19 误差分布曲线的建立 - 高斯导出误差正态分布

半城伤御伤魂 提交于 2019-11-29 18:34:47
事实上,棣莫弗早在1730年~1733年间便已从二项分布逼近的途径得到了正态密度函数的形式,到了1780年后,拉普拉斯也推出了中心极限定理的一般形式,但无论是棣莫弗,还是拉普拉斯,此时他们这些研究成果都还只是一个数学表达式而非概率分布,也就是压根就还没往误差概率分布的角度上去思索,而只有到了1809年,高斯提出“正太误差”的理论之后,它正太理论才得以“概率分布“的身份进入科学殿堂,从而引起人们的重视。 追本溯源,正态分布理论这条大河的源头归根结底是测量误差理论。那高斯到底在正态分布的确立做了哪些贡献呢?请看下文。 1801年1月,天文学家Giuseppe Piazzi发现了一颗从未见过的光度8等的星在移动,这颗现在被称作谷神星(Ceres)的小行星在夜空中出现6个星期,扫过八度角后在就在太阳的光芒下没了踪影,无法观测。而留下的观测数据有限,难以计算出他的轨道,天文学家也因此无法确定这颗新星是彗星还是行星,这个问题很快成了学术界关注的焦点。高斯当时已经是很有名望的年轻数学家了,这个问题也引起了他的兴趣。高斯一个小时之内就计算出了行星的轨道,并预言了它在夜空中出现的时间和位置。1801年12月31日夜,德国天文爱好者奥伯斯(Heinrich Olbers)在高斯预言的时间里,用望远镜对准了这片天空。果然不出所料,谷神星出现了! 高斯为此名声大震