Link: https://arxiv.org/abs/1803.02349

摘要

  • 挑战:scalability、sparsity和cold start。
  • 方法:基于graph embedding,根据用户历史行为,构建item graph,学习item embedding。用item embedding计算商品相似度。使用side information解决sparsity和cold start的问题。

简介

  • 两阶段: matching 和 ranking
    • matching: 对每个商品产生一个候选集。
      • 三个重要部分:构造item graph、用BGE、GES和EGES学习embedding、部署提出的方法(XTensorflow)
    • ranking: 根据用户喜好,对候选集商品排序。

框架

预备

  • DeepWalk: 根据word2vec,在graph中随机移动,产生节点序列,再用skip-gram的方法学习embedding。

从用户行为构建item graph

  • 基于会话的用户行为:只考虑在窗口(1小时)中的用户行为序列。

  • 如果行为A和B是连续的,则存在A到B的边,权重为所有用户的出现次数除以总次数。

  • 噪声:

    • 点击小于一秒
    • 垃圾用户:三个月购买超过1000件或点击超过3500.
    • 卖家修改了商品信息的

基本Graph Embedding(BGE)

  • 用DeepWalk在构建好的graph上学embedding。随机移动的转移概率和节点出边权重成比例。使用负采样的skip-gram方法。

使用Side Information的Graph Embedding(GES)

  • 解决cold start问题。具有类似side information的商品的embedding应该相近。
  • side information: 类别、店铺、价格等
  • 产生同样维度d的1个商品embedding和n个side information的embedding,最后将这些embedding进行平均。

使用Side Information的增强Graph Embedding(EGES)

  • GES中不同side information具有相同权重,不是很合理。
  • 将每个embedding平均之前进行加权。权重为学习参数。需要加指数幂防止变成全0。

系统部署运作

  • 在线子系统:淘宝个人化平台(TPP)、排名服务平台(RSP)
  • 在线子系统工作流程
    • 用户登录淘宝APP,TPP提取用户最新信息,从离线子系统查找商品的候选集,喂给RSP,RSP用DNN排序完把结果返回给TPP。
    • 用户在淘宝的行为被收集、保存成日志数据供离线子系统使用。
  • 离线子系统工作流程
    • 根据用户行为构建item graph。实际中,选择最近三个月的日志。对数据进行清洗,产生基于会话的用户行为序列,构建item graph。
    • 实际中,将图划分成若干子图,使用ODPS并行处理。使用基于迭代的分布式图框架产生随机移动序列,大约1500亿条。
    • XFT使用了100个GPU。所有子系统的执行时间少于六小时。