一、传统模型演进史
1. 协同过滤(CF)
利用user-item交互矩阵(m x n维, 一般用户数m远大于商品数n),生成user向量和item向量。
- UserCF
- 通过当前用户topk相似用户对待预测商品的评分加权平均得到,具有社交性、适合热点追踪。
- 需要维护 m 2 m^2 m2级别的用户相似度矩阵。
- 用户的购买历史数据大多稀疏,因此用户相似度计算不可靠。
- ItemCF:
- 通过当前用户最喜爱topk的商品,搜索其他相似商品,生成推荐列表。具有明显的兴趣类别特征。
2. 矩阵分解(MF)
业务数据为交互矩阵 D m × n D_{m\times n} Dm×n。注意消除打分偏差(用户给分偏好、评分体系均值等)
- 特征值分解:仅用于方阵,无法用于推荐
- 奇异值分解:要求原始矩阵稠密、计算复杂度高
- 梯度下降:目标函数为使user向量
p
u
\boldsymbol p_u
pu和item向量
q
u
\boldsymbol q_u
qu点积尽可能逼近对应的交互评分
r
u
i
r_{ui}
rui
m i n q , p ∑ ( r u i − q i ⋅ p u ) + λ ( ∣ ∣ q i ∣ ∣ + ∣ ∣ p i ∣ ∣ ) 2 min_{\boldsymbol{q,p}} \sum(r_{ui} - \boldsymbol q_i\cdot \boldsymbol p_u) + \lambda(||\boldsymbol q_i|| + ||\boldsymbol p_i||)^2 minq,p∑(rui−qi⋅pu)+λ(∣∣qi∣∣+∣∣pi∣∣)2
3. 逻辑回归(LR)
-
步骤:
- 将用户特征转换成数值向量
- 确定优化目标(点击率、购买率)
- 训练、预测排序
-
公式:
f ( x ) = 1 1 + e − ( w ⋅ x + b ) f(\boldsymbol x)=\frac{1}{1+e^{-(\boldsymbol{w\cdot x} + b)}} f(x)=1+e−(w⋅x+b)1
arg max w ( f ( x ) ) y ( 1 − f ( x ) ) 1 − y \argmax_{\boldsymbol w}(f(\boldsymbol x))^y(1-f(\boldsymbol x))^{1-y} wargmax(f(x))y(1−f(x))1−y -
缺点:无法进行自动特征交叉、筛选等操作。存在辛普森悖论。
4. 特征交叉模型(POLY2、FM、FFM)
- POLY2
P O L Y 2 ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n w h ( j 1 , j 2 ) x 1 x 2 POLY2(\pmb w, \pmb{x})=\sum^n_{j_1=1}\sum^n_{j_2=j_1+1}\pmb{w}_h(j_1,j_2)\pmb{x_1}\pmb{x_2} POLY2(www,xxx)=j1=1∑nj2=j1+1∑nwwwh(j1,j2)x1x1x1x2x2x2 - FM
- FFM
5. 集成学习模型(GBDT+LR)
6. 分段线性模型(LS-PLM)
通过聚类分片,在不同分段类使用LR, 实现整体上的非线性
二、深度学习模型演进史
三、业务关键问题
2.1 冷启动
2.2 数据稀疏
2.3
QA
- POLY2算法中,两个特征交叉为什么可以直接用乘法?与后深度学习中的各类向量乘法有什么关系?