推荐讲解很好的文章
https://zhuanlan.zhihu.com/p/45167021
在推荐系统中的应用
- 无现成的网络结构,需要自己构建网络图;
推荐系统中的数据格式为:
- 二部图数据:左侧为user集合,右侧为item集合;user-item互相连接,user-user之间无连接,item-item之间无连接;
- 行为序列数据:用户在一段时间内的点击行为(或购买行为)数据;
实现说明
(1)原始数据:使用的是一段时间内的购买行为序列(千万量级);
- 说明:行为序列数据可以直接应用word2vec算法,获得每个item的Embedding向量;
(2)根据行为时间先后顺序,将行为序列数据拆分为 item ---> next_item 节点对格式。用于:构建item的邻居节点集合【构图过程参考:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba】
(3)构建item的邻居节点集合,python中的networkx模块无法灵活应用大数据量,选择使用“字典”结构存储 {item_M: [item1, item2,...,], itemN: [item2, item5,...,], ...};
- 通过节点对数据,构造出每个节点的下游节点集合(有向)
- 同时考虑对下游节点集合数据进行加权(共同出现次数)处理,防止在随机游走时采样出过多的冷门商品(有权)
(4)由构造的节点集合数据,从每个节点出发,随机游走M步,生成一条序列数据;
- 每个节点作为起始节点出发N次;
- 根据下游节点集合的权重值进行随机采样,达到随机游走的目的,每次最多游走M步,如果遇到无下游节点的节点,提前终止;
(5)获得一条条的随机游走的序列数据;
(6)通过python中的gensim模块训练word2vec模型;
(7)获得每个节点的Embedding向量;
(8)使用Embedding向量做你想做的事情:)
网友评论