基础算法应用

推荐相关

基于用户的协同过滤
我们已有的数据: 用户u1买了(m1,m2..)u2(m3,m4..)等等,找到和目标用户最相似的前k个用户,计算相似度为 k1,k2,...,kk 。如果第n个用户卖了商品p,而该商品u1没买,那么该商品的推荐值加上 kn 。最后得分高的排在前面。
设N(u)表示用户u喜欢的物品,N(v)表示用户v喜欢的物品,则两个用户的相似度为(jacard):w= N(u)N(v)N(u)N(v)
基于物品的协同过滤
我们已有的数据: 用户u1买了(m1,m2..)u2(m3,m4..)等等,建立一个逆向字典 即卖了物品m1的用户有{u1,u2,u3…}.同理找到和目标物品最相似的前k个物品,后续同理。

问题:

基于物品过滤的方式比基于用户过滤的方式计算的快,为什么?
假如,网站已经根据某一刻用户的历史购买记录建立了所有用户的之间的相似度。那么来了一个用户,首先要计算这个用户的前k个相似用户。然后遍历这个用户的前k个相似用户的物品栏,计算所有物品的推荐值,然后排序ok。
假如,网站已经根据某一刻用户的历史购买记录建立了所有用户的前k个用户的相似度。那么来了一个用户,首先要遍历这个用户的前k个相似用户的物品栏,计算所有物品的推荐值,然后排序ok。
假如,网站已经根据某一刻用户的历史购买记录建立了所有用户的前k个用户的相似度,并计算完了推荐给他的物品。那么来了一个用户,直接推荐物品。
基于物品的推荐,网站已经存储了某个物品的前k个相似物品,直接输出即可。
在数据稀疏情况下,基于物品推荐更好,为什么?
首先我们构建一个基于用户推荐的badcase:
u1:i1,i2,i3
u2:i1,i2,i3,b1(根据u2 会把b1推给u1)
然后构造一个根据item 算法给出不同推荐的数据
u3:i3,b2
u4:i3,b2
u5:i3,b2
u6:i3,b2
这样根据item算法会推荐b2
根据结果反推原因:
b2优于b1 ,那么有两种情况:1 只考虑i3推可能比根据i1,i2,i3联合推荐更优,这是时间衰减的道理,历史购买离得越久,支持力度越小。2 用户稀疏的数据分布大概是这样的,相对较多的用户,每次只买过,一两件商品(总之很少),少数买的多。所以找前k个相似用户是非常不靠谱的事情,(极有可能会匹配到少数买的多的用户),因为即使前k个,也不相似。3 从数据推荐结果来看,item推荐效果比较(浅,泛),用户推荐有可能比较深。什么意思呢?就是我在网上买了可乐,推荐给我鸡翅。其实不用推荐我也可能买鸡翅(假设可乐+鸡翅绝配)。但其实我是资深宅腐男,我之前买了酒、零食、漫画等等,这些根据item比较难推荐,但是根据用户有可能推荐。用户推荐的麻烦在于,之前有个变态也买了酒和漫画,还买了女性内衣。用户推荐就会推荐我女性内衣。综合,数据较少的情况下,item可能白推荐(因为我已经想到了),用户推荐可能错误的推荐。很多商家综合,还是宁愿选择白推荐,所以选择了item推荐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值