Embedding,协同过滤

如何理解协同过滤?

Embedding,协同过滤


协同过滤可以简单理解为人们对“人以群分,物以类聚”算法解释和应用 。人以群分——基于用户的协同过滤基于用户的协同过滤主要基于的是用户之间的相似度(依赖用户的历史喜好数据),先计算用户之间的相似度,然后将用户喜欢的物品推荐给相似用户 。也就是说,当用户需要个性化推荐时,可以先找到与他相似其他用户(通过兴趣、爱好或行为习惯等),然后把那些相似用户喜欢的并且自己不知道的物品推荐给用户 。
物以类聚——基于物品的协同过滤基于项目(item-based)的协同过滤基于物品之间的相似度,先计算物品之间的相似度,然后根据用户对物品的评分,将用户喜欢物品的相似物品推荐给用户 。也就是说,当一个用户需要个性化推荐时,例如由于他之前购买过《集体智慧编程》这本书,所以会给他推荐《机器学习实战》,因为其他用户很多都同时购买了这两本书 。
基于用户协同过滤与基于物品协同过滤的区别基于用户的协同过滤需要在线(系统上线后)找用户和用户之间的相似度关系,计算复杂度肯定会比基于物品的协同过滤高 。同时还需考虑推荐算法的冷启动问题(如何在没有大量用户数据的前提下能够让用户对推荐结果满意),比如可以通过用户注册时让用户选择自己感兴趣的领域,生成粗粒度的推荐 。
基于用户的协同过滤是给用户推荐那些和他有共同兴趣的用户喜欢的物品,所以基于用户的协同过滤推荐较为社会化,即推荐的物品是与用户兴趣一致的那个群体中的热门物品,同时能够推荐给用户新类别物品 。基于物品协同过滤则是为用户推荐那些和他之前喜欢的物品类似的物品,基于物品协同过滤的推荐较为个性,因为推荐的物品一般都满足自己的独特兴趣,所以比较是适应于用户个性化需求强烈的领域,但由于物品的相似度比较稳定,很难推荐给用户新类别的物品 。
使用spark运行协同过滤算法,rating的值该怎样设置?
Embedding,协同过滤


对于隐式反馈而言,用户对于item没有显式的评分数据,这种情况下对考虑rating值得时候应该需要结合具体的业务场景对应的数据去设计 。例如:短视频推荐(1) 根据不同用户行为设置rating值对于短视频推荐中,可以根据用户的观看、点赞、分享等不同行为设置不同的rating值 。这样设置rating值得缺陷在于,用户点赞和分享的行为数据非常稀疏,无法单一使用,结合观看、点赞、分享行为数据综合考虑用户对item的rating值需要考虑不同行为对rating值得权重影响 。
【Embedding,协同过滤】(2) 根据同一行为的不同特征设置rating值 。同一行为可以考虑用户行为具有的不同特征值来设置用户对物品的rating值,例如视频的观看时长、观看完成度、如果考虑时间衰减因素的话可以结合观看时间距离当前的时间差等因素综合考虑设置item的rating值 。当然,不同的推荐系统中根据具体业务有不同的设置方式,例如电商推荐的可能考虑物品的价格,新闻资讯的推荐可以能考虑篇幅长度等等上面所说的只是一个参考 。

    推荐阅读