美文网首页我爱编程
基于用户的协同过滤算法

基于用户的协同过滤算法

作者: 聆听朝阳的美好_f35f | 来源:发表于2018-06-11 21:06 被阅读0次

    算法描述

    基于用户的推荐算法显然就是根据用户之间的关系做推荐。具体做法是:针对推荐的目标 用户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数据推荐给目标用户。

    针对大数据的优化

    1. 如果物品数量和用户数量较大,则上述计算时间将会大大增加。因此,可以在计算物品两两之间相似度的时候以物品为key,用户id为value 建立索引准备一份数据,再以用户 id 为key,用户购买、点击、收藏信息为value准备一份数据,计算出用户对物品的喜爱程度并以稀疏向量的形式保存。

    相关文章

      网友评论

        本文标题:基于用户的协同过滤算法

        本文链接:https://www.haomeiwen.com/subject/woiceftx.html