协同过滤概述
协同过滤(CF Collaborative Filtering)也叫基于近邻的推荐算法,主要思想是:利用已有的用户群过去的行为或意见(总之就是过去的数据)预测未来的数据。根据当前用户(user)对物品(item)的评分,去预测其他用户对其他物品的评分。(就是将 用户x物品的评分矩阵补全)根据已有数据对和已有数据相近的物品进行打分。
算法输入就是用户x物品的评分矩阵。
输出则一般有两类:当前用户对当前物品的喜欢或不喜欢程度的评分数值 以及 n项推荐物品的列表
主要(也是最基础的)实现方式有:
- 基于用户的协同过滤(最近邻推荐)
- 基于物品的协同过滤(最近邻推荐)
实现协同过滤的步骤
- 收集用户数据
- 找到相似用户或物品
- 计算推荐
用户行为特征
用户行为 | 类型 | 特征 | 作用 |
---|---|---|---|
评分 | 显式 | 整数化量化的特征,一般取0到5或0到10 | 通过用户本人的评分,可以准确的获得用户的偏好 |
投票 | 显式 | 布尔量化的偏好,取值可以是0或1 | 较为精确的获得用户偏好 |
转发 | 显式 | 布尔量化的偏好,取值可以是0或1 | 站内可获取相似用户 |
保存书签 | 显式 | 布尔量化的偏好,取值可以是0或1 | 较为精确的获取偏好 |
标签tag | 显式 | 一些单词,需要对单词进行分析从而获得偏好 | 分析情感来获取偏好 |
评论 | 显式 | 一些文本,需要对文本处理来获取偏好 | 分析情感来获取偏好 |
以上列举了一些常见的推荐特征提取的方法和度量,实际应用中还有很多可以用来做特征的用户行为,其中包括一些隐式特征(比如后面提到的隐语意分析)足见在推荐系统中,特征的提取和选择也非常重要。
相似度度量
前面的解释中提到,协同过滤主要是根据用户或物品之间的相似度来获取最近的n个物品或用户。那么对于相似度,应该如何度量,便成为一个非常重要的内容。