最小二乘法公式推导及Python实现
机器学习使用线性回归方法建模时,求损失函数最优解需要用到最小二乘法。相信很多朋友跟我一样,想先知道公式是什么,然后再研究它是怎么来的。所以不多说,先上公式。
对于线性回归方程\(f(x) = ax + b\),由最小二乘法得:
$$a = \frac{\sum (x_{i}-\overline{x})(y_{i}-\overline{y})}{\sum (x_{i}-\overline{x})^{2}}$$
$$b = \overline{y}-a\overline{x}$$
式中,\((x_{i}, y_{i})\)为实验所得的一组数据的真实值,\(\overline{x}为x_{i}\)的平均数,\(\overline{y}为y_{i}\)的平均数。
接下来推导一下公式是怎么得来的:
设损失函数:
\]
由于是线性回归,式中f(x)是线性函数,令\(f(x) = ax + b\)
现在损失函数M表示为:
\]
最小二乘法是求f(x)的参数a,b,使得损失函数M取得最小值。
即求M = M(a, b)在哪些点取得最小值。由多元函数极值求法,上述问题可以分别对a,b求偏导数,通过解方程组
$$\left{\begin{matrix}M_{a}(a, b) = 0
\
M_{b}(a, b) = 0
\end{matrix}\right.$$
来解决,即令
$$\left{\begin{matrix}\frac{\partial M}{\partial a} = 0; (2)
\
\
\frac{\partial M}{\partial b} = -2\sum [y_{i}-(ax_{i}+b)] = 0; (3)
\end{matrix}\right.$$
由平均数性质,\(\sum x_{i} = n\overline{x}\),\(\sum y_{i} = n\overline{y}\),其中n为实验数据组数。将其带入(3)式,可得:
\]
此式表明,线性回归函数必过点\((\overline{x}, \overline{y})\)
将(4)式带入(1)式,得:
\]
现对(5)式求偏导数,应用多元复合函数求导法则,推导(2)式:
\]
整理(6)式:
\]
最后可得:
\]
最后附上python代码实现最小二乘法:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1., 2., 3., 4., 5.])
y = np.array([1., 3., 2., 3., 5.])
x_mean = np.mean(x)
y_mean = np.mean(y)
num = 0.0
d = 0.0
for x_i, y_i in zip(x, y):
num += (x_i - x_mean) * (y_i - y_mean)
d += (x_i - x_mean) ** 2
a = num/d
b = y_mean - a * x_mean
print('a is %f' % a)
print('b is %f' % b)
y_hat = a * x + b
plt.scatter(x, y)
plt.plot(x, y_hat, color='g')
plt.axis([0, 6, 0, 6])
plt.show()
最小二乘法公式推导及Python实现的更多相关文章
- 大盘及策略收益率的公式推导与Python代码
一.模型前提与假设 设策略总天数为\(n\).第\(t\)日大盘的收盘价为\(P_t\).第\(t\)日的单日收益率为\(r_t\).\(n\)天的累积收益率为\(r_{cum}\) 假设策略仅买卖大 ...
- Python实现——一元线性回归(最小二乘法)
2019/3/24 线性回归--最小二乘法公式法 暂时用python成功做出来了图像,但是其中涉及到的公式还是更多的来自于网络,尤其是最小二乘法公式中的两个系数的求解,不过目前看了下书高数也会马上提及 ...
- Alink漫谈(十一) :线性回归 之 L-BFGS优化
Alink漫谈(十一) :线性回归 之 L-BFGS优化 目录 Alink漫谈(十一) :线性回归 之 L-BFGS优化 0x00 摘要 0x01 回顾 1.1 优化基本思路 1.2 各类优化方法 0 ...
- All I know about A/B Test (1) : 均值型指标与比值(率)型指标的计算区别
因为最近在找实习,所以打算把自己之前学过的关数据分析的知识总结(复习)一下.在总结A/B test时,我发现中文互联网中关于A/B test的总结已经很多了,但是对于均值型指标和比值(率)型指标在设计 ...
- python数据分析入门——matplotlib的中文显示问题&最小二乘法
正在学习<用python做科学计算>,在练习最小二乘法时遇到matplotlib无法显示中文的问题.查资料,感觉动态的加上几条语句是最好,这里贴上全部的代码. # -*- coding: ...
- (转)最小二乘法拟合圆公式推导及vc实现[r]
(下文内容为转载,不过已经不清楚原创的是哪里了,特此说明) 转自: http://www.cnblogs.com/dotLive/archive/2006/10/09/524633.html 该网址下 ...
- 机器学习:Python中如何使用最小二乘法
之所以说"使用"而不是"实现",是因为python的相关类库已经帮我们实现了具体算法,而我们只要学会使用就可以了.随着对技术的逐渐掌握及积累,当类库中的算法已经 ...
- Python实现实现基于最小二乘法的线性回归
下面展示利用Python实现基于最小二乘法的线性回归模型,同时不需要引入其他科学计算以及机器学习的库. 利用Python代码表示如下: #首先引入数据集x,和y的值的大小利用Python的数据结构:列 ...
- 最小二乘法 及python 实现
参考 最小二乘法小结 机器学习:Python 中如何使用最小二乘法 什么是” 最小二乘法” 呢 定义:最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳 ...
随机推荐
- RabbitMQ 启用页面管理功能并设置权限
RabbitMQ 启用页面管理功能并设置权限 RabbitMQ guest administrator 在安装完 rabbitmq 后,默认有一个 guest/guest 账号密码,但是为了安全,此 ...
- SQL语句 函数
6.4 Functions 6.4.1 Numeric abs/mod 绝对值/求模 sqrt/power/exp 求幂 ceil/floor/round 取整 trunc 截取小数点 sin/c ...
- ZROI 19.08.01 生成函数方法
写在前面:由于我数学基础不好,加上缺乏生成函数知识,所以这一下午我都处在掉线和非掉线的叠加态.而且我写\(\LaTeX\)很慢,所以笔记相当混乱而且不全面.说白了就是我太菜了听不懂. 1.一般生成函数 ...
- MySQL 创建唯一索引忽略对已经重复数据的检查
MySQL 创建唯一索引忽略对已经重复数据的检查 在创建唯一索引的基础上加上关键字"IGNORE "即可.(注意,经测试,在5.7版本已经不再支持该参数) # 重复数据 mysql ...
- Struts 2 实现Action的几种方式_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Action用于处理用户的请求,因此也被称为业务控制器.每个Action类就是一个工作单元,Struts 2框架负责将用 ...
- PIXI如何绘制离屏canvas到舞台上
有个方法是toDataURL(),原生的,先转换成图片再绘制. 但是pixi提供了一个BaseTexture,其构造函数的参数可以是一个canvas 因此可以直接使用如下代码绘制canvas //微信 ...
- C#.Net集成Bartender条码打印,VS调试运行可以打印,发布到IIS运行打印报错
C#.Net集成Bartender条码打印,VS调试运行可以打印,发布到IIS运行打印报错 问题原因: 问题出现在iis账户权限. 解决方法: iis默认是用network service这个账户去执 ...
- Python 函数Ⅲ
默认参数 调用函数时,默认参数的值如果没有传入,则被认为是默认值.下例会打印默认的age,如果age没有被传入: 以上实例输出结果: 不定长参数 你可能需要一个函数能处理比当初声明时更多的参数.这些参 ...
- js对象的创建模式
方式一: Object构造函数模式 * 套路: 先创建空Object对象, 再动态添加属性/方法 * 适用场景: 起始时不确定对象内部数据 * 问题: 语句太多 /* 一个人: name:" ...
- 创建一个简单的 Springboot web项目
1.点击Project 2.点击 Next 3.项目名 4.web 项目 4.确认 5.pom.xml <?xml version="1.0" encoding=" ...