刀还未配,出门已是江湖~~~
上图给出了推荐引擎原理:
数据来源:物品信息、用户信息、用户对物品行为反馈信息推荐引擎:中间作用,多种推荐机制推荐结果:对特定用户,根据推荐算法将物品推荐给用户根据数据源不同,推荐引擎可分为: 1. 根据系统用户基本信息发现用户相关程度,称为基于人口统计学的推荐 2. 根据推荐物品或内容,发现物品间的相关性,称为基于内容的推荐 3. 根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或发现用户的相关性,称为基于协同过滤的推荐
一种易于实现的推荐方法,只是简单的根据用户基本信息发现用户相关程度,然后将相似用户喜爱的其他物品推荐给当前用户
好处:没有冷启动问题,领域独立 坏处:过于粗糙、用户信息不易提取
根据推荐物品或内容的元数据,发现物品或内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品
好处:更加精确推荐 坏处:推荐效果依赖对物品模型的完整和全面程度,并未考虑人对物品的态度,且存在冷启动问题
根据所有用户对物品或者信息的偏好,发现当前用户的口味和偏好相似的“邻居”用户群,一般采用计算“k-邻居”算法;然后,基于k个邻居的历史偏好为当前用户进行推荐
解释: 假设用户A喜欢物品W1,W3 用户B喜欢W2 用户C喜欢W1,W3,W4 从用户历史喜好,发现用户A和用户C口味和偏好类似,且用户C还喜欢物品W4,也可推断用户A可能喜欢物品W4
使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户
解释: 假设用户A喜欢物品W1,W3 用户B喜欢W1,W2,W3 用户C喜欢W1 推断:物品W1和物品W3比较相似,喜欢物品W1的人也喜欢物品W3 推荐:将物品W3推荐给用户C
然而,实际应用中采用混合推荐算法
背景:算法是在NetFlix的推荐算法竞赛中获奖的算法,最早被应用于电影推荐中。这种算法在实际应用中比现在排名第一,RMSE小且效率更高。 思想:每个user都有自己的偏好,比如A喜欢带有古风、剧情类等元素即潜在因子。若某首歌带有这些元素,即可将其推荐给这个用户。潜在因子是user和item的桥梁。
一、用户-潜在因子矩阵Q 表示不同用户对于不同元素的偏好程度,0-1从不喜欢到很喜欢
二、潜在因子-音乐矩阵P 表示每种音乐含有各种元素的成分,Latent Factor的成分为此音乐元素的权重大小(0-1)
三、结果 举例:张三对音乐A的喜爱程度=张三对小清新喜好*音乐A中小清新的权重+…
推荐:将音乐中张三已听过的提出,选取评分最高的未推荐的给他
直接获取用户对海量音乐的偏好不太现实,现实只有用户对音乐的行为数据。
实际评分矩阵R:
矩阵值:用户对音乐行为的量化值:单曲循环=5,分享=4,收藏=3,主动播放=2,听完=1,跳过=-2,拉黑=-5
实际上:评价矩阵将非常稀疏,利用UV分解(将上述评价矩阵分解为两个低维度矩阵),用Q和P的乘积评估实际的评分矩阵
计算:利用最优化理论,L2范式+梯度下降法求解QP
解决方案: 1. 提供非个性化推荐:热门排行榜,当数据够时再切换为个性化 2. 利用用户注册提供的信息做粗粒度 3. 利用第三方数据,一般为用户社交网络信息 4. 新用户加入时,引导用户选择一些信息 5. 新物品加入,利用物品内容 6. 系统冷启动,只有请专家来做物品相似度
参考文献: [1] http://www.cnblogs.com/MarsMercury/p/5169071.html
[2] http://blog.csdn.net/zhuhengv/article/details/50441396