Mahout的推荐系统

  • 什么是推荐系统
  • 为什使用推荐系统
  • 推荐系统中的算法

什么是推荐系统

为什么使用推荐系统?

  促进厂商商品销售,帮助用户找到想要的商品

  推荐系统无处不在,体现在生活的各个方面

  图书推荐;QQ好友推荐;优酷,爱奇艺的视频推荐;豆瓣的音乐推荐;大从点评的餐饮推荐;世纪佳缘的相亲推荐;智联招聘的职业推荐。

  亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售额。

推荐引擎工作原理

  推荐系统主要向用户推荐可能感兴趣商品的系统。系统会给用户以TopN推荐给用户商品。

  系统主要使用的数据是用户的历史商品购买记录,这部分数据存放在公司的数据库中。

Mahout的推荐系统整体架构

      

推荐系统的实现

 推荐系统中的算法

  • Apriori算法
  • 基于用户
  • 基于内容
  • 基于协同过滤(用的最多

Apriori算法-购物篮分析(关联分析)

  “啤酒与尿布”的故事产生于20世纪90年代的美国沃尔玛超市。沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现。
  原来,美国的妇女通常在家照顾孩子,所以她们经常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。
  这个发现为商家带来了大量的利润,但是如何从浩如烟海却又杂乱无章的数据中,发现啤酒和尿布销售之间的联系呢?

Apriori算法的产生

  1993年美国学者Agrawal提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法,并根据商品之间的关系,找出客户的购买行为。Agrawal从数学及计算机算法角度提出了商品关联关系的计算方法——Apriori算法。
  沃尔玛从上个世纪90年代尝试将Aprior算 法引入到POS机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。

Apriori算法

如何寻找?
  在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。让计算机做这事,设法计算法让计算机自动去找,找到这样的模式(规律)。

目标:寻找那些总是一起出现商品。
  mahout实战—>机器学习实战

  《mahout实战》与《机器学习实战》一起购买的记录数占所有商品记录总数的比例——支持度(整体)
  买了《mahout实战》与《机器学习实战》一起购买的记录数占所有购买《mahout实战》记录数的比例——置信度(局部)
需要达到一定的阈值

  支持度、置信度越大,商品出现一起购买的次数就越多,可信度就越大。

支持度:在所有的商品记录中有2%量是购买《mahout实战》与《机器学习实战》
置信度:买《mahout实战》的顾客中有60%的顾客购买了《机器学习实战》

  作用:找到商品购买记录中反复一起出现的商品,帮能助营销人员做更好的策略,帮助顾客方便购买。

  策略:
    1、同时购买的商品放一起
    2、同时购买的商品放两端

支持度、置信度转化为数学语言进行计算:
  A表示《mahout实战》 B表示《机器学习实战》

support(A->B) = P(AB) (《mahout实战》和《机器学习实战》一起买占总的购买记录的比例)
confidence(A->B) = P(B|A) (购买了《mahout实战》后,买《机器学习实战》占的比例)

项集:项的集合称为项集,即商品的组合。
k项集:k种商品的组合,不关心商品件数,仅商品的种类。
项集频率:商品的购买记录数,简称为项集频率,支持度计数。
注意,定义项集的支持度有时称为相对支持度,而出现的频率(比例)称为绝对支持度。
频繁项集:如果项集的相对支持度满足给定的最小支持度阈值,则该项集是频繁项集。
强关联规则:满足给定支持度和置信度阈值的关联规则

A=>B的置信度可以由A于A U B的支持度计数计算推出。满足最小支持度计数的项集为频繁项集。
找关联规则问题,归结为找频繁项集。
注意:A=>B,B=>A的不同

明确问题

  1、找出总是在一起出现的商品组合
  2、提出衡量标准支持度、置信度(达到一定的阈值)
  3、给出支持度、置信度直观计算方法
  4、得出在计算方法中起决定因素的是频繁项集
  5、由频繁项集轻松找到强关联规则

找关联规则--------->找频繁项集
  步骤:
    1. 找出所有的频繁项集;这个项集出现的次数至少与要求的最小计数一样。如在100次购买记录中,至少一起出现30次。
    2. 由频繁项集产生强关联规则;这些关联规则满足最小支持度与最小置信度。

Apriori算法

  先验性质:频繁项集的所有非空子集也一定是频繁的。

  逆否命题:若一个项集是非频繁的,则它的任何超集也是非频繁的

Apriori挑战

挑战
  多次数据库扫描
  巨大数量的候补项集
  繁琐的支持度计算

改善Apriori: 基本想法
   减少扫描数据库的次数
  减少候选项集的数量
   简化候选项集的支持度计算
FPGROWTH算法(有名)

基于用户的推荐技术

基于内容(物品)的推荐技术

 协同过滤推荐技术

  协同
    指协调两个或者两个以上的不同资源或者个体,协同一致地完成某一目标的过程或能力。

  原理
    协同过滤技术是基于用户对项目的历史偏好,发掘项目之间的相关性,或者是发掘用户间的相关性,根据这些相关性进行推荐。

  类别
    基于用户的协同过滤推荐 Uesr_CF
    基于物品的协同过滤推荐 Item_CF

基于用户的协同过滤推荐技术

 基于物品的协同过滤推荐技术(评分)

 实现协同过滤的步骤

  1、收集用户偏好

  2、找到相似的用户或物品

  3、计算推荐

收集用户偏好的方法(评分)

每行3个字段,依次是用户ID,物品ID,用户对物品的评分(0-5分,每0.5分为一个评分点!)

 计算相似性

用户,物品,评分
  什么人喜欢什么,以及程度

相似性的度量

  欧氏距离相似度
  皮尔森相似度
  余弦相似度
  秩相关系数相似度
  曼哈顿距离相似度
  对数似然相似度

欧氏距离相似度计算

协同过滤推荐,一般要做好以下几个步骤:

  1)收集用户偏好
  通过用户的行为诸如评分,投票,转发,保存,书签,标记,评论,点击流,页面停留时间,是否购买等获得。所有这些信息都数字化,用一个二维矩阵表示出来。

  2)数据减噪与归一化操作
  用户偏好的二维矩阵,一维是用户列表,另一维是物品列表,值是用户对物品的偏好,一般是 [0,1] 或者 [-1, 1] 的浮点数值。

  3)找相似的用户和物品,计算相似用户或相似物品的相似度。

  4)根据相似度作为用户、物品的协同过滤推荐。

总结

Apriori

      

协同过滤

          

Mahout的推荐系统相关推荐

  1. 使用Mahout搭建推荐系统之入门篇3-Mahout源码初探

    2019独角兽企业重金招聘Python工程师标准>>> 用意: 希望了解Mahout中数据的存储方式, 它如何避免java object带来的冗余开销.学完知识,要进行些实战 去分析 ...

  2. 使用Mahout搭建推荐系统之入门篇-Mahout实战

    原始地址:http://my.oschina.net/Cfreedom/blog/201828 用意: 结合上篇博客,写写代码熟悉一下Mahout.很多地方想法都比较粗糙,亟待指正.  代码放在了:  ...

  3. Mahout构建图书推荐系统

    前言 本文是Mahout实现推荐系统的又一案例,用Mahout构建图书推荐系统.与之前的两篇文章,思路上面类似,侧重点在于图书的属性如何利用.本文的数据在自于Amazon网站,由爬虫抓取获得. 目录 ...

  4. mahout 推荐算法 java_推荐系统之推荐算法实战:mahout推荐算法框架

    1.Mahout介绍 1.1概述 根据百度的解说,Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在 ...

  5. 大数据-实时推荐系统最主流推荐系统itemCF和userCF视频教程下载

    大数据-实时推荐系统最主流推荐系统itemCF和userCF视频教程下载38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战 ...

  6. 推荐系统学习07-Waffles

    介绍 Waffles 英文原意是蜂蜜甜饼,在这里却指代一个非常强大的机器学习的开源工具包.Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于其中的Waffles_recommend ...

  7. 每周一书《Spark与Hadoop大数据分析》分享!

    Spark与Hadoop大数据分析比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,既涵盖ApacheSpark和Hadoop的基础知识,又深入探讨所有Spa ...

  8. hadoop相关认证

    前言: 关于Hadoop课程及认证证书的事,想着整理一下,可能觉得有用的. 首先我所知道的在做Hadoop认证的有两家,Hortonworks跟Cloudera.因为工作的原因接触Cloudera比较 ...

  9. 用 Mahout 和 Elasticsearch 实现推荐系统

    原文地址 本文内容 软件 步骤 控制相关性 总结 参考资料 本文介绍如何用带 Apache Mahout 的 MapR Sandbox for Hadoop 和 Elasticsearch 搭建推荐引 ...

最新文章

  1. 利用WampServer挂载MySQL数据库
  2. 本地传送命令到远程主机上执行的方法
  3. 文明重启服务器维护怎么卡进去,文明重启更新之后进不去,具体玩法介绍
  4. 51NOD 1125(交换机器最小代价) (贪心) 思想 !思想!
  5. 虎扑APP遭全网下架 原因未知
  6. es数据无法写入,报错[FORBIDDEN/12/index read-only / allow delete (api)]
  7. 简单的ideatomcat热加载
  8. 游戏控制管理器(a11s)
  9. 打谱软件-Avid Sibelius 8.5.0 macOS
  10. lammps教程:EAM势函数设置详解
  11. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  12. 远程小组软件开发过程(3):人
  13. 网易公开课 计算机专业课程
  14. 500个爆文标题_总结了500篇10W+爆文 好标题都离不开以下几点
  15. 常见的hash算法及其原理
  16. odroid-xu4(ubuntu mate 16.04)源码编译opencv 3.2
  17. 大学计算机作业互评评语简短,同学作业互评评语
  18. H5移动端css实现向右横向滚动功能
  19. 摸索一下午,终于解决Tomcat9中文乱码问题!!
  20. 一文搞定插入排序算法

热门文章

  1. “互联网+”谋定文物市场-国情讲坛·宗佩山:构建共享平台
  2. 实习随记-不定时更新
  3. C/C++获取系统当前时间
  4. 读取数据库信息构建视图字段的备注信息,方便程序代码生成
  5. Mac OS X下配置Cocos2d-x for Android(Eclipse)IOS(Xcode)开发环境
  6. MS SQL中的returnoutput的學習
  7. PMcaff脉脉大咖分享会 | 走出BAT!从0到1做一款自己的产品
  8. 微信官方数据披露:哪些文章更受朋友圈欢迎
  9. APP鉴赏之网易云音乐
  10. 登录界面-安全密码设计