快速候选召回
协同过滤
ItemCF 基于物品相似度的协同过滤
核心假设: 用户的兴趣具有连贯性,喜欢某个物品的用户往往会对相似的物品感兴趣
物品相似度计算
\[ w_{ij} = \frac{C[i][j]}{\sqrt{|N(i)\cdot |N(j)|}} \] 其中 \(N(i)\)表示与物品,\(C[i][j]\)有交互的用户总数,是两个物品的共现次数(同时对两个物品有过行为的用户数)。分母对共现次数进行标准化,防止热门商品占据绝对优势。 基于用户-物品倒排表可以大幅提速:为每个用户维护一个物品交互列表,遍历时将列表中的物品两两配对,累加共现矩阵\(C[i][j]\),再除以 \(\sqrt{|N(i)\cdot |N(j)|}\)得到余弦相似度,只需计算真正有共同用户的物品对。 ### 处理评分数据的相似度计算 前面的余弦相似度适用于隐式反馈场景(如点击、浏览),当有显式评分数据(如5星评分)时,皮尔逊相关系数更符合 [ w_{ij} = ]
基于相似物品,可以预测用户对未接触物品的评分:
[ {u,j} = {r_j} + ] #### 参数说明 - ( S_j ):与物品 (j)
相似的物品集合
- ( U{ij} ):同时评价过物品 (i) 和 (j) 的用户集合
- ( r_{ui} ):用户 (u) 对物品 (i) 的评分
- ( {r_i} ):物品 (i) 的平均评分
Swing算法
核心假设:如果多个用户在其他共同购买行为较少的情况下,同时购买了同一对物品,那么这对物品之间的关联性就更可信。
相比于ItemCF的优势
传统ItemCF在处理这类细粒度的商品关系时往往力不从心——它将所有用户-物品交互一视同仁,无论是用户深思熟虑的购买,还是偶然的误点击、好奇心驱动的浏览,都被赋予相同的权重。这种做法不仅难以区分真正的兴趣关联和随机噪声,更无法有效捕捉物品间的替代性与互补性关系。 ### swing具体内容 Swing 首先将用户与物品的交互数据转化为二部图:
- 用户和物品分别作为两类节点
- 发生过交互则添加一条连接边
设:
- ( U_i ) 和 ( U_j ):分别表示与物品 ( i ) 和 ( j )
有过交互的用户集合
- ( I_u ):用户 ( u ) 交互过的所有物品集合
对于同时购买(或交互)过物品 ( i ) 和 ( j ) 的每一对用户 ( (u, v) ),如果他们之间的其他共同购买行为越少:
[ |I_u I_v| ]
则说明他们共同选择这对物品的行为越具有特异性,应贡献更高的相似度得分。
Suprise 算法
UserCF
类似ItemCF
矩阵低秩分解
FreeSVD
BiasSVD
对于这个的公式 \[ \hat r_{ui} = \mu + b_u + b_i + p_u^T q_i \] 里面的bias没有和pq相乘的原因 很有意思。
I2I召回
这个的理论基础来自于Word2Vec。
1. 提问 -
核心:提出好问题,问题类型(描述、探索、推理、预测)决定分析方向。 -
关键:将宽泛问题转化为可被数据回答的具体问题,明确所需数据与分析路径。
## 影子数据集的构建方法