推荐系统的行为数据

文档数据 vs 行为数据

图片文字说明

电商网站最常用模式:

  • 搜索->浏览->点击(->购买)
  • 文档->词 vs 搜索词 -> 商品
  • 用TF-IDF计算搜索词下商品的重要性

应用

  • 根据用户搜索召回商品
  • 热搜排行榜

搜索数据文档化(以query为粒度)

文本场景
搜索场景
C1 该文档的总词数C1 搜索该query后的总点击数
C2 该词在文档出现次数C2 搜索该query后对商品的点击数
C3 总文档数C3 总query数
C4 该词出现的文档数C4 该商品出现的query数

tf-idf = c2/c1 * log(c3/(c4+1)) = 每个query下最重要的商品



人群聚类

  • 用户行为模式拆解

  • 表现:用户点击了《明朝那些事》

  • 本质:用户属于历史爱好者,历史爱好者喜欢看《明朝那些事》

  • P(item│user)=∑_topic〖P(topic|user)×P(item|topic)〗

  • 用矩阵分解拆解集体中的子聚类

  • 人群聚类

  • app聚类

行为数据文档化

图片文字说明

讲行为数据看做文档之后,就可以用文本聚类的方法做行为主题聚类了。

用户行为聚类能得到什么有用数据

这里的标签和前面文本的标签相比,因为是根据物品上行为计算得来,所以更抽象,不可读,但是包含更丰富、更高抽象层次含义。

最后,文本数据上的各种LDA应用,在这里也都可以迁移使用。


行为序列文档化(session是意图,如:几组点击)

图片文字说明
  • 给定用户历史行为,预测未来行为

  • 根据上下文预测当前词

  • 上下文->前序词

  • 当前词->下个词

  • node2vec deepwalk更好地利用网络结构

行为序列文档化之后,就可以应用序列方法来计算行为序列了。Node2vec更好利用网络结构,带偏随机生成大量样本,计算embedding。


行为数据向量化

  • item向量化的作用
  • 任意两个item可计算相关性
  • 解决协同过滤稀疏性问题,提升覆盖率
  • 稠密协同过滤的问题
  • 如何找到TopK相关的item?暴力计算?
  • 近似最近邻搜索:faiss


DuckType思想:如果它像鸭子一样走路,像鸭子一样叫,那么它就是一只鸭子。

这里的意思是,如果这个数据各方面都能和文本数据对的上,那就可以当做文本数据来对待。


未知转化为已知:互联网上的数据算法存在明显的二八原则或者说头部效应头部算法调优充分,应用多,工具多,实用性强。

要增强自己把问题转化为已知算法的能力,而不用求全学会所有算法。


求同存异,说的是虽然像文本数据,但也要力求更符合当前数据,例如item2vec或者deepwalk可能就比word2vec更适合建模网络数据。而LSTM就可能更适合建模长序列数据。




代码资源:

ntopic model:

lightLDA: https://github.com/Microsoft/LightLDA

Familia: https://github.com/baidu/Familia

embedding representation

word2vec: https://github.com/tmikolov/word2vec

node2vec: https://snap.stanford.edu/node2vec/

StarSpace: https://github.com/facebookresearch/StarSpace

Tensorflow: https://www.tensorflow.org/tutorials/representation/word2vec

approximate kNN search

faiss: https://github.com/facebookresearch/faiss


欢迎技术探讨