原理
基于用户的协同过滤原理很简单,找到购买喜好相近的用户,把某用户购买的商品推荐给和他相似的用户。比如下表,A和C的购买记录较为相似,则会把A购买了的物品D推荐给用户C
物品A | 物品B | 物品C | 物品D | |
---|---|---|---|---|
用户A | √ | √ | √ | |
用户B | ||||
用户C | √ | √ | 推荐 |
算法存在的问题
主要是稀疏问题
- 对于一个新用户,很难找到领居用户
- 对于一个物品,所有最近的邻居都在其上没有多少打分
针对上诉基础解决方案
- 相似度计算最好有皮尔逊相似度
- 考虑共同打分物品的数目,如乘上min(n,N)/N n:共同打分数 N:指定阈值
- 对打分进行归一化处理
- 设置一个相似度阈值,过滤掉部分内容
基于用户的协同过滤在实际应用中用的很少,主要是以下问题:
- 稀疏问题,一个用户标签有很多都是空的
- 数百万的用户计算量,计算效率低
- 人是善变的