使用配方法求解最小二乘拟合函数参数的推导过程

函数原型

函数原型:y = w*x + b
其中x是自变量,y是因变量,w是斜率,b是截距。

样本说明

(x1, y1)代表第1个样本点的数据,
(x2, y2)代表第2个样本点的数据,
以此类推
(xn, yn)代表第n个样本点的数据。
这些都是已知量。

x’代表样本在x轴的平均值,
y’代表样本在y轴的平均值。
这两个变量通过已知量计算平均值求出。

问题

求出能使
(wx1 + b - y1)² + (wx2 + b - y2)² +…+(wxn + b - yn)²
的结果最小的w和b的值

第一步,对b进行配方法,配成b的完全平方式

将上式转换为:
(b - (y1-wx1))² + (b - (y2-wx2))² +(b - (y3-wx3))² (式1)

展开式1:
b² -2b(y1-wx1)+ (y1-wx1)²
+b² -2b(y2-wx2)+ (y2-wx2)²
+…
+b² -2b(yn-wxn)+ (yn-wxn)²

合并b的同类项:
nb² -2b(y1-wx1 + y2-wx2 + …+yn-wxn) + 其他不含b的项

将上式中的第二项中的y1 + y2 +…+yn合并,那么这就是y的和,如果将y’定义为y的平均值,那么y的和也等于ny’,同理,x的和也等于nx’。

上式转换为:nb² -2b(ny’ - nx’) + 其他不含b的项

将n提取出来:n(b² - 2b(y’ - wx’)) + 其他不含b的项

利用配方法配平平方式,上式就转换为:
n(b - (y’ - wx’))² + 其他不含b的项
要让整个式子的值最小,n(b - (y’ - wx’))²必须等于0,即:
b必须等于y’- wx’, 由此得出:
b = y’- wx’ (式2)

第二步,对w进行配方法,配成w的完全平方式

(b - (y1-wx1))² + (b - (y2-wx2))² +(b - (y3-wx3))² (式1)
b = y’ - wx’ (式2)

要让式1的结果最小,将式2带入式1中,式1转换为:
( y’- wx’- (y1-wx1))² + ( y’- wx’- (y2-wx2))² +…+ ( y’- wx’- (yn-wxn))² (式3)

式3可以转换为:
( y’- wx’- y1+wx1))² + ( y’- wx’- y2+wx2))² +…+ ( y’- wx’- yn+wxn))²

合并每个平方中的w,上式可转换为:
(w(x1- x’) - (y1-y’))² + (w(x2- x’) - (y2-y’))² +…+(w(xn- x’) - (yn-y’))²

展开上式:
w²(x1-x’)² -2w(x1-x’)(y1-y’) +(y1-y’)² +
w²(x2-x’)² -2w(x2-x’)(y2-y’) +(y2-y’)² +

w²(xn-x’)² -2w(xn-x’)(yn-y’) +(yn-y’)²

合并包含w的项:
w²[(x1-x’)² + (x2-x’)² +…+(xn-x’)² ] -
2w[(x1-x’)(y1-y’) + (x2-x’)(y2-y’) +…+(xn-x’)(yn-y’)] +常数项

将[(x1-x’)² + (x2-x’)² +…+(xn-x’)² ]定义为A
将[(x1-x’)(y1-y’) + (x2-x’)(y2-y’) +…+(xn-x’)(yn-y’)]定义为B

上式就可以转换为:
W²*A -2W*B + 常数项

将上式用配方法转换为完全平方式并合并成差平方的格式,上式就可以转换为:
A(W-B/A)² + 常数项

此时要使整个式子的结果最小,必须:
W=B/A

B = [(x1-x’)(y1-y’) + (x2-x’)(y2-y’) +…+(xn-x’)(yn-y’)]
利用求和符号Σ可以将[(x1-x’)(y1-y’) + (x2-x’)(y2-y’) +…+(xn-x’)(yn-y’)]表示为:

A=[(x1-x’)² + (x2-x’)² +…+(xn-x’)² ],利用求和符号可以表示为:

由w=B/A,因此w的结果就是:

结论:

python案例:

#按照 y = 2x + 0.6 构造样本, w = 2, b = 0.6
x=[1,2,3,4,5,6,7,8,9,10]
y=[2.59,4.61,6.59,8.61,10.59,12.61,14.59,16.61,18.59,20.61]#循环计算出x和y的和,再求平均值
length = len(x) #先计算样本长度
sumx  = 0 #自变量的和
sumy  = 0 #因变量的和
for i in range(length):sumx = sumx + x[i]sumy = sumy + y[i]x_ave = sumx/length
y_ave = sumy/length#利用循环计算w的分子和分母
numerator = 0
denominator = 0
for n in range(length):  numerator = numerator + (x[n] - x_ave)*(y[n] - y_ave)       denominator = denominator + (x[n] - x_ave)*(x[n] - x_ave)w = numerator/denominator
b = y_ave - w*x_aveprint("w =",w, "b =",b)

计算结果:
w = 2.000606060606061 b = 0.596666666666664

欢迎收看:如何自学人工智能

利用高中知识求解最小二乘法相关推荐

  1. 基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比

    基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比目录 一.梯度下降算法的基本原理 1.梯度下降算法的基本原理 二.题 ...

  2. 繁凡的对抗攻击论文精读(三)ICLR2019 利用先验知识进行高效黑盒对抗攻击的 bandits 算法(MIT)

    点我轻松弄懂深度学习所有基础和各大主流研究方向入门综述! <繁凡的深度学习笔记>,包含深度学习基础和 TensorFlow2.0,PyTorch 详解,以及 CNN,RNN,GNN,AE, ...

  3. 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量

    利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...

  4. 利用QR算法求解矩阵的特征值和特征向量

    利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...

  5. 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP

    宋恒宇 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自然语言处理曾被认为是人工智能皇冠上的璀璨明珠,现如今再随着图像识别等技术的长足进步,这颗明珠似乎也显得有些暗淡无光了. 但是,一篇来自阿 ...

  6. 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、

    谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 昨天,谷歌发布了 TensorFlow 1.4.0 先行版,将 tf.data 等功能加入了 A ...

  7. ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测)

    ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 x ...

  8. ML之PLiR之Glmnet:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测)

    ML之PLiR之Glmnet算法:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测) 目录 输出结果 1.Glmnet算法 实现代码 输出结果 0 2 1 2 2 2 3 3 ...

  9. ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测)

    ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测) 目录 设计思路 输出结果 1.LARS 2.10-fold cross validation 实现代码 ...

最新文章

  1. 关于Django的时区设置TIME_ZONE,USE_TZ的问题
  2. python panda读取csv_python pandas 中文件的读写——read_csv()读取文件
  3. shell--变量的替换
  4. mysql多实例访问代理_MySql-Proxy之多路结果集归并
  5. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解
  6. 一款非常好看的雷姆背景的时间单页(附雷姆图片)
  7. Memcache安装 2
  8. linux PHP卸载不了
  9. 090925 H 广联达之道 培训笔记
  10. SLAM--intel realsense2在ORB SLAM2 和 ORB SLAM3下建图和重定位(ubuntu 20.04, opencv 4.2.0 以上)
  11. (含代码)基于51单片机电子密码锁设计
  12. logo语言是计算机语言吗,LOGO语言的编程
  13. web应用系统性能测试的种类
  14. pcap文件linux怎么打开,pcap文件格式 - 方恨少 - 博客园
  15. 小程序和钉钉发版后老版缓存的问题调研
  16. python_getUniport_从uniport网站中获得指定的字节
  17. 如何输入多组数据并输出每组数据的和?
  18. 五层协议体系结构的各层功能
  19. not exists 中from 后面不同写法带来的效率区别
  20. 数据库查询+数据库备份+数据库恢复

热门文章

  1. Mysql应用性能监控案例分析
  2. C#-WinForm设置托盘程序
  3. 玩转鼠标右键,只需要这两个~
  4. 饿了么三面:让你怀疑人生的Spring Boot夺命连环40问
  5. Java poi生成 Excel
  6. Two Stage Detection
  7. linux中iso文件怎么安装,详解Linux的ISO镜像安装是如何开始进行的
  8. 10月1日起,Github又有重大改变!
  9. 对老王家的三路充电模块研究
  10. Python中常用的第三方库