【云栖号案例 | 互联网】小打卡:基于 MaxCompute+PAI 的推荐算法实践

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
对象存储 OSS,20GB 3个月
大数据开发治理平台 DataWorks,不限时长
简介: 小打卡是国内最大的兴趣社群平台,每天能够产生上百万条新的内容。依托于阿里云MaxCompute,小打卡已经完成了TB级数据仓库方案。在此基础之上,结合机器学习PAI,实现了千人千面的推荐算法。

云栖号案例库:【点击查看更多上云案例】
不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策!

案例背景

小打卡是国内最大的兴趣社群平台,每天能够产生上百万条新的内容。在这样超大的内容生产背景下,平台也面临着千人千面、内容分发上的巨大挑战。依托于阿里云MaxCompute,小打卡已经完成了TB级数据仓库方案。在此基础之上,结合机器学习PAI,实现了千人千面的推荐算法。本文将从技术选型、推荐架构、开源算法结合三个方面,讲述小打卡在MaxCompute上的一些实战经验。

为什么选择MaxCompute

MaxCompute是阿里云完全自研的一种快速、完全托管的TB/PB级的数据仓库解决方案,并且上层提供了DataWorks以实现工作流可视化开发、调度运维托管的一站式海量数据离线加工分析平台。除此之外,MaxCompute还与阿里云服务的多个产品集成,比如:

  • 数据集成
    完成MaxCompute与各种数据源的相互同步
  • 机器学习PAI
    实现直接基于MaxCompute完成数据处理、模型训练、服务部署的一站式机器学习
  • QuickBI
    对MaxCompute表数据进行报表制作,实现数据可视化分析
  • 表格存储
    阿里云自研的分布式NoSQL数据存储服务,MaxCompute离线计算的机器学习特征可以很方便的写入,以供在线模型使用。

相反,如果完全基于开源的Hadoop框架,从服务部署、可视化开发、代码管理、任务调度、集群运维等多方面,均需要大量的人力来开发与维护。基于MaxCompute,不论是人力成本,还是计算成本,还是运维成本,都已经降到了最低。

小打卡推荐系统架构

小打卡的整个技术架构完全基于阿里云实现。埋点日志、业务数据分别由日志服务、RDS/DRDS承担收集和存储任务,通过数据集成同步到MaxCompute,之后便可基于PAI实现机器学习任务。其物理结构如下图所示。

image

机器学习PAI-Studio提供了数据预处理、特征工程、机器学习、深度学习、文本分析等丰富的机器学习组件,并且计算结果直接以宽表的形式存储于MaxCompute,极大的减轻了算法开发的工作量。

我们基于PAI,实现了GBDT+LR算法,任务流如下图所示:

image

图中采用了丰富的PAI机器学习组件,主要包括6个部分:1-特征加工,2-训练模型,3-验证模型,4-测试模型,5-特征映射关系,6-特征重要性。开发完成后,可以加载到DataWorks中进行调度,运行完成会生成GBDT模型文件(pmml格式)、LR模型文件(pmml格式)、特征映射表,以便线上使用。由于我们后端主服务均在华北1,而PAI的模型在线部署在华东2,存在着公网访问问题,因此我们暂时无法使用PAI的模型在线部署功能,建议大家将两部分放在同一地域。鉴于此问题,幸好PAI的同学提供了将pmml模型文件写入oss的脚本,相关代码如下:

  • pmml模型写入oss

pai -name modeltransfer2oss

-DmodelName=xlab_m_GBDT_LR_1_1806763_v0
-DossPath="oss://test.oss-cn-shanghai-internal.aliyuncs.com/model/"
-Darn="acs:ram::123456789:role/aliyunodpspaidefaultrole"
-Doverwrite=true
-Dformat=pmml;

因此我们可以将pmml文件写入oss,然后后端服务读取pmml模型文件,自行创建模型在线预测。对于解析pmml模型文件,虽然有开源项目支持pmml模型加载,但是由于pmml过于通用,导致性能存在问题,因此我们定制化自解析模型。

如何结合开源算法

遗憾的是,PAI提供的机器学习算法仍然有限,如果想要使用开源项目来实现算法部分怎么办呢?我们对此也做了尝试,我们则结合MaxCompute+PAI+xLearn实现了基于FM算法的CTR预估模型。
由于xLearn需要在单独的一台ECS上执行,那么问题就来了:

1.如何从MaxCompute拉取数据,又如何上传结果?

MaxCompute提供了pyodps,可以很方便的使用python读写MaxCompute的离线表。因此,我们在python循环检测PAI任务的特征工程结果表是否生成完成。生成完成,则启动下载数据和算法训练任务。算法执行结束后,则将模型文件通过pyodps写入MaxCompute,当然也可以使用tunnel工具来完成。

2.如何周期性调度?DataWorks上的任务与ECS上的任务,如何形成依赖关系?

对于拉取,我们通过循环实现了python与MaxCompute表的依赖关系,那么算法训练完成了,DataWorks的下游怎么知道呢?幸好,DataWorks提供了do-while控制流组件,我们可以在while条件中检测模型表相应分区的数据是否存在了,在 do 组件中,则采用shell执行sleep。跳出while后,则下游也开始正常执行了。之后便可以将模型和映射文件同步写入到oss,以供后端使用了。其中 do-while 结构如下:

image

总结

除了排序算法之外,我们还使用PAI和SQL,分别实现了item_cf和user_cf的召回算法,整个推荐系统完全打通。基于MaxCompute利用DataWorks调度系统,我们实现了推荐算法模型的每日自动更新。相比于模型不更新,我们对比了60天前的模型,新的模型效果提升10%左右。

云栖号案例库:【点击查看更多上云案例】
不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策!

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
1月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
20天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
27 1
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
714 2
|
1月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
105 0
|
1月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
66 0
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【2月更文挑战第20天】 在数据科学与人工智能的领域中,支持向量机(SVM)是一种强大的监督学习算法,它基于统计学习理论中的VC维理论和结构风险最小化原理。本文将深入探讨SVM的核心概念、工作原理以及实际应用案例。我们将透过算法的数学原理,揭示如何利用SVM进行有效的数据分类与回归分析,并讨论其在处理非线性问题时的优势。通过本文,读者将对SVM有更深层次的理解,并能够在实践中应用这一算法解决复杂的数据问题。
19 0
|
28天前
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【2月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过有效的数据处理策略、合理的特征工程、选择适宜的学习算法以及进行细致的参数调优来提升模型性能。我们将剖析标准化与归一化的差异,探索主成分分析(PCA)的降维魔力,讨论支持向量机(SVM)和随机森林等算法的适用场景,并最终通过网格搜索(GridSearchCV)来实现参数的最优化。本文旨在为读者提供一条清晰的路径,以应对机器学习项目中的挑战,从而在实际应用中取得更精准的预测结果和更强的泛化能力。