当前位置: 首页 > news >正文

RLS带遗忘因子的递归最小二乘法

递归最小二乘(Recursive Least Squares, RLS)算法是一种自适应滤波算法,用于在线估计动态系统的参数。它是一种最小化误差平方和的算法,并且可以递归地更新估计值,而不需要存储历史数据。

1 系统模型

假设系统模型为线性回归模型:
z ( k ) = φ ( k ) T θ + v ( k ) z(k) = \varphi(k)^T \theta + v(k) z(k)=φ(k)Tθ+v(k)
其中:

  • z ( k ) z(k) z(k) 是时刻 k k k 的输出。
  • φ ( k ) \varphi(k) φ(k) 是时刻 k k k 的输入向量。
  • θ \theta θ 是参数向量。
  • v ( k ) v(k) v(k) 是噪声项,假设为高斯白噪声。

2 目标函数

递归最小二乘算法的目标是最小化预测误差的加权平方和:
J ( θ ) = ∑ i = 1 k λ k − i [ z ( i ) − φ ( i ) T θ ] 2 J(\theta) = \sum_{i=1}^k \lambda^{k-i} [z(i) - \varphi(i)^T \theta]^2 J(θ)=i=1kλki[z(i)φ(i)Tθ]2
其中:

  • λ \lambda λ 是遗忘因子,通常在 0 到 1 之间,用于控制历史数据的权重。

3 递归更新

为了递归更新参数估计 θ ^ ( k ) \hat{\theta}(k) θ^(k) 和误差协方差 P ( k ) P(k) P(k),我们首先对目标函数 J ( θ ) J(\theta) J(θ) 进行最优化。

3.1 参数更新

我们首先对代价函数 J ( θ ) J(\theta) J(θ) 关于参数向量 θ \theta θ 进行求导,并令导数为零,以找到最小化代价函数的参数估计。

J ( θ ) J(\theta) J(θ) 关于 θ \theta θ 的导数为:
∂ J ( θ ) ∂ θ = − 2 ∑ i = 1 k λ k − i φ ( i ) [ z ( i ) − φ ( i ) T θ ] \frac{\partial J(\theta)}{\partial \theta} = -2 \sum_{i=1}^k \lambda^{k-i} \varphi(i) [z(i) - \varphi(i)^T \theta] θJ(θ)=2i=1kλkiφ(i)[z(i)φ(i)Tθ]

令导数为零,得到:
∑ i = 1 k λ k − i φ ( i ) [ z ( i ) − φ ( i ) T θ ] = 0 \sum_{i=1}^k \lambda^{k-i} \varphi(i) [z(i) - \varphi(i)^T \theta] = 0 i=1kλkiφ(i)[z(i)φ(i)Tθ]=0

将上式重新组织,得到:
∑ i = 1 k λ k − i φ ( i ) z ( i ) = ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T θ \sum_{i=1}^k \lambda^{k-i} \varphi(i) z(i) = \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \theta i=1kλkiφ(i)z(i)=i=1kλkiφ(i)φ(i)Tθ

解得 θ \theta θ 为:
θ ( k ) = ( ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T ) − 1 ∑ i = 1 k λ k − i φ ( i ) z ( i ) \theta(k) = \left( \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \right)^{-1} \sum_{i=1}^k \lambda^{k-i} \varphi(i) z(i) θ(k)=(i=1kλkiφ(i)φ(i)T)1i=1kλkiφ(i)z(i)

3.2 递归形式

为了简化计算,我们引入 P ( k ) P(k) P(k) 作为 θ ( k ) \theta(k) θ(k) 的估计误差协方差矩阵的逆。那么,我们有:
P ( k ) = ( ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T ) − 1 P(k) = \left( \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \right)^{-1} P(k)=(i=1kλkiφ(i)φ(i)T)1

参数更新可以表示为:
θ ^ ( k ) = θ ^ ( k − 1 ) + P ( k ) φ ( k ) [ z ( k ) − φ ( k ) T θ ^ ( k − 1 ) ] \hat{\theta}(k) = \hat{\theta}(k-1) + P(k) \varphi(k) [z(k) - \varphi(k)^T \hat{\theta}(k-1)] θ^(k)=θ^(k1)+P(k)φ(k)[z(k)φ(k)Tθ^(k1)]

3.3 误差协方差更新

误差协方差的更新公式可以表示为:
P ( k ) = 1 λ ( k ) [ P ( k − 1 ) − P ( k − 1 ) φ ( k ) φ ( k ) T P ( k − 1 ) λ ( k ) ] P(k) = \frac{1}{\lambda(k)} \left[ P(k-1) - P(k-1) \varphi(k) \varphi(k)^T P(k-1) \lambda(k) \right] P(k)=λ(k)1[P(k1)P(k1)φ(k)φ(k)TP(k1)λ(k)]

为了简化,我们定义增益向量 y ( k ) y(k) y(k) 为:
y ( k ) = P ( k − 1 ) φ ( k ) [ φ ( k ) T P ( k − 1 ) φ ( k ) + λ ( k ) ] − 1 y(k) = P(k-1) \varphi(k) \left[ \varphi(k)^T P(k-1) \varphi(k) + \lambda(k) \right]^{-1} y(k)=P(k1)φ(k)[φ(k)TP(k1)φ(k)+λ(k)]1

那么,误差协方差的更新公式可以简化为:
P ( k ) = 1 λ ( k ) [ I − y ( k ) φ ( k ) ] P ( k − 1 ) P(k) = \frac{1}{\lambda(k)} \left[ I - y(k) \varphi(k) \right] P(k-1) P(k)=λ(k)1[Iy(k)φ(k)]P(k1)

  • θ ^ ( k ) \hat{\theta}(k) θ^(k) 是时刻 k k k 的参数估计。
  • P ( k ) P(k) P(k) 是时刻 k k k 的误差协方差矩阵的逆。
  • y ( k ) y(k) y(k) 是增益向量,用于调整输入向量 $ \varphi(k) $ 对参数估计的影响。

这些递归公式允许算法在每个时间步更新参数估计,而不需要存储整个历史数据,从而实现高效的在线参数估计。

4 总结

RLS 最重要的:
θ ^ ( k ) = θ ^ ( k − 1 ) + y ( k ) [ z ( k ) − φ ( k ) T θ ^ ( k − 1 ) ] \hat{\theta}(k) = \hat{\theta}(k-1) + y(k) [z(k) - \varphi(k)^T \hat{\theta}(k-1)] θ^(k)=θ^(k1)+y(k)[z(k)φ(k)Tθ^(k1)]
y ( k ) = P ( k − 1 ) φ ( k ) [ φ ( k ) T P ( k − 1 ) φ ( k ) + λ − 1 ] − 1 y(k) = P(k-1) \varphi(k) \left[ \varphi(k)^T P(k-1) \varphi(k) + \lambda^{-1} \right]^{-1} y(k)=P(k1)φ(k)[φ(k)TP(k1)φ(k)+λ1]1
P ( k ) = [ P ( k − 1 ) − 1 + λ − 1 φ ( k ) φ ( k ) T ] − 1 P(k) = \left[ P(k-1)^{-1} + \lambda^{-1} \varphi(k) \varphi(k)^T \right]^{-1} P(k)=[P(k1)1+λ1φ(k)φ(k)T]1

这些递归公式允许算法在每个时间步更新参数估计,而不需要存储整个历史数据,从而实现高效的在线参数估计。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SSH软链接后门从入门到应急响应
  • AI创意引擎:优化Prompt提示词的高效提问技巧
  • 《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现
  • Linux学习-ELK(一)
  • 线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析
  • 探索信号处理:使用傅里叶小波变换分析和恢复信号
  • 阿里的云盘竟然也能那么容易的泄露,可见,互联网几乎没有绝对的安全!水平越权和高并发的关系到底是什么?用户权限怎么隔离才算好? 全局拦截器怎么设计的这么垃圾?
  • 多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测
  • 4款数据恢复软件,包含易我数据恢复软件在内
  • oracle数据库安装和配置详细讲解
  • 基于python+django+vue的社区爱心养老管理系统
  • 【Node.js】初识 RabbitMQ
  • 短文写作竞赛系统小程序的设计
  • VSCode拉取远程项目
  • python爬虫基础:了解html
  • [PHP内核探索]PHP中的哈希表
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • bootstrap创建登录注册页面
  • ES6 ...操作符
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Spring Cloud Feign的两种使用姿势
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 构建工具 - 收藏集 - 掘金
  • 聊聊directory traversal attack
  • 目录与文件属性:编写ls
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端临床手札——文件上传
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一起参Ember.js讨论、问答社区。
  • ionic异常记录
  • raise 与 raise ... from 的区别
  • # centos7下FFmpeg环境部署记录
  • #162 (Div. 2)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (31)对象的克隆
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)PySpark3:SparkSQL编程
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (回溯) LeetCode 46. 全排列
  • (三)mysql_MYSQL(三)
  • (转)程序员技术练级攻略
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .gitignore文件—git忽略文件
  • .net core docker部署教程和细节问题
  • .NET Core 中插件式开发实现
  • .NET Standard 的管理策略
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!