概要:

推荐系统通过信息获取技术解决在线的个人的消息、产品或者服务的推荐问题。这些系统,特别是基于k临近协同过滤算法,在网络上取得了广泛的成功。可用信息和访问人数的巨大增加成了推荐系统一个难题。基于商品的协同过滤推荐算法应运而生,通过分析用户特征矩阵计算推荐信息。本文主要分析不同的基于商品的推荐算法,还会同k临近过滤算法比较,同时提供比现存最好的基于用户算法更好的算法。

一、协同过滤算法分类

协同过滤算法主要分为:1.基于存储 2.基于模型

基于存储:它利用整个用户商品数据来产生预测,使用静态的方法找到相似用户,他们评价了不同的商品但是评价相似或者他们想买相似的商品,一旦形成相似组群,系统就会整合组群来产生预测。这种方法也被叫做临近算法或者基于用户的协同过滤算法,得到广泛的应用。

面临的问题:

1.稀疏问题:商品很多,即使是非常爱买东西的用户买的物品可能都不会超过总商品的1%。

2.性能:计算量随着用户和商品的增加而增加。因此数据量一大性能就降低。 

基于模型:它通过产生一个用户评分模型来推荐,这个算法采用了概率论的方法,通过用户给出的期望价值来给其他商品打分,这个模型通过机器学习算法比如贝叶斯网络, clustering, 和 rule-based等等实现的。贝叶斯网络模型为协同过滤算法提供了一个概率模型,Clustering模型把协同过滤算法当成一个分类问题,通过将相似者分组然后估计该客户在这个类别的可能性,通过这些来计算商品评分的可能性。rule-based通过共同购买的商品的相关度来产生基于商品相关度的推荐。

二、协同过滤算法用到的度量技术

商品相似度:

1.cosine相似度:只考虑item向量的点积

2.correlation-based相似度(Pearson相似度):考虑了item的平均评分

3.adjusted cosine相似度:考虑了用户对item的平均评分

预测计算:

1.使用相似度加权平均

2.使用回归模型。使用加权平均时,采用的与预测物品i相似的物品 j的相似度Sim j* j的评分Rj。而使用回归模型时,它会计算出一个线性回归 f(j) =α*avg(Rj) + β + ξ,从而计算出一个不同于Rj的分值,然后再使用加权平均。

评价系统好坏的方式:

1.statistical accuracy metrics:MOE、RMSE

2.decision support accuracy metrics:reversal rate, weighted errors, ROC

三、结论

1.基于物品的算法预测结果要比基于用户的算法预测结果好

2.基本的基于物品的算法,模型大小越大,推荐质量越好,但是基于回归的物品算法,先是随着模型大小增加而增加,之后质量下降。

3.adjusted cosine similarity效果比较好

最新文章

  1. 其原因可能是堆被损坏,这说明 100BloodCellSegTest.exe 中或它所加载的任何 DLL 中有 Bug。
  2. randomAccess接口
  3. 【BZOJ-1103】大都市meg 树状数组 + DFS序
  4. C++时间函数模板
  5. du命令 实现Linux 某个文件夹下的文件按大小排序
  6. MVC小系列(十三)【全局异常处理与异常日志】
  7. mvc之验证IEnumerable<T> 类型
  8. JavaScript面向对象精要
  9. jquery.tablesorter.js 学习笔记
  10. [Android学习笔记]组合控件的使用
  11. 【前端】Vue和Vux开发WebApp日志一、整合vue+cordova和webpack+gulp
  12. [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I
  13. maven install 错误
  14. Emacs 中使用 shell
  15. HTML Table to Json
  16. Dubbo -- Simple Monitor
  17. git 分支强制删除
  18. Redis学习笔记之单机实现
  19. Python学习之——编码方式
  20. Loadrunner12.5-同一个网址通过vugen不能打开,但是直接在ie11中就可以打开

热门文章

  1. node.js中使用http-proxy-middleware请求转发给其它服务器
  2. 【JavaWeb】Filter 过滤器
  3. 【SpringMVC】SpringMVC 实现文件上传
  4. LeetCode141-环形链表检测
  5. linux系统Vsftpd搭建FTP
  6. 【EXP】根据字段导出数据query
  7. 基础练习(上) - 蓝桥杯(Python实现)
  8. 5.2 Spring5源码--Spring AOP源码分析二
  9. [APUE] 进程环境
  10. 聊一聊:Service层你觉得有用吗?