ML:阿里云计算平台之搜索推荐演讲分享《多场景智能推荐助力业务增长》、《阿里云智能推荐应用实践:PAI-EasyRec Framework》、《新一代数仓架构漫谈》
目录
阿里云智能推荐应用实践:PAI-EasyRec Framework
EasyRec Framework: more than a collections of models
EasyRec的优势: Feature Generation(FG):一致性保证
Hologres : Better OLAP + Better Serving+Cost Reduced


| 搭建成本 | 人员要求高:自建推荐系统对人员要求较高,系统开发、数据处理、召回、排序模型开发及调优,均需要高级开发&算法工程师长期参与; 上线周期长:推荐系统架构复杂,为达到上线效果需要反复调优,所需开发时间多于3个月; 运维成本高:升级迭代、自建系统后期有较高的维护成本。 |
| 推荐效果 | 冷启动效果差:上线初期无历史行为数据积累的情况下,推荐系统效果较差; 效果调优困难:套用主流算法不一定有好的效果,还需考虑应用领域数据、相关性、新颖度、时效性等多维度推荐效果; 核心指标难统一:想提高CTR的同时又增加用户停留时长,无法兼顾多个核心指标。 |
| 后续维护 | 适配难度大:任何一套推荐引擎都无法完全适配企业的业务诉求,智能推荐提供了黑白盒一体化; 运营易用性:推荐系统较复杂,不具备算法知识但需要干预的运营人员上手难度大; 服务稳定性:推荐场景通常用于高流量页面,对系统性能及稳定性以及弹性要求极高; |
开箱即用:高度产品化、行业化;行业与阿里自研主流算法封装;覆盖全链路(支持友盟SDK行为采集);
推荐精准:行业、场景定向优化;多目标模型训练;多种模型策略;全托管:保障在线服务稳定性;灵活升降配服务;丰富的数据质量诊断功能,在线服务监控告警;
灵活适配:运营助手;产品和运营可快速干预推荐开发和算法;集成强大的离线、在线链路开发能力;

实时交互是促进消费者沉浸式浏览的必备基础功能。推荐PLUS可实时学习消费者当前兴趣表达、变化,并更新在下一次生成的推荐结果中,从而实现实时的互动式推荐功能。


推荐系统在与用户互动的过程中,有可能出现不符用户预期的推荐结果,而负反馈成为推荐与用户对话的重要入口。推荐PLUS支持单个商品维度、商品类目维度以及商品其他特征类维度的负反馈功能。
禁推-A
注意:针对小明,将不再推荐A-羽毛球拍商品((这一款)。
降权-B
注意:针对小明,将减少推荐B-手风琴商品(这一类)。
降权-C
注意:针对小明,将减少推荐C-高跟鞋商品(这一品牌/店铺/标签等)。
新商品冷启动是每个电商平台棘手的推荐难题。推荐Plus可根据站内用户行为分析、兴趣分析,结合新品特征属性,小流量个性化探测新品潜力,从而逐渐扶持/打压新品的推荐流量。
发布的新品→结合用户画像分发推荐→新品潜力分析

场景作为个性化推荐的流量入口,在不同的页面/不同的用户群可进行差异化的定制。如,首页的推荐、频道页推荐、个人中心页、搜索空结果页、商品详情页、购物车页等等。推荐PLUS支持定制差异化的场景选品规则。




定制算法策略的同时,无需关注上游的数据埋点、清洗逻辑、以及下游的在线链路拼接逻辑,仅需在控制台手动创建实验,即可对一组、多组配置进行修改,进行效果的追踪与实验的决策。

| 召回
| I2I(拼接与截断、叶子类目优先级) U2X2I(截断数量,特征选举-类目、作者、频道、标签等)Hot(截断数量) New(截断数量,特征选举-类目、作者、频道、标签等) Embedding(截断数量,item2vec、tag2vec、title2vec) 新增自定义召回链路 Etrec (12i、集团内部业务应用的i2I算法) GraphSage(u2I,行业内唯一能输出GNN算法的平台,GNN是目前技术领域比较领先的框架 ALS实现user和item向量产出 |
| 排序 | DeepFM(业内目前知名度最高的深度学习排序算法,基于论文自行实现版本) MultiTower(基于Youtube论文,PAI自行实现的一版) BST(阿里自研,用户历史行为序列建模) ESMM、MMoE(实现多目标优化的排序模型) DIN(阿里自研,目前在业内比较出名的一款产自阿里的深度学习排序算法) 基础排序模型如LR、GBDT等 |

通离线平台结合预采用的行业内算法模型,通过拖拽的简易方式,进行上下游数据连通,节点参数配置,串通一套完整的召回/排予侯全,并生成召回表/生排序模型。

| 启用/创建实验 实验模板创建 基准/缺省实验 实验置信校验 | 定制算法配置1-n 定制召回 定制排序 定制实时行为 | 实验调试与分桶 桶号指定 实验生命周期管理 体验测试 | 实验效果分析 单实验效果报表 多实验效果报表 多元指标选择 | 实验决策 下线 推全 实验记录与溯源 |


为趣是微信小程序中的长视频应用,在小程序总榜名列Top10,
·CTR提升接近3%
·人均使用时长提升11%
·在长尾视频挖掘方面得到显著提升,多曝光了2-3倍的视频
以上目标的提升带动了用户上传视频的积极性,总体提升了23%的视频上传量



推荐服务(在线)
训练(离线)
数据加工存储(离线)

目标:针对不同用户画像,实现推荐的千人千面。
模块:日志收集,特征生成,内容召回,计算排序,曝光过滤,运营规则,效果评估
用户→日志收集→特征生成→用户画像/物品画像/用户行为→召回→排序→曝光过滤→效果评估→AB,分桶→用户
用户画像:男,三四线城市,娱乐,体育,林书豪
物品画像:娱乐,高以翔,跑步,健康
用户行为:点击,曝光,分享
·海量数据:召回样本数据量达到千万级别,排序样本量会上亿,单机训练非常困难
·海量特征:训练和推理的性能优化, RT,QPS,机器成本
·多目标优化:点击率,转化率,观看时长,多样性,模型复杂;
·冷启动:曝光测试,好友→地域→全网
·实时训练:实时特征(Flink,Kafka)+实时模型(EasyRec)


推荐模型演化
|
| 浅层模型 | 深度模型 |
|
| 召回 | 协同过滤→FM | EasyRec YoutubeNet DSSM MIND | >> 高阶特征交叉 >> 行为序列建模 >> 多目标共享 >> 迁移学习
|
| 排序 | LR→GBDT、FM、MLR | WideAndDeep DEEPFM DIN | |
| 多目标 | 多个LR/GBDT模型 | MMoE ESSM DBMTL |

主要组件都是可定制的:Input, FeatureGeneration, DeepModel, Optimizer,他们工作在即插即用模式。


>>ldFeature:离散特征
对于推荐系统很关键,如user_id, item_id等。
>>RawFeature:连续值特征
如身高、体重、价格、历史点击率等;
也支持word2vec, cnn和bert产生的embedding,做多模态训练,短视频、新闻推荐常用。
>>TagFeature:多值特征
如标签特征:健身、音乐、旅游等,电商、短视频推荐常用。
>>ComboFeature:组合特征,如年龄+地域
>>LookupFeature:查找特征,如从user的访问列表中查询item
>>MatchFeature:双层查找特征,根据类别和item进行两次查找
>>SequenceFeature:序列特征,用户行为建模必备(DIN/BST)
基于FeatureColumn 实现,和tensorflow的接口完全兼容。
特征是提升效果的关键因素
训练、评估、导出共享一套特征处


特征生成(FG)是最复杂的部分,容易导致线上线下不一致。为了保证一致性, EasyRec线上线下使用相同的FG代码

>>召回模型(Candidate Generation):DSSM/ FM
>>排序模型(Rank Models):
FM/ WideAndDeep / DeepFM
DeepKFM / DeepCross / Autolnt / MultiTower
DIN/ BST
>>多目标模型(MultiTask Model):
Simple MultiTask/MMoE/ ESMM / DBMTL
>>More models in development:
ListWise, ReRank模型
DeepGBM,连续值建模优化
多臂老虎机,冷启动模型
迁移学习
多目标建模、多兴趣建模


深度模型效果好,但是对工程能力的挑战比较大
如何保证QPS和RT? In EasyRec, we optimize tensorflow graph:



批量数据分析流程
(1)、T+0数据接入
多种数据源接入
(2)、定时数据开发与应用
数据提取/数据转换/数据加载
ODS数据处理
DWD标准数据场景
MDM元数据
数据集市应用
(3)、核心痛点
ETL计算/存储/时间成本过高
数据处理链路过长

数据源分为T+1和T+0数据
T+1数据→Batch View:离线数仓,数据周期性更新,面向复用。
T+0数据→Real-Time View:实时数仓,数据实时更新,面向应用。


实时写入、实时计算、实时洞察
实时离线一体化,减少数据移动
业务与技术解耦,支持自助式分析
拥抱标准,拥抱生态,拥抱云原生



Hologres是一款实时HSAP产品,隶属阿里自研大数据品牌MaxCompute,云原生分布式分析引擎,支持对PB级数据进行高并发、低延时的分析,支持实时数仓,大数据交互式分析等场景。

可以将指定数据源中的数据,通过简单的配置,一次性的实时同步到Hologres中,支持整库内批量多表同步,同时也支持全增量一体化同步,先全量数据迁移,然后实时增量保持更新。

小红书推荐业务下4种典型OLAP分析场景,按实验分组实时分析、多计算中心上线业务指标验证、灰度发包按版本实时指标对比、实时业务指标告警。

对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵