zoukankan      html  css  js  c++  java
  • 协同过滤对候选集的处理

    生成候选集 

    生成候选集的时候,是根据用户的历史喜好item进行的。假设用户以前喜欢的 item 为:$i_m, m=1ldots M$。 如果用户过去喜欢的 item 比较多,需要设定一个 liked_topN 值,表示最多就取这么多item,也即$M le liked\_topN$,当然这些item是依据喜好分值排序过的。除了设定 liked_topN 值之外,还可以使用相似度分值来筛选item喜好集(liked set),设定一个喜好阈值,只有喜好分值超过这个阈值,才加入到喜好集中,用于生成候选集。

    拿到这些item之后,然后根据相似度为每一个item都生成N篇最相似的文章,然后将所有的item生成的文章组合起来,就是候选集。设候选集的大小为S,则$Slt M*N$。小于的原因是因为候选集中有可能产生用户已经看过的item,需要将这些过滤掉,剩下item自然是小于$M*N$了。

    处理候选集

     

    假设某个用户喜欢的item依次为:$i_1,i_2,i_3$。由这三个item可以生成候选集,生成规则为:

    事先可以算出所有item两两之间的相似度矩阵,在该矩阵中找出与$i_1$最相似的3个(该值可以设置,用$N$表示)item,记为:$i_{11}, i_{12}, i_{13}$,同理,可以找到与$i_2, i_3$最相似的item,记为:$i_{21}, i_{22}, i_{23}$,$i_{31}, i_{32}, i_{33}$。

    然后要在这些候选集中为该用户生成最终的推荐item。该如何做呢?

    这个时候,要计算该用户对候选集中的每一个item的喜好分值,最后对这些分值作排序,生成推荐结果。

    用$u$表示该用户。则用户对某个item的喜好分值用$P(u,item)$来表示。设$i_{m}$表示该用户喜欢的第m个item,设$i_{mn}$表示由该用户喜欢的第m个item生成的候选集中第n个item,则该用户对候选集中的item的喜好分值可表示为:

    $$P(u,i_{mn})=frac{sum_{m=1}^{M}P(u,i_m)SIM(i_m,i_{mn})}{sum_{m=1}^{M}SIM(i_m,i_{mn})}$$

    其中,$M$表示该用户喜欢的 item 个数。

    这样做了之后,可以权衡相似度和历史喜欢的item之间的分量。下例解释了这样做的好处:

    设用户历史偏好中$i_1$是最喜欢的,但是由其生成的$i_{1n},n=1ldots N$与$i_1$的相似度却比较低,而$i_2$在历史偏好中排名第二,但是由其生成的$i_{2n},n=1ldots N$与$i_2$的相似度却比较高,此时最终的结果中用户对$i_{2n},n=1ldots N$的喜欢度比$i_{1n},n=1ldots N$可能更高是合理的。

    所以在候选集中权衡相似度与偏好值可以生成更加准确的推荐结果。


    去吧,去吧,到彼岸去吧,彼岸是光明的世界!
  • 相关阅读:
    ASP.NET 判断GRIDVIEW的checkbox是否选中
    分享C#实现XML和实体序列化和反序列化的代码
    设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)
    如何验证已经加载的symbol file与module是否匹配?
    成功运行过的WinDBG Commands–12262010
    间歇性连接数据库失败, 先试试下面两篇文章
    如何使用符号文件?
    为<<Advanced Windows Debugging>>配置符号路径
    TCP中Connection和端口的关系
    SQL Profiler Trace中的列SPID
  • 原文地址:https://www.cnblogs.com/lengyue365/p/5268463.html
Copyright © 2011-2022 走看看