基于Flink的机器学习算法平台 Alink(二)推荐算法介绍

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Alink在“周二开源日”的第二节分享,主要介绍了推荐算法的框架和设计细节。内容简要:一、Alink介绍整体介绍和SparkML对比算法调用方式二、Alink 推荐 DemoAlink推荐相关算法整体介绍影片推荐DemoCTR点击率预估DemoWeb Demo

一、Alink介绍
(一)整体介绍
什么是Alink?

 Alink是基于Flink的机器学习算法平台
1) 由阿里巴巴计算平台事业部PAI团队研发;
2) 同时支持批式/流式算法,提供丰富的算法库;
3) 帮助数据分析和应用开发人员能够从数据处理、特征工程、模型训练、预测,端到端地完成整个流程。
 相关名称的公共部分
Alibaba,Algorithm,AI,Flink,Blink

(二)和SparkML对比
SparkML是目前市面上使用较为广泛的机器学习的库,下面从性能和功能两个方面对Alink与SparkML进行比较。
1、性能对比
image.png
Alink与SparkML性能对比图

上图为开源Alink与SparkML算法运行时间对比,纵坐标为各类算法,横坐标为运行同一算法时,SparkML相较开源Alink所花费的时间倍数。由上图可看出,在大多数情况下,开源Alink比SparkML效率更高。

2.功能对比
image.png
Alink与SparkML功能对比图

由上图可知,Alink拥有SparkML支持的大多数功能。在此基础上,Alink还支持流式算法、批流混跑、在线学习与中文分词等SparkML不具备的功能,Alink功能种类更丰富与齐全。

(三)算法调用方式
1.Link
Link是批式/流式算法通用的串联方式。
下方为三个Alink搭建的实验:批示实验,流式实验,批流混合实验。
image.png
批式实验(Batch Experiment)

image.png
流式实验(Stream Experiment)

image.png
流批混合实验(Batch-Stream Mixed Experiment)

2. Python 脚本调用Alink算法
除了用Web的方式,还可以用写脚本的方式调用Alink,用脚本完成机器学习的训练与预测,Demo如下:
image.png

二、Alink 推荐 Demo
(一)基于 Alink 推荐算法

image.png
线上服务流程图

在线上服务的时候,首先需要召回有用数据,例如真实用户关心的商品,或者相近的商品数据,然后针对商品做特征拼接,接着进行特征编码,最后通过排序算法得出结果,将排序比较靠前的推荐给用户。
针对线上服务流程,Alink能提供什么帮助?如下图所示:
image.png
针对线上服务,在离线模型中,Alink对召回、特征拼接、特征编码、排序等流程对应提供了多种算法。在线模型中,Alink支持在线学习,实时训练模型,不断将模型部署到线上,实现模型更高更快时效性。

(二)影片推荐Demo
接下来,以影片推荐Demo为例介绍一下算法的使用。
1.数据集介绍
我们在Moivelens网站上采集了不同时间段的电影观众的评分,做出了以下数据集:
image.png
如上图所示,这个数据集包括了User的ID,Movie的ID,还有观众的打分。下面针对这个数据集,我们来看Alink算法是如何实现对电影的推荐。

2.ALS训练模型(ALS model training)
image.png
ALS训练模型脚本Demo

上图为ALS训练模型的脚本Demo。得到一个数据集后,它会Link ALS的训练算法,在算法里面设置User、Item还有Rating列名,然后设置一些参数,包括Lambda,Rank,NumIter。
下面第二个Link是将它写到对应的目录中,这个目录可以是本地的环境目录,也可以是网络文件的目录,Alink都是支持的。然后加上执行代码后,脚本就可以直接执行。
训练完数据集Train_set对应的模型后,最后写到对应的目录中,以上就是ALS训练模型的一个简单脚本。

3. 使用ALS模型求TOPK的电影(topK movie with ALS model)
下面解析ALS模型如何实现对电影进行求TOPK。
image.png
使用ALS模型求TOPK的电影

通过上图脚本可以看到,首先通过创建一个Pipeline Model,然后ALS模型通过Source组件将它读取,设置到Pipeline对象中。接着设置User的列,设置Top的数量(如Top10),然后设置推荐的列名,最后通过Transform就可以得到推荐电影数据,推荐数据如下:
image.png
例如对43号电影,这边推荐了与它最相近的10部电影与相应的打分。

4. 使用ALS模型对电影打分(Rating movie with ALS model)
image.png
ALS实现电影打分Demo

如何得到每位观影的User对所看电影的打分数据。通过上图可以看到,这里使用的方法与之前类似,首先建一个Pipeline Model,然后设置打分组件,接着设置User、Item、Recomm的列,最后设置ALS模型,完成模型录入。
第二个组件KeyToValue,它将电影的ID对应到电影的名字。
通过上述两个组件,可以得到用户和用户对电影打分的结果。例如下图,是用户1对各个电影的打分情况Rating以及系统推荐的分数Recomm。
image.png
打分之后希望看到打分效果,于是接了评估组件EvalRegressionBatchOp,如下图所示:
image.png
EvalRegressionBatchOp组件相当于将打分结果跟真实结果做一个回归对比,下方是它的一个MSE和RNSE的结果,可以看到用ALS对数据进行打分的话,效果十分不错。

5.基于物品的协同过滤——模型训练
接下来介绍基于物品的协同过滤算法训练模型,调用方式与ALS类似,Demo如下:
image.png
首先在脚本中设置对应的模型与参数,然后linkFrom对应的打分数据,接着将它放到Pipeline Model,最终执行就完成了。这样数据对应的模型渲染出来,并将它存到对应的pipeline_model.ak中。

6. 基于物品的协同过滤——推荐预测
如果有这个模型,如何用它来做推荐预测?
image.png
如上图左边所示,首先用Pipeline_lodel可以Load函数,然后给出对应的文件路径。这样的话就将模型Load到内存中,然后Transform就可以将对应的数据集进行推理预测。右边为输出结果。

7.基于物品的协同过滤——Java/Python LocalPredictor预测
训练模型最终要部署到线上,这边提供了LocalPredictor机制,它支持Java与Python接口。在Java或Python环境下,直接通过LocalPredictor就加载模型,然后模型可以通过Map函数完成推理的操作。有了Python和Java这两个接口,我们可以在相应的环境下部署想要的一些服务。
image.png
image.png

(三)Click-Through Rate Prediction DEMO
在网络广告中,点击率(CTR)是衡量广告效果的一个非常重要的指标。因此,点击预测系统在赞助搜索和实时竞价中具有重要的应用价值。该Demo 使用 FTRL方法实时训练分类模型,并使用模型进行实时预测评估,展现了在线学习的能力。
image.png
上图为一个经典的数据集,有一些是字符串,有些特征是对应的数值性。

如何针对这个数据集去做在线学习呢?
image.png
在线学习流程图
该流程存在四个问题:
1)如何进行特征建模?
2)如何训练初始模型?
3)如何进行在线训练和预测?
4)如何对结果进行评估?

1.如何进行特征建模?
image.png
上图为脚本Demo,首先对原始数据做标准化操作,然后对这数据链做了一标准化操作,之后通过FeatureHash将它映射到数组中,生成一个Pipeline,Fit将整个数据相进行特征工程训练,训练出模型。

2.如何训练初始模型?
image.png
FTRL本质上是Online的逻辑回归,初始模型调了逻辑回归组件,通过设置参数,以LinkFrom方式对数据训练,最终完成初始模型的训练。

3.如何进行在线训练和预测?
在线训练和预测主要分为三步,第一是准备流数据,第二是FTRL算法实时更新模型,第三是对实时数据进行预测,对应Demo如下:
image.png
准备流数据
image.png
FTRL算法实时更新模型
image.png
对实时数据进行预测

4.如何对结果进行评估?
image.png
如上图所示,得到模型之后,希望对模型进行评估。
通过 EvalBinaryClassStreamOp组件,就可以完成对模型的评估操作。上图下方为得到的评估指标,可以根据相应的信息去考虑这个模型是否要部署到线上。

(四)Web Demo
上方为脚本的方式,这边用Web的方式也可以实现这样的操作,操作流程图如下:
image.png
Alink支持大屏显示,实时结果写一个数据库中,大屏会实时读取数据库的数据进行展示,如下图所示:image.png
图上方为评估结果,下方为AUC曲线和准确率曲线。

我们也可以直接对模型进行评估,而不是预测,如下图所示:
image.png
image.png
当FTRL训练完模型,会有一个实时的评估组件,组件对模型进行评估。这里要注意的是,两个特征工程调用的是同一个特征模型。
image.png
FTRL模型过滤参数配置

(分享人:赵伟波)

第一期分享内容《基于Flink的机器学习平台Alink》

云原生场景中的AI调度

欢迎加入机器学习PAI钉钉群交流!
PAI钉钉群二维码.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
13天前
|
机器学习/深度学习 存储 人工智能
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
本文是关于2022-2023年知能科技公司机器学习算法工程师岗位的秋招笔试题,包括简答题和编程题,简答题涉及神经网络防止过拟合的方法、ReLU激活函数的使用原因以及条件概率计算,编程题包括路径行走时间计算和两车相向而行相遇时间问题。
35 2
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
|
13天前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
基于python 机器学习算法的二手房房价可视化和预测系统
|
2天前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
7 2
|
12天前
|
机器学习/深度学习 人工智能 算法
【数据挖掘】2022年2023届秋招奇虎360机器学习算法工程师 笔试题
本文提供了奇虎360公司2022年秋招机器学习算法工程师岗位的笔试题内容,包括选择题和编程题,涉及概率统计、数据结构、机器学习、计算机组成原理等多个领域。
38 5
|
9天前
|
机器学习/深度学习 数据采集 人工智能
理解并应用机器学习算法:从技术基础到实践应用
【8月更文挑战第10天】机器学习算法的应用已经深入到我们生活的方方面面,理解和掌握机器学习算法对于数据科学家、工程师乃至普通从业者来说都至关重要。通过本文的介绍,希望大家能够对机器学习有一个基本的认识,并学会如何将其应用于实际问题中。当然,机器学习是一个不断发展和演变的领域,只有不断学习和实践,才能跟上时代的步伐。
|
11天前
|
机器学习/深度学习 自然语言处理 算法
利用机器学习算法进行自动化测试
利用机器学习算法进行自动化测试
|
13天前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】2022年2023届秋招宏瓴科技公司机器学习算法工程师 笔试题
关于宏瓴科技有限公司2022-2023年秋招机器学习算法工程师岗位的笔试题目及作者个人对部分题目的解答尝试,涉及贝叶斯误差和贝叶斯最优分类器的概念、贝叶斯误差的重要性和估算方法,以及如何有效利用训练集和测试集进行深度学习模型训练的数据集划分策略。
34 4
|
13天前
|
机器学习/深度学习 算法 数据中心
【机器学习】面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?PCA与线性判别分析LDA降维的区别?
本文介绍了主成分分析(PCA)算法,包括PCA的基本概念、算法过程、中心化处理的必要性、正交变换的目的,以及PCA与线性判别分析(LDA)在降维上的区别。
28 4
|
13天前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
66 2
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测
本文通过数据采集、处理、特征选择和机器学习建模,对一线城市租房价格进行预测分析,比较了随机森林、一元线性回归和多元线性回归模型,并发现随机森林模型在预测租房价格方面表现最佳,为租房市场参与者提供决策支持。

热门文章

最新文章