线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

news2024/9/23 19:23:56

最小二乘分为线性最小二乘非线性最小二乘

最小二乘目标函数都是min ||f(x)||2

  • 若f(x) = ax + b,就是线性最小二乘;
  • 若f(x) = ax2 + b / ax2 + bx 之类的,就是非线性最小二乘;

1. 求解线性最小二乘

【参考】

2. 求解非线性最小二乘

需要用到牛顿法,高斯牛顿法,或者LM法
目标函数都是min F(x) = min ||f(x)||2
求解的时候需要求解的是f(x)的最小值,其实求解的就是f(x)'=0的地方

(1) 牛顿法/高斯梯度下降

牛顿法是将f(x)进行二阶泰勒展开: f(x)=f(xk)+f’(xk)(x-xk)+1/2 f’‘(xk)(x-xk)2
因为求解的其实是上式的最小值,也就是求解上式导数为0的值
核心迭代等式:xk+1 = xk - f’(xk)/f’'(xk)
其中,一阶导f’(xk)可以看成雅可比矩阵J,二阶导f’'(xk)可以看成海森矩阵H

算法

  1. 给定初值x0
  2. 对于第k次迭代,求出一阶导f’(xk)和二阶导f’'(xk)
  3. 如果f’(xk)足够小则停止;否则xk+1=xk - f’(xk)/f’'(xk),返回2

(2) 高斯牛顿法

这里的f(x)代表的是目标函数F(x)
是将f(x)进行一阶泰勒展开:f(x+dx) = f(x) + J*dx
取得最小值的条件也就是 f(x) + J * dx这个式子对dx的导数为0,
可以求解得到: JTJ * dx = - J * f(x) ,可以简化为 H dx = g
刚好利用JTJ代替H,减少H计算量

算法

求解等式为 JTJ * dx = - J * f(x),即增量方程,这里的dx也就是每次需要寻找的变化量

  1. 给定初值x0
  2. 对于第k次迭代,求出雅可比J(xk) 和f(xk)
  3. 将以上两值代入,利用方程H dx = g,求解dx
  4. 如果dx足够小则停止,否则xk+1=xk+dx,返回2

(3) LM法

高斯牛顿本质求解的是xk+1 = xk - H-1 * J(xk) * f(xk) 但是H如果非正定,那 H-1不存在,因此将其加上单位矩阵结局正定问题 :(H + kI)dx = g

计算信赖区间 ρ请添加图片描述
算法

求解等式为 (JTJ+ μI) dx = -J f(x),其中J = J(xk),f(x) = f(xk)

  1. 给定初值x0
  2. 对于第k次迭代,求出雅可比J(xk) 和f(xk)
  3. 计算ρ,若 ρ > 3/4,则 μ = 2μ;
        若 ρ < 1/4,则 μ = 0.5μ;
  4. 将J(xk) ,f(xk)和 μ代入,利用方程 (H + μI) dx = g,求解dx
  5. 如果dx足够小则停止,否则xk+1=xk+dx,返回2

参考
https://zhuanlan.zhihu.com/p/556170185?utm_id=0
https://blog.csdn.net/weixin_43763292/article/details/128060801
https://blog.csdn.net/weixin_41869763/article/details/103603089

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nn.BatchNorm中affine参数的作用

在PyTorch的nn.BatchNorm2d中&#xff0c;affine参数决定是否在批归一化&#xff08;Batch Normalization&#xff09;过程中引入可学习的缩放和平移参数。 BN层的公式如下&#xff0c; affine参数决定是否在批归一化之后应用一个可学习的线性变换&#xff0c;即缩放和平移。具…

阿里云域名备案流程

阿里云域名备案流程大致可以分为以下几个步骤&#xff0c;这些信息综合了不同来源的最新流程说明&#xff0c;确保了流程的时效性和准确性&#xff1a; UP贴心的附带了链接&#xff1a; 首次备案流程&#xff1a;ICP首次备案_备案(ICP Filing)-阿里云帮助中心 (aliyun.com) …

现实投资者怎么摆脱伦敦银波动影响?

有伦敦银投资经验的朋友会发现&#xff0c;即便自己找到了伦敦银市场的趋势&#xff0c;但是总是没办法坚守自己的仓位&#xff0c;因为没办法摆脱伦敦银波动的影响&#xff0c;比方说在上升趋势中买入后&#xff0c;投资者总是是觉得伦敦银价格会反转下跌&#xff0c;所以他就…

Java(二)——方法与数组

文章目录 方法与数组方法方法的定义方法的执行实参与形参方法重载方法签名 数组创建与初始化数组的类型数组应用转字符串排序查找&#xff08;二分&#xff09;填充拷贝判等 二维数组创建及初始化遍历本质和内存分布不规则二维数组 方法与数组 方法 什么是方法&#xff1f; …

Kubernetes二进制(单master)部署

文章目录 Kubernetes二进制&#xff08;单master&#xff09;部署一、常见的K8S部署方式1. Minikube2. Kubeadmin3. 二进制安装部署4. 小结 二、K8S单&#xff08;Master&#xff09;节点二进制部署1. 环境准备1.1 服务器配置1.2 关闭防火墙1.3 修改主机名1.4 关闭swap1.5 在/e…

【管理咨询宝藏103】麦肯锡咨询顾问逻辑结构内部培训

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏103】麦肯锡咨询顾问逻辑结构内部培训 【格式】PDF版本 【关键词】麦肯锡、咨询顾问、逻辑培训 【核心观点】 - 所谓逻辑性&#xff0c;指的是“…

【数据结构】栈的实现(顺序栈)

文章目录 栈的概念和结构栈的实现1.顺序存储结构栈的定义初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果不为空返回0销毁栈栈的打印 完整代码&#xff08;包括测试代码&#xff09;Stack.hStack.ctest.c 栈…

控制状态流程图中的消息活动

消息是一个Stateflow对象&#xff0c;用于在本地或图表之间进行数据通信。从发件人图表中&#xff0c;您可以发送或转发邮件。在接收图表中&#xff0c;队列接收消息并将其保存&#xff0c;直到图表能够对其进行评估。 使用Stateflow运算符&#xff0c;您可以访问消息数据&…

更高效的数据交互实现丨 DolphinDB Arrow 插件使用教程

Apache Arrow 是一种跨语言的内存数据交换格式&#xff0c;旨在为用户提供高效的数据结构&#xff0c;以实现在不同的数据处理系统之间共享数据而无需进行复制。它由 Apache 软件基金会开发和维护&#xff0c;目前已经成为许多大型数据处理和分析框架的核心组件之一。在分布式框…

2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员模拟考试题库参考答案及金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&a…

DiskGenius帮你恢复系统无法识别的U盘数据

场景还原 前两天早上U盘复制文件卡死后&#xff0c;强行断开U盘&#xff0c;再次使用直接无法访问&#xff0c;心拔凉拔凉&#xff01;&#xff01; 使用驱动器G:中的光盘之前需要将其格式化 位置不可用-无法访问U盘 常规科普 一、U盘无法识别 1、检查U盘是否插入正确&…

【Pytorch】torch.nn.MaxPool2d

什么是MaxPool2d 是对二维矩阵进行池化层下采样的方法 MaxPool2d的用法 相较于卷积层&#xff0c;多出来的参数为ceil_mode 这个参数代表&#xff0c;如果所剩的部分不够卷积核的大小&#xff0c;要不要进行池化操作 具体代码为 import torch import torchvision from torch …

代购系统搭建,淘宝、1688海外代购系统建设以及部分前端源码展示

客户登录主界面&#xff0c;可以根据个人需求更换。 可支持个人定制模块化&#xff0c;也有一些模块可供选择 系统演示站测试 部分源码展示&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"> <title>会员中心 – 淘…

分布式搜索——ElasticSeach简介

一般都用数据库存储数据&#xff0c;然后对数据库进行查询获取数据&#xff0c;但是当数据量很大时&#xff0c;查询效率就会很慢&#xff08;具体下面会讲到&#xff09;&#xff0c;所以这种情况下就会使用到ElasticSeach ElasticSeach的基本介绍 ElasticSeach是一 款非常强…

RSC6218A LLC谐振电源案例分享-REASUNOS(瑞森半导体)

一、前言 RSC6218A是一款可以满足4项标准的优秀产品&#xff1a;①2024年8月1日要实施的《建筑照明设计标准》GBT0034-2024&#xff1b;②2024年07月01日起实施的《电磁兼容限值 第1部分&#xff1a;谐波电流发射限值&#xff08;设备每相输入电流≤16A&#xff09;》GB17625.…

在PyQt5中实现点击按钮打开新窗口功能—窗口的跳转功能实现

百度搜索“pyqt5中如何点击按钮打开新的窗口”&#xff0c;自动生成以下参考代码。 在PyQt5中&#xff0c;要实现点击按钮打开新窗口&#xff0c;你需要定义一个新的窗口类&#xff0c;并在按钮的点击信号&#xff08;clicked&#xff09;处理函数中创建并显示这个新窗口。以下…

继承的奥秘:面向对象编程中的血脉传承与智慧抉择

1. 概述 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;继承是构建复杂软件系统的基石之一。它允许我们定义一个类&#xff08;称为父类或基类&#xff09;作为其他类&#xff08;称为子类或派生类&#xff09;的基础&#xff0c;子类能够自动获得父类的属性和方法…

jQuery EasyUI textbox 值取不到问题

用textbox 存值点击修改的时候有些字段是不能更改的所以将textbox 的disabled属性设为true后 像这里的textbox disabled属性设为true是灰的 点击保存时这两个值没传 我们可以在提交保存前先将disabled属性先设为false,保存后又设为true

【PDF技巧】PDF如何解密?

PDF文件设置了加密&#xff0c;需要密码才能够打开文件或者编辑文件&#xff0c;那么如何解密PDF密码&#xff1f;今天我们来一起学习一下。 首先是在已知密码的情况下&#xff0c;PDF文件中的打开密码或者是限制编辑&#xff0c;想要解密PDF密码&#xff0c;我们只需要在PDF编…

关于easypoi使用@ExcelCollection一对多导致合并失效问题

导致无法合并的原因是序号中使用了自增的操作 将自增改为手动赋值就能正常合并了