实现协同过滤,需要的步骤
- 收集好用户偏好,如评分
- 找到相似的用户和物品
- 计算推荐
用户物品联系图
相似的计算,通过距离
几种距离计算
- 欧几里得距离
- 皮尔逊相关系数
- cosine相似的
皮尔逊距离
- 协方差
- 皮尔逊相关系数
- pearson相关系数是用协方差除以两个变量的标准差得到的
相关系数
推荐系统最常用的
- 皮尔逊相关系数最常用
邻居的选择
- A、固定数量的邻居
- B、基于相似度门槛的邻居(推荐)
基于用户的协调过滤
基于用户的协调过滤要解决的问题
- 已经用户评分矩阵Matrix R(一般都是非常稀疏的)
- 推荐矩阵中空格empty cells处的值
*
UserCF存在的问题issues
- 对于一个新用户,很难找到邻居用户
- 对于一个物品,所有最近的邻居都再其上没有多少打分
基础解决方案
- 相似度计算最好用皮尔逊相似度
- 考虑共同打分物品的数目,如乘min(n,N)/N n:共同打分数,N:指定阈值
- 对打分进行归一化处理
- 设置一个相似度阈值
基于用户的协同过滤为啥不流行,用的少
- 稀疏问题
- 数百万的用户数据量,两两相比数据量比较大
- 人是善变的
基于物品的协调过滤
基于物品的协调过滤优势
- 计算性能高,通常用户数量远大于物品数量
- 可预先计算保留,物品并不善变
物品相似度,不是根据物品本身属性的相似,而是根据用户对于物品评分,及用户与物品的关系的相似
冷启动
用户冷启动
- 引导用户把一些属性表达出来
- 利用现有的开放数据平台
- 根据用户注册属性
- 推荐排行榜单(推荐,稳妥,不出错)
物品冷启动
- 文本分析
- 主题模型
- 打标签
- 推荐排行榜
对比用户协同和物品协同
使用场景
- 基于用户:实时新闻、突发情况
- 基于物品:图书、电子商务、电影、等等