算法描述
基于用户的推荐算法显然就是根据用户之间的关系做推荐。具体做法是:针对推荐的目标 用户A,首先找到跟他兴趣相似的几个用户B、C、D、E,然后根据 B、C、D、E 几个用户喜欢的物品为 目标用户A 推荐喜欢的物品。
具体思路
1. 计算用户间兴趣相似度
对于感兴趣或者喜欢的物品,用户一般都会产生点击、购买、收藏等行为,可以利用用户的点击和浏览等行为来衡量用户之间的相似度。相似度的计算可以参考 jaccard、 余弦相似度 等。
jaccard:
针对某一维度(比如:购买行为)可以使用以下公式得到用户之间相似度:
分子表示 用户A 和 用户B 共同购买的物品数量
分母表示 用户A 和 用户B 购买物品的合集数量
余弦相似度
可以整合多维度(比如:购买行为、点击行为、收藏行为),通过人工给行为打分,比如购买给 0.5 分、点击给 0.2 分、收藏给 0.1 分,将结果进行累加来表征用户对该物品的喜爱程度。然后,以向量的形式表达出用户对所有物品的喜爱程度,最后用户之间的相似度就是物品向量之间的余弦相似度。
以下是两向量余弦相似度的计算公式
2. 获取与推荐的目标用户最相似的 K 个用户
根据用户两两之间的相似度,得到 K 个兴趣最相似的用户
3. 得到推荐结果
从上述的 K 个用户(u1,u2,u3, ... uk)中得到目标用户没有购买但是相似用户购买过的物品,比如物品:A、B、C、D,对物品进行打分:
A: u1 * u1对A的喜爱程度 + u2 * u2对A的喜爱程度 + .... +
B:......
根据打分取top数据推荐给目标用户。
针对大数据的优化
- 如果物品数量和用户数量较大,则上述计算时间将会大大增加。因此,可以在计算物品两两之间相似度的时候以物品为key,用户id为value 建立索引准备一份数据,再以用户 id 为key,用户购买、点击、收藏信息为value准备一份数据,计算出用户对物品的喜爱程度并以稀疏向量的形式保存。
网友评论