recommend

Recommend 推荐算法

人口统计学的推荐(Demographic-based Recommendation) --

  • 根据系统用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐(Demographic-based Recommendation)
  • 因为不使用当前用户对物品的喜好历史数据,所以对于新用户来讲没有“冷启动(Cold Start)”的问题。
  • 这个方法不依赖于物品本身的数据,所以这个方法在不同物品的领域都可以使用,它是领域独立的(domain-independent)。
  • 缺点和问题
    • 基本信息对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域,比如图书,电影和音乐等领域
    • 用户信息不是很好获取

基于内容的推荐(Content Based Recommendation 简称CB) -- 参考

  • http://www.cnblogs.com/breezedeus/archive/2012/04/10/2440488.html
  • http://www.linkedkeeper.com/detail/blog.action?bid=1061
  • https://www.analyticsvidhya.com/blog/2015/08/beginners-guide-learn-content-based-recommender-systems/
  • 根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐(Content-based Recommendation)
  • 抽取item的特征向量 -> 计算余弦相似度 -> 推荐
  • 物品有自己标题内容或者属性特征,根据内容计算物品相似度
  • 每个用户的profile都是依据他本身对item的喜好获得的,自然就与他人的行为无关
  • 新的item可以立刻得到推荐(New Item Problem):只要一个新item加进item库,它就马上可以被推荐,被推荐的机会和老的item是一致的
  • CB的缺点
    • item的特征抽取一般很难(Limited Content Analysis)
      • 需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度。在现在的应用中我们可以观察到关键词和标签(Tag)被认为是描述物品元数据的一种简单有效的方法。
    • 无法挖掘出用户的潜在兴趣(Over-specialization)
      • 物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
    • 无法为新用户产生推荐(New User Problem)
      • 因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题。
  • 计算结构
    • 用户 =》 内容特征 《= 物品
      • 内容=》词 =》 向量特征
      • 物品 =》内容
      • 用户 =》行为物品 =》内容
  • 协同过滤区别 ==》 相似度是基于书籍内容的,准确来说是标题,而不是根据使用数据

协同过滤(基于用户行为的推荐Collaborative Filtering Recommendations) -- 参考

  • 协同过滤领域主要的两种方式是最近邻(neighborhood)方法和潜在因子(latent factor)模型
  • 最近邻(neighborhood)方法 --属于Memory-based类型
    • 用户推荐(UserCF)
    • 物品推荐(ItemCF)
  • 潜在因子(latent factor) --属于Model-based类型
    • SVD奇异值分解矩阵
    • ALS交替最小二乘

用户推荐(UserCF)--推荐那些和他有共同兴趣爱好的用户喜欢的物品

  • 根据用户推荐重点是反应和用户兴趣相似的小群体的热点,是某个群体内的物品热门程度
  • UserCF需要维护一个用户相似度矩阵
  • User-based算法存在两个重大问题:
      1. 数据稀疏性。一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。
      1. 算法扩展性。最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。

物品推荐(ItemCF)--推荐那些和他之前喜欢的物品类似的物品

  • 根据物品推荐着重与用户过去的历史兴趣,反应本人的兴趣爱好,更加个性化
  • ItemCF需要维护一个物品相似度矩阵
slope one Item-Based 的协同过滤推荐算法
  • https://blog.csdn.net/whaoxysh/article/details/19038453
  • 人们并不总是能给出评分,当用户只提供二进制数据(购买与否)的时候,就无法应用Slope One 和其它基于评分的算法
  • 该算法适用于物品更新不频繁,数量相对较稳定并且物品数目明显小于用户数的场景。依赖用户的用户行为日志和物品偏好的相关内容。
    • 优点:
      • 1.算法简单,易于实现,执行效率高;
      • 2.可以发现用户潜在的兴趣爱好;
    • 缺点:
      • 依赖用户行为,存在冷启动问题和稀疏性问题。

用户推荐(UserCF)vs 物品推荐(ItemCF)

项目UserCFItemCF
性能适用于用户较少的场合,如果用户过多,
计算用户相似度矩阵的代价交大
适用于物品数明显小于用户数的场合,如果物品很多,
计算物品相似度矩阵的代价交大
领域实效性要求高,用户个性化兴趣要求不高长尾物品丰富,用户个性化需求强烈
实时性用户有新行为,不一定需要推荐结果立即变化用户有新行为,一定会导致推荐结果的实时变化

ALS交替最小二乘 -- 矩阵分解-潜在因子

  • 算法理解:
    • mn的评分矩阵R,可以被近似分解成U(V)T
    • U为m*d的用户特征向量矩阵
    • V为n*d的产品特征向量矩阵((V)T代表V的转置)
    • d为user/product的特征值的数量
    • 先固定 UU 求解 VV,再固定 VV 求解 UU ,如此迭代下去,问题就可以得到解决了。
  • spark als分布式实现

混合的推荐机制

  • 加权的混合(Weighted Hybridization): 用线性公式(linear formula)将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
  • 切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
  • 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
  • 分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

应用场景

  • 新闻类网站采用UserCF
    • 用户大都喜欢热门新闻,特别细粒度的个性化可忽略不计
    • 个性化新闻推荐更强调热点,热门程度和实效性是推荐的重点,个性化重要性则可降低
UserCf vs ItemCf
  • Item CF 的推荐有很好的新颖性,很擅长推荐长尾里的物品
  • User CF 总是倾向于推荐热门,在推荐长尾里项目方面的能力不足

spark 相似度算法实现,http://www.lxway.com/642408066.htm

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类

阅读

参考

推荐系统论文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值