加入商品分类信息,考虑用户所处阶段的 图模型 推荐算法 Rws(random walk with stage)
场景:
一个新妈妈给刚出生的宝宝买用品,随着宝宝的长大,不同的阶段需要不同的物品。
这个场景中涉及到考虑用户所处阶段,给用户推荐物品的问题。
如果使用用户协同过滤,则需要根据购买记录,找到与用户处于同一阶段的用户。
不加入分类信息,单纯使用物品信息,则可能因为买了不同牌子的尿布,而判断为非相似用户,
所以加入商品分类信息
算法步骤:
1. 加入分类信息

1)
根据时间将用户交易记录分成若干阶段
(比如,近90天,近360天-近90天,...)
2)
对于
中的记录(以
中的
为例),在向量
的
的分量(即物品
所属的类别路径)上加上1
对于记录
,得到向量![]()
对其进行L2正规化(每个分量除以
)
得到 ![]()
3)
合并各阶段向量![]()
2. 生成相似度矩阵
2.1 用户相似度矩阵
基于物品的相似度
为用户
购买过的商品的集合
基于分类的相似度 ![]()
用于控制两个相似度的权重
2.2 物品相似度
为购买过商品
的用户的集合
2.3 类别相似度
IC(information content)
为类别
下的商品销量占所有销量的比例
LCS(least common subsumer)

即为最近的共同祖先
3. 概率图模型求解
3.1 构建矩阵
为用户相似度矩阵,
为物品相似度矩阵,
为类别相似度矩阵,
为用户和产品的关系(若用户购买过产品,则为1,否则为0)
为用户和类别的关系(若用户购买过该类别下产品,则为1,否则为0)
为产品和类别的关系(若产品属于该类别,则为1,否则为0)
graph Laplacian:
为对角矩阵,
处为
第
行的和
3.2 Random walk with restart
迭代下面公式直到收敛:
为只有第
个分量为1,其他分量都为0的向量,表示从第
个用户处出发,初始![]()
或者求解
的逆矩阵,得到
4. 生成推荐
得到
中最大的前k个分量![]()
若
为用户,则将其最近购买的物品加入推荐列表中
若
为产品,则将产品加入推荐列表中
若
为类别,则将该类别下销量最好的几个加入推荐列表中

浙公网安备 33010602011771号