深度学习推荐系统
互联网的增长引擎 —— 推荐系统
- 推荐系统要处理的是“人”和“信息”的关系,信息包括“用户信息”、“商品信息”、“场景信息”
- 推荐系统的数据按照实时性的强弱排序为:
- 客户端及服务器端实时数据处理
- 流处理平台准实时数据处理
- 大数据平台离线数据处理
- 得到原始数据之后,需要数据加工得到的数据有:
- 推荐模型所需的样本数据,用于算法模型的训练和评估
- 推荐模型服务(model serving)所需的“特征”,用于推荐系统的线上推断
- 系统监控、商业智能(Business Intelligence,BI)系统所需的统计型数据
- 模型训练分为:
- 离线训练:利用全量样本和特征,使模型逼近全局最优点
- 在线更新:准实时地“消化”新的数据样本,更快地反映新的数据变化趋势
前深度学习时代 —— 推荐系统的进化之路
传统推荐模型的优点:
- 可解释性强
- 硬件环境要求低
- 易于快速训练和部署
传统推荐模型的演化关系图
协同过滤
缺点:
- 因为只引入了用户和商品之间的行为数据,导致头部内容更容易和其他内容相似,而长尾内容因为稀疏的行为向量,很难被推荐出去
- 数据单一、泛化能力差
UCF
用户相似度计算
- 余弦相似度:计算用户i和用户j之间的向量夹角大小,夹角越小,说明两个用户更相似
s i m ( i , j ) = c o s ( i , j ) = i ∗ j ∣ ∣ i ∣ ∣ ∗ ∣ ∣ j ∣ ∣ sim(i, j) = cos(i, j) = \frac{i * j}{||i|| * ||j||} sim(i,j)=cos(i,j)=∣∣i∣∣∗∣∣j∣∣i∗j - 皮尔逊相关相似度:
- 使用用户平均分对评分进行修正,减小了用户偏置带来的影响
s i m ( i , j ) = ∑ p ∈ P ( R i , p − R i ˉ ) ( R j , p − R j ˉ ) ∑ p ∈ P ( R i , p − R i ˉ ) 2 ∑ p ∈ P ( R j , p − R j ˉ ) 2 sim(i, j) = \frac{\sum_{p\in P} (R_{i,p} - \bar{R_i}) (R_{j, p} - \bar{R_j})}{\sqrt{\sum_{p\in P} (R_{i,p} - \bar{R_i})^2} \sqrt{\sum_{p\in P} (R_{j,p} - \bar{R_j})^2}} sim(i,j)=∑p∈P(Ri,p−Riˉ)2∑p∈P(Rj,p−Rjˉ)2∑p∈P(Ri,p−Riˉ)(Rj,p−Rjˉ) - 使用物品平均分对评分进行修正,减小了物品偏置对结果的影响
s i m ( i , j ) = ∑ p ∈ P ( R i , p − R p ˉ ) ( R j , p − R p ˉ ) ∑ p ∈ P ( R i , p − R p ˉ ) 2 ∑ p ∈ P ( R j , p − R p ˉ ) 2 sim(i, j) = \frac{\sum_{p\in P} (R_{i,p} - \bar{R_p}) (R_{j, p} - \bar{R_p})}{\sqrt{\sum_{p\in P} (R_{i,p} - \bar{R_p})^2} \sqrt{\sum_{p\in P} (R_{j,p} - \bar{R_p})^2}} sim(i,j)=∑p∈P(Ri,p−Rpˉ)2∑p∈P(Rj,p−Rpˉ)2∑p∈P(Ri,p−Rpˉ)(Rj,p−Rpˉ)
- 使用用户平均分对评分进行修正,减小了用户偏置带来的影响
缺点
- 在互联网场景下,一般用户数远远大于物品的数量,因此用户相似度矩阵的存储开销会非常大
- 用户历史数据向量一般都比较稀疏,所以对于购买或者点击行为非常少的用户,寻找相似用户不是非常准确。不适用于低频购买的场景,例如airbnb、大额商品购买等等
ICF
物品相似度的计算方法同上
UCF和ICF的应用场景
- 新闻推荐场景:UCF
- 用户对新闻的兴趣点是分散的,新闻的时效性和热度往往是更重要的属性,UCF通过发现相似用户喜欢什么可以更好地发现热点和跟踪热点的趋势
- 电商和视频推荐场景:ICF
- 用户的兴趣点相对比较稳定,在一段时间内,更适合推荐相似的物品
矩阵分解
优点:
- 解决了协同过滤中处理稀疏共现矩阵的问题,增强模型的泛化性。原理:隐向量的生成基于全局的信息,不像CF,如果两个用户没有相同的购买行为,那么他俩的相似度为0
- 相比于CF,空间复杂度降低,从 n 2 n^2 n2降到了 ( n + m ) ∗ k (n+m)*k (n+m)∗k
缺点:
- 没法引入用户侧、物品侧的其他特征和上下文特征
算法:
- 把用户和物品稀疏共现矩阵分解成用户和物品稠密矩阵的乘积,每一个用户/物品用一个k维的向量表示,k越小,向量包含的信息量越少,模型的泛化能力越强
LR
sigmoid函数 f ( x ) = 1 1 + e − ( w ∗ x + b ) f(x) = \frac{1}{1+e^{-(w*x+b)}} f(x)=1+e−(w∗x+b)1
优点:
- 数学含义上的支撑
- 可解释性强
- 工程需要
缺点:
- 表达能力不强
- 需要人工做特征交叉、特征筛选,可能造成“辛普森悖论”的错误结论
辛普森悖论:在分组实验中(交叉特征)都占优势的一方,可能在总评中(单一特征)反而是失势的一方
FM
v i v_i vi, v j v_j vj是特征 x i x_i xi, x j x_j xj对应的embedding(每个特征值都学习到一个隐向量),特征组合 x i x j x_i x_j xixj对应的权重使用 < v i , v j > <v_i, v_j> <vi,vj>表示。这样做的好处在于提高模型的泛化能力,即使特征组合 x i x j x_i x_j xixj没有出现过,只要 x i x_i xi, x j x_j xj对应的emb