1 目标函数(总)

论文笔记:Temporal Regularized Matrix Factorization forHigh-dimensional Time Series Prediction_UQI-LIUWJ的博客-CSDN博客

1.1 求解W

我们留下含有W的部分:

然后对wi求导

线性代数笔记:标量、向量、矩阵求导_UQI-LIUWJ的博客-CSDN博客

是一个标量,所以放在xi的左边和右边没有影响

所以

也即:

对应的代码如下:(假设sparse_mat表示 观测矩阵)

from numpy.linalg import inv as inv
for i in range(dim1):#W矩阵的每一行分别计算pos0 = np.where(sparse_mat[i, :] != 0)#[num_obs] 表示i对应的有示数的数量Xt = X[pos0[0], :]#[num_obs,rankvec0 = sparse_mat[i, pos0[0]] @ Xt#sparse_mat[i, pos0[0]] 是一维向量,#所以sparse_mat[i, pos0[0]] @ Xt 和 sparse_mat[i, pos0[0]].T @ Xt 是一个意思,#输出的都是一个一维向量#[rank,1]mat0 = inv(Xt.T @ Xt + np.eye(rank))#[rank,rank]W[i, :] = mat0 @ vec0

其中:

vec0 = sparse_mat[i, pos0[0]] @ Xt
mat0 = inv(Xt.T @ Xt + np.eye(rank))

1.2 求解X

我们留下含有X的部分

表示逐元素乘积 (两个向量a和b,ab可以用diag(a) b表示)

当t=1~ld的时候,我们没有什么事情,所以此时我们更新X的方式和之前的W差不多

同理,X的更新方式为:

而当t≥ld+1的时候,我们就需要考虑

对于任意xt(我们令其为xo),他会出现在哪些中呢?

首先 是 

对xo求导,有:

其次,是所有的 

对每一个l,有用的项就是xo相关的项,于是我们可以写成,对每一个l的

对xo求导,有

还要注意一点,此时我们考虑的是下标为o+l的AR,所以o+l需要大于ld,小于T,也就是此时o的范围是o>ld-l ,<T-l【也就是说,在ld之前的xo也会有一定的AR的更新项】

于是我们可以写成

几部分拼起来,有

=0

=

+

所以xo(o≥ld+1)的更新公式为

[+]

代码如下:

for t in range(2):pos0 = np.where(sparse_mat[:, t] != 0)#[num_obs] 表示i对应的有示数的数量Wt = W[pos0[0], :]#[num_obs,rank],t可见的wiMt = np.zeros((rank, rank))#\sum diad (theta * theta)的那个矩阵Nt = np.zeros(rank)#Nt 相当于是 sum theta* x_{t-l}if t < np.max(time_lags):#这一个if,else考虑到的是首先的部分Pt = np.zeros((rank, rank))#t<ld的时候,是没有λx I的Qt = np.zeros(rank)#t<ld的时候,没有过去时间段的回归项else:Pt = np.eye(rank)#t>ld+1的时候 有λx IQt = np.einsum('ij, ij -> j', theta, X[t - time_lags, :])#theta [d,rank]#X[t - time_lags, :] [d,rank]'''对于每一个theta和X[t - time_lags, :]中的j (j∈range(rank))我们输出是一个rank长的向量,第j维是每个theta的(i,j)元素和对应的X的(i,j)元素相乘,然后求和每个theta的(i,j)元素表示向量第j个元素的第i个time lag的AR权重每个X的(i,j)元素表示向量第j个元素的第i个time lag的数据相乘再1求和,就是输出的第j个元素,有之前的时序数据加权求和得到的自归回值''''''换一个角度理解,就是theta和X[t - time_lags, :]逐元素乘积,再从一个[d,rank]矩阵,压缩成一个rank长的向量即np.sum(theta*X[t - time_lags, :],axis=0)'''if t < dim2 - np.min(time_lags):#这个if 考虑的是其次的部分,所以需要t+l>ld 且t+l<T#(ld是max(time_lags),T是dim2#t+min(lag)小于Tif t >= np.max(time_lags) and t < dim2 - np.max(time_lags):index = list(range(0, d))#t>=ld,同时t+max(ld)也没有超过最大的时间限制,此时所有的d个time lad都可以使用   else:index = list(np.where((t + time_lags >= np.max(time_lags)) & (t + time_lags < dim2)))[0]#在两头,计算可以用的o+lfor k in index:Ak = theta[k, :]#[rank]Mt += np.diag(Ak ** 2)#对应的是Σdiag(θk*θk)theta0 = theta.copy()theta0[k, :] = 0#第k行赋值为0的作用,就是Σ_{l'∈L-{l}}Nt += np.multiply(Ak, X[t + time_lags[k], :] - np.einsum('ij, ij -> j',theta0,X[t + time_lags[k] - time_lags, :]))'''AK——θl [rank]X[t + time_lags[k], :] x_{o+l}np.einsum('ij, ij -> j',theta0, X[t + time_lags[k] - time_lags, :])对于每一个theta0和XX[t + time_lags[k] - time_lags, :]中的j (j∈range(rank))我们输出是一个rank长的向量,第j维是每个theta的(i,j)元素和对应的X的(i,j)元素相乘,然后求和每个theta的(i,j)元素表示向量第j个元素的第i个time lag的AR权重每个X的(i,j)元素表示向量第j个元素的第i个time lag的数据相乘再求和,就是输出的第j个元素,有之前的时序数据加权求和得到的自归回值(之前的时间序列不包括l,因为那一行被赋值为0了)'''#也就是Nt相当于其次括号里面的第一项vec0 = Wt.T @ sparse_mat[pos0[0], t] + lambda_x * Nt + lambda_x * Qt#Wt.T @ sparse_mat[pos0[0], t] [rank]#lambda_x * Nt  第一项#lambda_x * Qt 第二项mat0 = inv(Wt.T @ Wt + lambda_x * Mt + lambda_x * Pt + lambda_x * eta * np.eye(rank))#分别是第一项、第四项、第二项、第三项X[t, :] = mat0 @ vec0

vec0:

+]

mat0:

3 更新θ

我们留下和θ (θk)有关的部分

关于θk求导

4 总结

x:

t ∈ 1~ld:

t ≥ld+1   [+]

TRMF 辅助论文:最小二乘法复现TRMF相关推荐

  1. image generation from scene graphs 论文+code复现总结

    image generation from scene graphs 论文+code复现总结 abstraction 传统方法在一些限制好的领域像鸟或花,这些方法都还不错,但是在如实地分解复杂的段落为 ...

  2. CNN基础论文 精读+复现----GoogleNet InceptionV1 (一)

    文章目录 前言 第1页 摘要与引言 第2页 文献综述 第3-4页 第4-5页 inception模块细节 第5-7页 GoogLeNet 第8页 训练细节 第8-10页 ILSVRC 2014 inc ...

  3. 论文无法复现「真公开处刑」,PapersWithCode上线「论文复现报告」

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 近日,机器学习资源网站 Pap ...

  4. 目标检测论文解读复现之六:基于YOLOv5的遥感图像舰船的检测方法

    目标检测论文解读复现 文章目录 目标检测论文解读复现 前言 一.摘要 二.网络模型及核心创新点 三.应用数据集 四.实验效果 五.实验结论 六.投稿期刊介绍 前言 此前出了目标改进算法专栏,但是对于应 ...

  5. 目标检测论文解读复现之五:改进YOLOv5的SAR图像舰船目标检测

    目标检测论文解读复现 文章目录 目标检测论文解读复现 前言 一.摘要 二.网络模型及核心创新点 三.应用数据集 四.实验效果(部分展示) 五.实验结论 六.投稿期刊介绍 前言 此前出了目标改进算法专栏 ...

  6. CNN基础论文 精读+复现----VGG(一)

    文章目录 前言 第1页 第2-3页 第四页 第五页 前言 原文Github地址:https://github.com/shitbro6/paper/blob/main/VGG.pdf 原文arxiv地 ...

  7. SCI论文图表复现-2(十字火山图)

    SCI论文图表复现-2 做单细胞测序的时候,常规所展示的火山图和RNAseq的分析是一致的,由于两个分组之间的细胞数量太多,很大概率会导致p值过于显著,无限接近于0的情况,因此导致火山图的结果非常的诡 ...

  8. 【论文代码复现2】Clustered sampling based on sample size

    [论文代码复现]Clustered Sampling: Low-Variance and Improved Representativity for Clients Selection in Fede ...

  9. CNN基础论文 精读+复现---- ResNet(二)

    文章目录 准备工作 BasicBlock块 ResNet-18.34网络结构 完整代码: 小总结 准备工作 昨天把论文读完了,CNN基础论文 精读+复现---- ResNet(一) ,今天用pytor ...

最新文章

  1. 特定场景下Yolo改进算法:Poly-Yolo
  2. 麻省理工人工智能实验室发现更小更容易训练的神经网络
  3. 【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...
  4. maven配置环境变量失败解决办法
  5. iphone android传照片大小,iPhone与安卓跨平台如何传照片图文教程
  6. vyos as a firewall
  7. php产品管理系统,企业商品进销存管理系统
  8. Win10电脑怎么取消开机密码?
  9. 集成开发项目与开发集成项目的区别
  10. 入手评测 锐龙r7 5825u和i5 1240p选哪个好
  11. Java笔试面试题三(编程算法)
  12. 《NFL橄榄球》:卡罗来纳黑豹·橄榄1号位
  13. Windows禁用端口(445端口为例)
  14. C语言中字符型(char)的简单使用
  15. [转帖]奋斗5年 从月薪3500到700万!
  16. 从“零和博弈”走向“正和博弈” PaaS引发云计算第三次浪潮
  17. 【使用python和flask建个人博客】给网站增加关键字、说明以及增加京备案号和公安局备案号
  18. STM32 Proteus仿真GP2Y101红外测距温度湿度DHT11内部RTC-0010
  19. 抓住那头牛(广搜)--算法学习
  20. 在线获取网页源代码 - 在线查看源代码 - 源文件查看工具

热门文章

  1. 服务器负载均衡的部署方式
  2. 洛谷P1202 [USACO1.1]黑色星期五Friday the Thirteenth
  3. Filter的详解与配置应用
  4. 解决在配置Oracle数据库连接错误问题
  5. VS2008 集成openCV过程
  6. 微软中国发布“IE8浏览器性能解密”,为金山网盾辟谣
  7. github如何clone别人commit的历史版本的仓库
  8. Leetcode334反转字符串[C++题解]:双指针
  9. java发布sevlet_发布一个java Servlet (静态发布)
  10. C++标准库与STL简介