基于协同过滤的推荐算法
- 协同过滤(Collaborative Filtering,CF)
- 基于近邻的协同过滤
- 基于用户(User-CF)
- 基于物品(ltem-CF)
- 基于模型的协同过滤
- 奇异值分解(SVD)
- 潜在语义分析(LSA)
- 支撑向量机(SVM)
- 基于内容(Content based,CB)主要利用的是用户评价的物品的内容特征,而CF方法还可以利用其他用户评分过的物品内容
- CF可以解决CB的一些局限
- 物品内容不完全或者难以获得时,依然可以通过其他用户的反馈给出推荐
- CF基于用户之间对物品的评价质量,避免了CB仅依赖内容可能造成的对物品质量
- CF推荐不受内容限制,只要其他类似用户给出了对不同物品的兴趣,CF就可以给用户推荐出内容差异很大的物品(但有某种内在联系)
基于近邻的推荐
根据相同“口碑”准则
基于用户的协同过滤(User-CF)
- 基于用户的协同过滤推荐的基本原理是,根据所有用户对物品的偏好,发现与当前用户口味和偏好相似的"邻居"用户群,并推荐近邻所偏好的物品
- 在一般的应用中是采用计算"K-近邻"的算法;基于这K个邻居的历史偏好信息,为当前用户进行推荐
基于物品的协同过滤(Item-CF)
- 基于项目的协同过滤推荐的基本原理与基于用户的类似,只是使用所有用户对物品的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户
- Item-CF 和基于内容(CB)的推荐
- 其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息
User多就用Item-CF:电商、电影、音乐网站,用户数量远大于物品数量新闻网站
item多就用User-CF:物品(新闻文本)数量可能大于用户数量。
基于协同过滤的推荐优缺点
- 基于协同过滤的推荐机制的优点:
- 它不需要对物品或者用户进行严格的建模,而且不要求对物品特征的描述是机器可理解的,所以这种方法也是领域无关的
- 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好
- 存在的问题:
- 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动"的问题
- 推荐的效果依赖于用户历史偏好数据的多少和准确性
- 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等
- 对于一些特殊品味的用户不能给予很好的推荐
基于模型的协同过滤思想
- 基本思想
- 用户具有一定的特征,决定着他的偏好选择;
- 物品具有一定的特征,影响着用户需是否选择它;
- 用户之所以选择某一个商品,是因为用户特征与物品特征相互匹配;