利用高中知识求解最小二乘法
使用配方法求解最小二乘拟合函数参数的推导过程
函数原型
函数原型: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
欢迎收看:如何自学人工智能
利用高中知识求解最小二乘法相关推荐
- 基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比
基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比目录 一.梯度下降算法的基本原理 1.梯度下降算法的基本原理 二.题 ...
- 繁凡的对抗攻击论文精读(三)ICLR2019 利用先验知识进行高效黑盒对抗攻击的 bandits 算法(MIT)
点我轻松弄懂深度学习所有基础和各大主流研究方向入门综述! <繁凡的深度学习笔记>,包含深度学习基础和 TensorFlow2.0,PyTorch 详解,以及 CNN,RNN,GNN,AE, ...
- 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量
利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...
- 利用QR算法求解矩阵的特征值和特征向量
利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...
- 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP
宋恒宇 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自然语言处理曾被认为是人工智能皇冠上的璀璨明珠,现如今再随着图像识别等技术的长足进步,这颗明珠似乎也显得有些暗淡无光了. 但是,一篇来自阿 ...
- 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、
谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 昨天,谷歌发布了 TensorFlow 1.4.0 先行版,将 tf.data 等功能加入了 A ...
- ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测)
ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 x ...
- ML之PLiR之Glmnet:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测)
ML之PLiR之Glmnet算法:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测) 目录 输出结果 1.Glmnet算法 实现代码 输出结果 0 2 1 2 2 2 3 3 ...
- ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测)
ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测) 目录 设计思路 输出结果 1.LARS 2.10-fold cross validation 实现代码 ...
最新文章
- 关于Django的时区设置TIME_ZONE,USE_TZ的问题
- python panda读取csv_python pandas 中文件的读写——read_csv()读取文件
- shell--变量的替换
- mysql多实例访问代理_MySql-Proxy之多路结果集归并
- [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解
- 一款非常好看的雷姆背景的时间单页(附雷姆图片)
- Memcache安装 2
- linux PHP卸载不了
- 090925 H 广联达之道 培训笔记
- SLAM--intel realsense2在ORB SLAM2 和 ORB SLAM3下建图和重定位(ubuntu 20.04, opencv 4.2.0 以上)
- (含代码)基于51单片机电子密码锁设计
- logo语言是计算机语言吗,LOGO语言的编程
- web应用系统性能测试的种类
- pcap文件linux怎么打开,pcap文件格式 - 方恨少 - 博客园
- 小程序和钉钉发版后老版缓存的问题调研
- python_getUniport_从uniport网站中获得指定的字节
- 如何输入多组数据并输出每组数据的和?
- 五层协议体系结构的各层功能
- not exists 中from 后面不同写法带来的效率区别
- 数据库查询+数据库备份+数据库恢复