带你读《2022技术人的百宝黑皮书》——基于特征全埋点的精排ODL实践总结(4)

简介: 带你读《2022技术人的百宝黑皮书》——基于特征全埋点的精排ODL实践总结(4)

带你读《2022技术人的百宝黑皮书》——基于特征全埋点的精排ODL实践总结(3) https://developer.aliyun.com/article/1246866?groupCode=taobaotech



event流程构建


首先对曝光/点击和全埋点特征TT流进行日志解析生成对应的event,在 PyPorsche 中,实时特征被称为 Event。


每个event表具有自己的schema和主键,注意event_ids为业务的唯一主键,index_fields中需填入后续会用于和其他表进行join操作的字段。


以下是将曝光的TT流解析并转换为对应event的代码片段:


tt_source = TTSource(TT(topic='dwd_ihome_lapp_content_expo_sample',
 access_id='',
 access_key=''),
 parser_clazz='com.alibaba.pyporsche.ihome.IhomeLappLogParser',
 schema=ihome_tt_schema)#schema
tt_source = session.register_table(tt_source)
ihomelapp_sink = session.register_table(
 EventSink(Event(event_name=EVENT_NAME_EXPO, event_ids=['pv_id', 'item_id'],
 index_fields=['pv_id', 'user_id', 'item_id'])))
tt_source.insert(ihomelapp_sink)


在上面的片段中,曝光event具有5个字段,其中pv_id,item_id,user_id,record_timestamp 这4个属性是通过ihome_tt_schema定义得到,而event_id是通过event_ids指定根据pv_id和item_id拼接得到。表的schema如下:


image.png


注意,由于xDeepCTR 3.0中将label放置在了features字段中,需要在xfc_event构建时将label特征从fg.json中移除,否则可能会导致最终产出的流式样本label为空。


流式样本骨架构建


在backbone的构建中,需指定一个主event,并从主event出发关联起若干event。在每平每屋场景中,曝光event被作为主event并以keyed_join的形式关联起一跳点击event和详情页的二跳点击event以及对应的全埋点特征event。


以下是将曝光event,一跳点击和二跳点击以及全埋点特征event进行关联并产生backbone的代码片段:


pv_event = session.get_table('event.' + EVENT_NAME_EXPO) # 主event
full_tracking_event = session.get_table('event.' + EVENT_NAME_FULL_TRACK)
click_event = session.get_table('event.' + EVENT_NAME_CLICK)
detail_click_event = session.get_table('event.' + EVENT_NAME_DETAIL_CLICK)
wide_table = pv_event.keyed_join(click_event, condition='pv_id=pv_id,item_id=item_id',
 join_type='ONE_TO_MANY', left_wait_second=630,tps=100)
wide_table = wide_table.keyed_join(detail_click_event, condition='pv_id=pv_id,item_id=item_id',
 join_type='ONE_TO_MANY', left_wait_second=1,tps=100)
output_table = wide_table.keyed_join(full_tracking_event, 'pv_id=pv_id,item_id=item_id', join_-
type='ONE_TO_ONE',
 left_wait_second=-630,tps=3000)
output_table.insert(session.register_table(BackboneSink(Backbone(BACKBONE_NAME))))


通过prosche任务页面的监控可以看到在当前等待时间下各event中数据被join上的的比例,pos表示join上的记录,neg表示没有被join上的记录,根据丢弃比例可以调整等待时间left_wait_second。



带你读《2022技术人的百宝黑皮书》——基于特征全埋点的精排ODL实践总结(5) https://developer.aliyun.com/article/1246863?groupCode=taobaotech

相关文章
|
算法 编译器 数据库
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
1051 0
CentOS7编译安装openssl1.1.1
centos7默认提供的openssl版本是1.0.2的,想要升级openssl版本则需要手动进行编译
|
12月前
|
消息中间件 人工智能 弹性计算
《文档智能 & RAG让AI大模型更懂业务》解决方案评测
一文带你了解《文档智能 & RAG让AI大模型更懂业务》解决方案的优与劣
370 13
|
10月前
|
C++ 容器
【c++丨STL】stack和queue的使用及模拟实现
本文介绍了STL中的两个重要容器适配器:栈(stack)和队列(queue)。容器适配器是在已有容器基础上添加新特性或功能的结构,如栈基于顺序表或链表限制操作实现。文章详细讲解了stack和queue的主要成员函数(empty、size、top/front/back、push/pop、swap),并提供了使用示例和模拟实现代码。通过这些内容,读者可以更好地理解这两种数据结构的工作原理及其实现方法。最后,作者鼓励读者点赞支持。 总结:本文深入浅出地讲解了STL中stack和queue的使用方法及其模拟实现,帮助读者掌握这两种容器适配器的特性和应用场景。
267 21
|
8月前
|
数据库 开发者
HarmonyOSNext 端云一体化(4)
本文是《HarmonyOSNext 端云一体化》系列第4篇,主要讲解数据库查询条件操作。文中详细介绍了查询条件中的“谓词”概念,列举了如`equalTo`、`greaterThan`、`orderByAsc`等常用谓词,并通过示例代码展示其用法,包括基本查询与复杂组合查询。读者可灵活运用这些谓词实现多样化数据筛选。文末还提供了进一步交流的方式,适合开发者深入了解鸿蒙数据库操作。
179 6
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
228 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
机器学习/深度学习 存储 算法
【强化学习】常用算法之一 “Q-learning”
Q-learning算法是一种基于强化学习的无模型学习方法,通过学习到目标系统的Q值函数来解决智能体在给定环境下的最优决策策略问题。Q-learning算法是基于后验策略方法,即学习出目标系统的价值函数Q之后,通过使用某种策略来最大化该价值函数,称之为后验策略。Q-learning算法是偏差-方差权衡的算法,在偏差较高的情况下可以在基于模型的强化学习中找到一个接近最优策略的解决方案。同时它也具有较高的收敛速度和广泛的适用性,因为其只需要存储一个值函数,不需要存储模型。
1251 0
【强化学习】常用算法之一 “Q-learning”
|
12月前
|
机器学习/深度学习 人工智能 安全
千问团队开源会思考的QwQ模型,这模型成精了!
QwQ是由Qwen团队开发的大型语言模型,专注于增强AI的推理能力。此预览版本在数学和编程领域表现出色,但在其他领域仍有提升空间。模型具备深度自省和自我质疑的能力,通过逐步推理和假设检验,能够在复杂问题上取得突破性进展。QwQ不仅支持本地推理和Ollama直接运行,还提供了详细的微调指南,助力开发者根据特定需求定制模型。尽管QwQ在推理过程中存在语言切换和安全性等方面的局限性,Qwen团队仍致力于不断优化,推动模型向更高层次的智能迈进。[了解更多](https://modelscope.cn/studios/Qwen/QwQ-32B-preview)
3597 0
千问团队开源会思考的QwQ模型,这模型成精了!
|
消息中间件 存储 安全