推荐系统
广义上讲,推荐是一种为用户提供建议,帮助其挑选物品并做出最终决策的技术。例如,为用户展示热销品也是一种推荐。这种推荐技术难度并不高,但是转化率并不是很理想。所以这里引入个性化推荐。
个性化推荐系统是建立在海量数据挖掘基础上的一种高级信息检索平台,它会根据用户所处的情景,以及用户的兴趣特点,向其推荐可能感兴趣的信息和商品。
推荐系统的分类:
1.基于物品:给定物品a后,按照其他物品和a的相似度的高低来进行推荐
2.基于用户:给定用户A后,按照其历史行为所构建的用户模型来进行推荐
3.基于情景:本身没有严格的定义,简单来说就是指用户所处的信息环境,例如,一些美食app会根据你的地点位置为你推荐就近的餐馆等。
协同过滤:协同过滤主要是基于最直观的“口口相传”,其主要思路就是利用已有的用户群过去的行为或意见,预测当前用户最可能喜欢哪些东西。
基于用户的协同过滤(UCF):是指给定一个用户访问物品的数据集合,找出和当前用户历史行为有相似偏好的其他用户。
基于物品的协同过滤(ICF):是指利用物品的相似度,而不是用户间的相似度来计算预测值。
基于用户的协同过滤(UCF)
基于物品的协同过滤(ICF)
ICF和UCF的区别:
准确性:当用户数远远大于物品数量,采用ICF会更为准确;当物品数量远远大于用户数量,采用UCF则更为准确。
高效性:当用户数量远远大于物品数量时,物品的相似度计算所消耗的资源要远远小于用户的相似度计算,因此基于物品的协同过滤的效率会更高。反之,基于用户的协同过滤会更高效。
稳定性:物品和用户总是在不断发生变化。变化就意味着用户和物品之间的关系需要更新,协同过滤的结果也需要相应地发生改变。
基于物品的协同过滤算法,主要分为两步:
1.计算物品之间的相似度
关于物品相似度计算的方法有:夹角余弦、杰卡德、相关系数等。
2.根据物品的相似度和用户的历史行为给用户生成推荐列表。
利用Mathout实现电购中基于物品的协同过滤推荐系统:
1. 算法所需数据集
CUST_ID:客户ID ,GOOD_ID:用户所购买的商品ID ,ORD_NUM:用户对起商品的喜好程度,用购买次数来表示。
2. 算法过程:利用Mahout开源项目的协同过滤算法
(1)加载数据集,建立数据模型(datamodel)
(2)计算物品之间的相似度(ItemSimilarity):
基于PearsonCorrelationSimilarity相关系数计算相似度
(3)创建基于物品的协同过滤推荐:
3.根据传入的客户Id,针对性的推荐:
4.推荐结果集说明
5.结果输出: