文章:Dynamical Representation Learning for Ethereum Transaction Network via Non-negative Adaptive Latent Factorization of Tensors
目的:预测以太坊交易链接
方法:非负张量分解
这篇文章是我自己写的,写得很菜,只是记录一下自己当时的思路,如果对同学们有所帮助,那就超出我的预期了~
问题:怎么去实现以太坊潜在交易网络的算法?
思路:
- 这是个什么问题?
- 预测问题,预测两个个体之间的关系
- 有什么其他算法是预测两个个体之间的关系的?
- 推荐系统。由于我的老师罗辛老师是在这方面的专家,我自己对基于矩阵/张量分解的协同过滤推荐系统这块比较熟悉,因此第一时间就想到了这个。
- 不同点。之前比较熟悉的是“不完备数据表征”,将商品和人之间的关系看作矩阵,那么该矩阵必然有许多元素是空的,因此可以通过非负矩阵分解算法对其进行填充,这就是通俗的说法。但是我不需要填充,因为这种填充只能在已经存在的时间维度进行预测,但我的目标是对未来的两个个体之间的交易进行预测。
- 实验
- 矩阵分解
- 问题
- 以太坊交易存在明显的富者越富贫者越贫的问题,因此数据极度不平衡
- 矩阵建模压缩了时间维度
- 思路
- 主要是看我师兄吴昊的文章得到的想法,既然矩阵不能建模时间信息,那么用张量对时间进行切片,不就能获得一定程度的时间信息了?
- 问题
- 张量分解
- 问题
- 传统的非负张量分解算法需要调参
- 思路
- 利用粒子群算法解决调参
- 问题
- 矩阵分解
要研究的问题简述:利用过去的以太坊交易网络数据,对未来某两个个体之间是否会产生交易的预测,如下图。
以太坊交易网络是随时间变化的,假设我们将其切分未个时间切片,那么每一个时间切片是不是就是一个单独的以太坊交易网络?那么我们就可以将这些切片建模为张量,如下图。里面的每一个元素,都是两个个体在时间切片内的交易金额和。
至此,数据模型便已经建立好了,是不是非常简单?那么下面就该对算法进行描述了。
什么是张量分解算法?其实也很简单,就是一个张量可以被一系列的张量之和表达。这些张量可以由三个向量相乘组成。这样推断,那么张量其实可以由一系列的向量表示,如下图。这些向量便可以组合成三个隐特征矩阵。
注意,我的文章只用到发送者节点和接收者节点的隐特征矩阵。(时间隐特征矩阵没有用到。为什么?不是说要时间信息吗?因为在建模时已经隐含了时间信息。当然如果有奇思妙想用上这些时间隐特征,你可以尝试发一篇文章了。)
那么我的实验的整体框架就是下图这样了。
这里,我用支持向量机的二分类划分链接是否存在。