机器学习使用线性回归方法建模时,求损失函数最优解需要用到最小二乘法。相信很多朋友跟我一样,想先知道公式是什么,然后再研究它是怎么来的。所以不多说,先上公式。

对于线性回归方程\(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}\)的平均数。

接下来推导一下公式是怎么得来的:

设损失函数:

\[M = \sum[y_{i}-f(x_{i})]^{2}

\]

由于是线性回归,式中f(x)是线性函数,令\(f(x) = ax + b\)

现在损失函数M表示为:

\[M = \sum[y_{i}-(ax_{i}+b)]^{2}\; (1)

\]

最小二乘法是求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)式,可得:

\[b = \overline{y} - a\overline{x}\; (4)

\]

此式表明,线性回归函数必过点\((\overline{x}, \overline{y})\)

将(4)式带入(1)式,得:

\[M = \sum[y_{i}-(ax_{i}+\overline{y} - a\overline{x})]^{2} = \sum[(y_{i}-\overline{y})-a(x_{i} - \overline{x})]^{2}\; (5)

\]

现对(5)式求偏导数,应用多元复合函数求导法则,推导(2)式:

\[\frac{\partial M}{\partial a} = -2\sum[(y_{i}-\overline{y})-a(x_{i} - \overline{x})](x_{i}-\overline{x}) = 0\; (6)

\]

整理(6)式:

\[\sum(y_{i}-\overline{y})(x_{i}-\overline{x})-a\sum (x_{i} - \overline{x})^{2} = 0\; (7)

\]

最后可得:

\[a = \frac{\sum(x_{i}-\overline{x})(y_{i}-\overline{y})}{\sum (x_{i} - \overline{x})^{2}}\; (8)

\]

最后附上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最小二乘法求a b_最小二乘法公式推导及Python实现相关推荐

  1. python编程求n的阶乘_使用Python编程的阶乘

    python编程求n的阶乘 Before we start implementing factorial using Python, let us first discuss what factori ...

  2. 最小二乘法求回归直线方程的推导

    最小二乘法求回归直线方程的推导 转载自:http://blog.csdn.net/marsjohn/article/details/54911788 在数据的统计分析中,数据之间即变量x与Y之间的相关 ...

  3. 最小二乘法求线性回归方程_规范解题第14期 利用“最小二乘法”原理解一道题...

    还等什么呢?时间都过去了,话是这么说,但不至于那么快.无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都一去不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即 ...

  4. 用Excle工具利用最小二乘法求回归方程

    用Excle工具利用最小二乘法求回归方程 首先在Excle表格录入数据 然后计算x的平均数,y的平均数 接着计算x的平方 再算一列数据乘以另一列的数据 利用数据分析进行求回归数据 首先在Excle表格 ...

  5. 最小二乘法求拟合曲线函数的C语言实际应用

    采用单片机等微处理器采集一些"线性"传感器数据时,注意这里的线性是指相似于线性变化,比如NTC热敏电阻.PT100铂电阻.PH复合电极传感器,这些传感器的变化特性类似于二维坐标轴上 ...

  6. C++最小二乘法求多项式系数

    /* 函数名称:Multinomial 函数作用:最小二乘法求多项式系数 输出参数:Mat_<double>& F 多项式系数 输入参数:double * x 输入数据的特征集合 ...

  7. 递归最小二乘法、增广最小二乘法、带遗忘因子的递归增广最小二乘法

    一.递归最小二乘法 递推最小二乘法:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识.为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计. 取前N组数 ...

  8. python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)

    实验环境:python2.7 题目1:python之"求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数" 程序: import math def factorial(n): ...

  9. python函数def里面嵌套def,python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l...

    python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l 直接上代码def l(list): def d(): return list return d ...

  10. python concat函数 多张表_教你用python递归函数求n的阶乘,优缺点及递归次数设置方式

    本文内容介绍了python递归函数求n的阶乘,优缺点及递归次数设置方式,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧! 递归函数两大特点: 1.能够调用函数自身 2.至少有一个出口( ...

最新文章

  1. 修复电脑右键没有新建记事本
  2. 编程面试中的十个常见错误
  3. 水平拉滑轮组计算机械效率的题,机械效率杠杆论文,关于中考物理机械效率计算题*相关参考文献资料-免费论文范文...
  4. 5月16 JSON的一些知识点及AJAX的应用
  5. Animate与transform的使用
  6. 广告流量分析之评价指标的选择(一)
  7. JavaScript将JSON转换为字符串
  8. 深职院c语言考试试卷,深职院第1章C语言基础与入门教学.ppt
  9. PS学习笔记(88天和我一起学会PS)(8/88)
  10. css div img等元素居中对齐
  11. Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4
  12. hackRF--初步实战(ubuntu环境)
  13. 被人民日报等官媒反复强调的​「企业家精神」,到底是什么?
  14. 去除WinRar中广告的办法
  15. Part3-4-1 搭建自己的SSR
  16. HDU - 3374(最小表示法+最大表示法)
  17. long自动转为float类型
  18. 2023新年红包,兔年HTML红包页面代码【2023新年快乐_附源码】
  19. 开源数学软件---Numbit
  20. Tinymce富文本使用教程

热门文章

  1. 细枝末节都交给App 我只负责享受生活 | 2016与我的数字生活
  2. 鼠标测试软件m,赛钛客CYBORG M.M.O.7鼠标
  3. 优思学院|精益六西格玛中的8大浪费是什么?
  4. 自动驾驶车辆仿真模拟软件盘点
  5. 深入浅出、通俗易懂的讲解CAN bus
  6. CMSIS-RTOS教程中文版
  7. WORD宏命令一(删除书签)
  8. RK3288-安卓5.1-AP6212-WIFI模组调试
  9. 有源滤波器快速使用设计和精确设计
  10. teamview centos 配置