【Python使用】嘿马推荐系统全知识和项目开发教程第5篇:资源调度框架 YARN,基于回归模型的协同过滤推荐,1.1 什么是H
教程全知识点简介:推荐系统概念、产生背景、工作原理、作用以及与Web项目的区别。核心推荐算法包括协同过滤推荐算法(User-Based CF、基于回归模型的协同过滤、基于矩阵分解的CF算法、BiasSvd)、相似度计算、推荐模型构建流程,以及基于内容的电影推荐(用户画像、TOP-N推荐结果生成)和推荐系统冷启动问题处理方法。大数据技术栈包括Hadoop架构(HDFS数据存储、MapReduce计算框架、YARN资源调度)、Hive数据仓库(HQL操作、综合案例)、HBase数据模型(Shell操作、HappyBase操作)。Spark生态系统涵盖Spark Core(RDD概述、WordCount程序、点击流日志分析)、Spark SQL(DataFrame介绍、JSON数据处理)、Spark Streaming实时处理、Spark ML机器学习(ALS矩阵分解模型、逻辑回归LR)。数据预处理技术包括数据清洗(异常值处理、分位数计算、边界值替换)、用户行为数据拆分、behavior_log数据集预处理、raw_sample数据集分析、schema构建、空值处理。推荐系统实现包括个性化电商广告推荐系统、用户对商品类别打分数据处理、ALS模型训练(Checkpoint设置、内存管理、迭代次数控制)、CTR预估(数据准备、特征工程)、离线推荐数据缓存(Redis存储、召回集管理)、实时推荐结果生成和推荐任务处理。
👉👉👉 https://gitee.com/yinuo112/Backend/blob/master/Python/嘿马推荐系统全知识和项目开发教程/note.md
1.1 什么是Hadoop
-
Hadoop名字的由来
-
作者:Doug cutting
- Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名
-
Hadoop的概念:
-
Apache™ Hadoop® 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架
- 允许使用简单的编程模型跨计算机集群分布式处理大型数据集
- 可扩展: 从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储
- 可靠的: 不依靠硬件来提供高可用性(high-availability),而是在应用层检测和处理故障,从而在计算机集群之上提供高可用服务
-
Hadoop能做什么?
-
搭建大型数据仓库
-
PB级数据的存储 处理 分析 统计等业务
-
搜索引擎
-
日志分析
-
数据挖掘
-
商业智能(Business Intelligence,简称:BI)
-
商业智能通常被理解为将企业中现有的数据(订单、库存、交易账目、客户和供应商等数据)转化为知识,帮助企业做出明智的业务经营决策的工具。从技术层面上讲,是数据仓库、数据挖掘等技术的综合运用。
-
Hadoop发展史
-
2003-2004年 Google发表了三篇论文
- GFS:Google的分布式文件系统Google File System
- [MapReduce]: Simplified Data Processing on Large Clusters
- BigTable:一个大型的分布式数据库
-
2006年2月Hadoop成为Apache的独立开源项目( Doug Cutting等人实现了DFS和MapReduce机制)。
- 2006年4月— 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。
- 2008年4月— 赢得世界最快1TB数据排序在900个节点上用时209秒。
- 2008年— 淘宝开始投入研究基于Hadoop的系统–云梯。云梯总容量约9.3PB,共有1100台机器,每天处理18000道作业,扫描500TB数据。
- 2009年3月— Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)
- 2009年5月— Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
- 2009年7月— Hadoop Core项目更名为Hadoop Common;
- 2009年7月— MapReduce和Hadoop Distributed File System (HDFS)成为Hadoop项目的独立子项目。
- 2012年11月— Apache Hadoop 1.0 Available
- 2018年4月— Apache Hadoop 3.1 Available
-
搜索引擎时代
- 有保存大量网页的需求(单机 集群)
- 词频统计 word count PageRank
-
数据仓库时代
- FaceBook推出Hive
- 曾经进行数分析与统计时, 仅限于数据库,受数据量和计算能力的限制, 我们只能对最重要的数据进行统计和分析(决策数据,财务相关)
- Hive可以在Hadoop上运行SQL操作, 可以把运行日志, 应用采集数据,数据库数据放到一起分析
-
数据挖掘时代
- 啤酒尿不湿
- 关联分析
- 用户画像/物品画像
-
机器学习时代 广义大数据
- 大数据提高数据存储能力, 为机器学习提供燃料
- alpha go
- siri 小爱 天猫精灵
资源调度框架 YARN
3.1.1 什么是YARN
- Yet Another Resource Negotiator, 另一种资源协调者
- 通用资源管理系统
- 为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
3.1.2 YARN产生背景
-
通用资源管理系统
-
Hadoop数据分布式存储(数据分块,冗余存储)
- 当多个MapReduce任务要用到相同的hdfs数据, 需要进行资源调度管理
-
Hadoop1.x时并没有YARN,MapReduce 既负责进行计算作业又处理服务器集群资源调度管理
-
服务器集群资源调度管理和MapReduce执行过程耦合在一起带来的问题
-
Hadoop早期, 技术只有Hadoop, 这个问题不明显
-
随着大数据技术的发展,Spark Storm ... 计算框架都要用到服务器集群资源
-
如果没有通用资源管理系统,只能为多个集群分别提供数据
- 资源利用率低 运维成本高
-
Yarn (Yet Another Resource Negotiator) 另一种资源调度器
- Mesos 大数据资源管理产品
-
不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度
3.1.3 YARN的架构和执行流程
- ResourceManager: RM 资源管理器 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度 处理客户端的请求: submit, kill 监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
- NodeManager: NM 节点管理器 整个集群中有多个,负责自己本身节点资源管理和使用 定时向RM汇报本节点的资源使用情况 接收并处理来自RM的各种命令:启动Container 处理来自AM的命令
- ApplicationMaster: AM 每个应用程序对应一个:MR、Spark,负责应用程序的管理 为应用程序向RM申请资源(core、memory),分配给内部task 需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
- Container 容器: 封装了CPU、Memory等资源的一个容器,是一个任务运行环境的抽象
- Client: 提交作业 查询作业的运行进度,杀死作业
1,Client提交作业请求
2,ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将 ApplicationMaster 分发到这个容器上面
3,在启动的Container中创建ApplicationMaster
4,ApplicationMaster启动后向ResourceManager注册进程,申请资源
5,ApplicationMaster申请到资源后,向对应的NodeManager申请启动Container,将要执行的程序分发到NodeManager上
6,Container启动后,执行对应的任务
7,Tast执行完毕之后,向ApplicationMaster返回结果
8,ApplicationMaster向ResourceManager 请求kill
3.1.5 YARN环境搭建
1)mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2)yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3) 启动YARN相关的进程 sbin/start-yarn.sh
4)验证 jps ResourceManager NodeManager [
5)停止YARN相关的进程 sbin/stop-yarn.sh
Model-Based 协同过滤算法
随着机器学习技术的逐渐发展与完善,推荐系统也逐渐运用机器学习的思想来进行推荐。将机器学习应用到推荐系统中的方案真是不胜枚举。以下对Model-Based CF算法做一个大致的分类:
- 基于分类算法、回归算法、聚类算法
- 基于矩阵分解的推荐
- 基于神经网络算法
- 基于图模型算法
接下来我们重点学习以下几种应用较多的方案:
- 基于回归模型的协同过滤推荐
- 基于矩阵分解的协同过滤推荐
基于回归模型的协同过滤推荐
如果我们将评分看作是一个连续的值而不是离散的值,那么就可以借助线性回归思想来预测目标用户对某物品的评分。其中一种实现策略被称为Baseline(基准预测)。
Baseline:基准预测
Baseline设计思想基于以下的假设:
- 有些用户的评分普遍高于其他用户,有些用户的评分普遍低于其他用户。比如有些用户天生愿意给别人好评,心慈手软,比较好说话,而有的人就比较苛刻,总是评分不超过3分(5分满分)
- 一些物品的评分普遍高于其他物品,一些物品的评分普遍低于其他物品。比如一些物品一被生产便决定了它的地位,有的比较受人们欢迎,有的则被人嫌弃。
这个用户或物品普遍高于或低于平均值的差值,我们称为偏置(bias)
Baseline目标:
- 找出每个用户普遍高于或低于他人的偏置值
- 找出每件物品普遍高于或低于其他物品的偏置值
- 我们的目标也就转化为寻找最优的
使用Baseline的算法思想预测评分的步骤如下:
-
计算所有电影的平均评分(即全局平均评分)
-
计算每个用户评分与平均评分
-
计算每部电影所接受的评分与平均评分
-
预测用户对电影的评分:
-
举例:通过Baseline来预测用户A对电影“阿甘正传”的评分
-
首先计算出整个评分数据集的平均评分是3.5分
- 用户A比较苛刻,普遍比平均评分低0.5分,即用户A的偏置值是-0.5;
- “阿甘正传”比较热门且备受好评,评分普遍比平均评分要高1.2分,“阿甘正传”的偏置是+1.2
- 因此就可以预测出用户A对电影“阿甘正传”的评分为:,也就是4.2分。
对于所有电影的平均评分是直接能计算出的,因此问题在于要测出每个用户的评分偏置和每部电影的得分偏置。对于线性回归问题,我们可以利用平方差构建损失函数如下:
加入L2正则化:公式解析:
- 公式第一部分
- 公式第二部分是正则化项,用于避免过拟合现象
对于最小过程的求解,我们一般采用随机梯度下降法或者交替最小二乘法来优化实现。
方法一:随机梯度下降法优化
使用随机梯度下降优化算法预测Baseline偏置值
step 1:梯度下降法推导
损失函数: ( λ 为正则化系数)
- 点赞
- 收藏
- 关注作者
评论(0)