推荐系统之基于邻域的算法---协同过滤算法
基于邻域的协同过滤主要分为两类,基于用户的协同过滤和基于物品的协同过滤。前者给用户推荐和他兴趣相似的其他用户喜欢的物品,后者则是推荐和他之前喜欢过的物品相似的物品。 基于用户的协同过滤算法 这里介绍基于用户的协同过滤,从定义来说,可以分为以下两步进行: 找到和目标用户兴趣相似的用户集合 找和这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户 计算用户相似度的基本算法: (1)Jaccard 公式 (2)余弦相似度: 得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品,下面的公式表示用户u对物品i的感兴趣程度: 其中S(u,K)包含和用户u兴趣最相近的K个用户,N(i)是对物品i有过行为的用户集合,w uv 是用户u和用户v的兴趣相似度,r vi 代表用户v对物品i的兴趣,在这种情况下r vi =1 可以建立物品到用户的倒查表,对每个物品都保存对该物品产生过行为的用户列表, 可以给上图中的A推荐,选取K=3,用户A对物品c,e没有过行为,因此可以把这两个物品推荐给用户A,用户A对物品c,e的兴趣是: 改进: 上边的算法是有问题的,比如两个人都买过《新华字典》这本书,但这丝毫不能说明他们两个兴趣相似,因为大多数人都买过这本书,如果两个用户都买过《数据挖掘导论》,那可以认为两个人的兴趣比较相似,因为只要研究数据挖掘的人才会买这本书