python 稀疏矩阵乘法_GitHub项目tensor-learning新增内容 (1):基于交替最小二乘法的张量分解技术...

关于本文: tensor-learning是我们近期在GitHub上开展的一个项目,主要提供面向张量分解/张量复原/张量回归的技术说明文档和Python代码,文件形式为Jupyter Notebook,项目地址为:tensor-learning

注:该项目相应的Python代码主要依赖于Numpy,能够最大程度上方便读者阅读和掌握。


1. 如何打开原文?

打开原文的方式有两种:

  • 原地址:在GitHub repository中直接打开Jupyter Notebook文件,链接为:

Tensor Factorization with Alternative Least Square (ALS) - xinychen/tensor-learning

  • 推荐地址:由于Jupyter Notebook文件在GitHub repository中直接打开后显示效果往往不佳(特别是公式),因此,可以考虑在nbviewer中打开Jupyter Notebook文件,相关链接如下:

Tensor Factorization with Alternative Least Square (ALS) - Jupyter Notebook Viewer


2. 技术说明文档

在众多现实场景中,所获取到的数据在代数结构上往往是张量,而非矩阵,本文首先回顾基本的张量分解形式,然后,详细讨论如何利用交替最小二乘法(Alternating Least Square, ALS,适用于矩阵/张量分解的经典求解算法)对张量分解形式进行求解,并就公开数据集进行缺失数据修复测试。

2.1 张量的Tucker分解

在张量分解中,一类经典的张量分解形式为Tucker分解,其分解的任务是得到一个核心张量和多个因子矩阵。

93c938b5a60e2aef94ac15ae5985032d.png

当我们有一个核心张量和多个因子矩阵时,可按照相应的运算规则得到一个张量,Python代码如下:

ec2b32d8c4ce6755ef851f631c535de2.png

2.2 张量的CP分解

除了Tucker分解,另外一种更为简洁的张量分解形式为CP分解,通过对给定张量进行分解,能够得到几个因子矩阵。

840dadef27afdb5e055c72bd04940203.png

2.3 Tucker分解的优化问题

在Tucker分解中,为了得到合理的核心张量和因子矩阵,需将分解问题转化为一个常见的机器学习优化问题。

ab4c3749ce4e5b6853e33b246aadcbf1.png

b01192a050c8f5109f08d08344e50c2c.png

在这里,为了得到核心张量和因子矩阵,需要将优化问题进行变换,写出关于各个变量的最小二乘估计,在迭代更新过程中,当就某一个变量进行估计时,只要控制其他变量不变即可。

8f6488879a15f7da50b132cd1ef104c4.png

4d60a7a6820ce900060684c1eb0a1cb2.png

91e0c10af2cbc3371a51d6a8ad248520.png

2.4 CP分解的优化问题

CP分解相比Tucker分解不管在推导过程还是代码编写上都更加简洁,当然,计算消耗也更小。为了得到CP分解的因子矩阵,同样需要根据优化问题写出各个变量(因子矩阵)的最小二乘估计,在此基础上,可采用交替最小二乘法进行迭代更新,从而估计出因子矩阵。

a1b2d6a4039fcaf10f1f376504d1ce45.png

相应的Python代码为:

aca8977c7fcad3b2c1385f80d9c24e05.png

2.5 时空交通数据缺失值修复

选用已经组织成三阶张量的广州城市路网车速数据集进行测试(数据集介绍),实验代码如下:

bd1a47023045e3c1af5fca048627f6a0.png

009c2a8c35d8e6eb291de2d7c0e95c04.png

4111e04fab4c92befa14bfc03b4e6962.png

3ece30d2b153957ffab1bf3a0418fe57.png

f162dc42b273987f5a5a9dbbab79beab.png

d9cd63e746a511a49ccdb091c173737d.png

3. tensor-learning项目

Tensor Learning (张量学习): Tutorials and Python codes for tensor factorization/completion/regression techniques with an application of spatiotemporal data analysis. [tensor-learning -- Blogger]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值