第三届Apache Flink 极客挑战赛暨AAIG CUP攻略发布!

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 阿里云 周云峰(云岩)、淘系技术部 黄家明(明小)两位老师共同解读第三届Apache Flink 极客挑战赛暨AAIG CUP赛题内容

本文作者:阿里云 周云峰(云岩)、淘系技术部 黄家明(明小)
大赛直通车:https://tianchi.aliyun.com/competition/entrance/531925/introduction

第三届Apache Flink 极客挑战赛暨AAIG CUP 自8月17日上线以来已有 4000+ 参赛队伍报名。针对赛题“电商推荐‘抱大腿’攻击识别”涉及的知识点及相关工具使用已在每周直播课程中分享,本文将通过一下几点对赛题进行详细解读,帮助选手更好的了解赛题核心内容。

赛题详细解析

赛题背景

随着互联网的发展,网购成为越来越多人的选择,据阿里巴巴财报显示,2020财年阿里巴巴网站成交总额突破一万亿美元,全球年度活跃消费者达9.60亿。

为了满足不同用户的个性化需求,电商平台会根据用户的兴趣爱好推荐合适的商品,从而实现商品排序的千人千面需求。推荐系统常见的召回路径有U2I(User-Item)、I2I(Item-Item)等。其中,user-to-item是指通过用户的 profile信息为用户进行商品的推荐,而item-to-item推荐策略则根据用户的商品点击列表为用户推荐关联的商品。

推荐系统的目的是基于不同用户的偏好进行千人千面的推荐。传统的离线推荐系统基于用户历史的行为数据进行加工处理,形成特征样本,然后离线训练模型,并且在线部署进行服务。然而用户的偏好是多元的、用户的行为分布会随着时间而变化,离线的模型无法刻画这种动态的用户偏好,因此需要进行实时的特征更新与模型参数更新,从而能够更好的捕获用户的行为偏好。在推荐场景中,为了更好的提升推荐的时效性与准确性,平台会基于全网的用户行为信息进行实时的 U2I 及 I2I 的更新,并且基于用户最近的行为信息进行相关性的推荐。

为了获取更多的平台流量曝光,将自己的商品展现在更多的消费者面前,部分商家通过HACK平台的推荐机制从而增加商品的曝光机会。其中一种典型的手法为“抱大腿”攻击,该方法通过雇佣一批恶意用户协同点击目标商品和爆款商品,从而建立目标商品与爆款商品之间的关联关系,提升目标商品与爆款商品之间的I2I关联分。商家通过这种方式诱导用户以爆款的心理预期购买名不符实的商品,不仅损害了消费者的利益,降低其购物体验,还影响了平台和其他商家的信誉,严重扰乱了平台的公平性。因此,我们需要用一个风控系统来过滤掉这些可能的恶意流量,避免它们对推荐系统的模型造成干扰。

由于所有用户行为在输入推荐系统之前,都会首先经过风控系统的过滤,所以如果想要做到推荐系统的实时性,风控系统就必须同样做到实时性。实时拦截此类行为,有助于在保证推荐的时效性的同时,保护实时推荐系统不受恶意攻击影响。

实时风控系统对数据安全的要求较高,如果系统的拦截算法意外泄漏,HACK平台将得以针对性地加强恶意流量的伪装能力,增大平台监控恶意流量的难度,因此,此类系统有必要部署在加密的可信环境中。

综上所述,为了保障实时推荐系统的准确性,比赛要求选手实现一个保证了数据安全的实时风控系统。

数据说明

给定恶意点击、正常点击及对应的“商品”、“用户”相关的属性信息(用户本地调试可以从网上下载),选手实现实时的恶意点击识别分类算法,包括模型训练和模型预测。在大赛评测系统中,系统使用100万条数据用于模型训练、10万条数据用于模型预测。另外,比赛提供给选手50万条数据的数据集用于算法的本地调试。

比赛提供如下格式的数据用于训练与预测。所有数据均采用csv格式保存在文件中,即以下数据格式的各列之间以逗号分隔。每条数据代表一次用户点击商品的行为,它的特征主要来源于其所关联的用户与商品。

uuid visit_time user_id item_id features label
  • uuid:每条数据的id。该id在数据集内具有唯一性。
  • visit_time:该条行为数据的发生时间。实时预测过程中提供的数据的该值基本是单调递增的。
  • user_id:该条数据对应的用户的id。
  • item_id:该条数据对应的商品的id。
  • features:该数据的特征,包含N个用空格分隔的浮点数。其中,第1 ~ M个数字代表商品的特征,第M+1 ~ N个数字代表用户的特征。
  • label:值为0或1,代表该数据是否为正常行为数据。

训练数据包括上述所有列的数据,预测数据包括除了label之外的所有列。

模型文件的输入输出格式

对于只希望在算法层面加以优化的选手,仅需保证保存的模型文件的输入输出为如下格式即可。我们提供的示例镜像的代码能够预处理输入数据的格式,解析Tensorflow模型的推理结果,并最终生成符合评测程序要求的CSV格式的文件。

预测模型输入tensor格式。其中N为feature的个数。
Tensor("input:0", shape=(?, N), dtype=float32)
预测模型输出tensor格式。输出值为0或1,表示输入行为数据是否为恶意行为。
Tensor("output:0", shape=(?, 1), dtype=float32)

Demo解析

本次赛题注重算法和工程的结合,解答赛题大概要经过以下几个阶段:模型训练、模型预测、最优阈值选取、在线预测并判定类别。

  • 模型训练:训练集中的数据都是结构化的,不需要进行特征抽取阶段,可以直接使用模型进行训练。在 demo 里,构建了一个前向反馈网络进行模型的训练,直接拟合样本的标签;
  • 模型预测:为了将训练与预测阶段做到更好的分离,在模型预测阶段,使用的是 cluster serving 的形式,因此预测只需要直接加载训练好的模型,便可以进行预测;
  • 阈值选取:线上使用的是直接判定类别,而不是输出一个概率,这个是非常符合实际业务场景的。但是直接输出类别的情况下,阈值的选取对于模型的线上效果影响特别大,因此需要进行阈值最优选择,找到在验证数据中最优的阈值作为线上判定的阈值,目前demo使用的阈值为 0.5;
  • 在线预测并判定类别:在最终输出的时候通过对于当前预测概率与最优阈值的大小,从而确定当前样本的预测类别(是否作弊)

Demo优化

  • 实时特征:目前提供的只有用户/商品的偏静态的特征,但是数据中还包括了 用户-商品 的点击关系,用户可以考虑基于点击关系构建实时的特征,比如统计当天截止目前用户/商品的点击量,用户的平均商品点击数、商品的平均用户点击数等;不过需要注意的是,当预测阶段使用了实时特征,则在训练阶段也需要配套相同的实时特征,否则训练与预测使用的特征不一致会导致模型报错或者效果变差的情况;此外,训练集中已经知道哪些商品/用户是有过作弊行为的,这些信息也可以作为模型的特征进行构建;
  • 模型训练:业界有很多成熟的DNN模型,目前demo使用了3层的结构,选手可以考虑使用更复杂的模型进行训练,从而达到更好的拟合效果;此外,我们不应该局限于某个"超级模型",而是可以考虑基于集成学习的方式混合多个模型/策略进行预测。
  • 最优阈值选择:目前 demo 中使用的阈值为 0.5,但是最优阈值选取需要基于模型的在验证集中的预测情况进行选择,其实我们可以写一个脚本,通过验证集找到最优的阈值;
  • 在线预测:线上 demo 模型对于全部的流数据均会进行预测,然而一但出现某个样本的预测出现高延迟,可能会导致后续的样本预测也会出现连带的延迟,从而导致整体线上延迟严重。除了优化算法与工程、尽量降低延迟之外,选手也可以尝试对延迟进行监控,以缓解长尾现象的影响。

评分指标

选手提交结果的分数由两方面评分的乘积来决定,两方面分别代表选手提交结果的算法与工程方面的表现。用一个公式表示即如下所示:

score=F1 ∗valid_latency

在算法方面,比赛根据推理结果的F1参数来评分,即推理结果的准确率与召回率的调和平均数。

在工程方面,由于比赛模拟实时风控场景,所以比赛对实时推理过程中的延迟做出限制。选手的程序需要为kafka中出现的实时数据流提供推理服务,并在数据流的流量不超过给定阈值的情况下,单条数据的延迟不超过500ms。

选手部署的推理服务需要从kafka中读取待推理数据,并将推理结果写入kafka。数据的延迟的定义即为待推理数据及其推理结果在kafka中的时间戳的差值。上述公式中的valid_latency,即为延迟符合要求的数据占所有数据的比例。延迟超过500ms的数据不仅会影响到valid_latency的值,进而影响到分数,而且也不会参与F1参数的计算过程。

技术介绍

Apache Flink 是一个在无界和有界数据流上进行状态计算的框架和分布式处理引擎。Flink 已经可以在所有常见的集群环境中运行,并以 in-memory 的速度和任意的规模进行计算。

在Flink的基础上,Flink AI Flow作为兼顾流计算的大数据 + AI 顶层工作流抽象和配套服务,提供了机器学习的端到端解决方案。

Analytics Zoo及BigDL是英特尔®开源的统一大数据分析和AI平台,支持分布式TensorFlow及PyTorch的训练和推理,通过OpenVINO工具套件和DL Boost指令集等,提升深度学习工作负载的性能。Cluster Serving是Analytics Zoo/BigDL的分布式推理解决方案,可以部署在Apache Flink集群上进行分布式运算。

Occlum是蚂蚁集团基于Intel SGX的开源LibOS,使得 Linux 应用程序在只修改少量代码或者完全不修改代码的情况下运行于 Enclave 安全环境中,保证数据处于加密和强隔离状态,确保数据安全与用户隐私。

参考资料

基础镜像使用说明与相关技术介绍:https://code.aliyun.com/flink-tianchi/antispam-2021/tree/master
Flink 1.11中文文档:https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/
Flink AI Flow Wiki:https://github.com/alibaba/flink-ai-extended/wiki
Analytics Zoo Cluster Serving Programming Guide:https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/ClusterServingGuide/ProgrammingGuide.md
Occlum Github Repo:https://github.com/occlum/occlum

学习资料

学习论坛:https://tianchi.aliyun.com/competition/entrance/531925/forum
学习视频:https://flink-learning.org.cn/activity/detail/99fac57d602922669b0ad11eecd5df01
大赛答疑交流钉钉群:35732860

点击了解更多赛题信息

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制T恤;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
27天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
568 13
Apache Flink 2.0-preview released
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
62 3
|
1月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
2月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
4月前
|
存储 监控 大数据
阿里云实时计算Flink在多行业的应用和实践
本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践,对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术,并且提供一些在技术架构上的参考建议。
818 7
阿里云实时计算Flink在多行业的应用和实践
|
14天前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
671 10
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
3月前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用问题之如何在EMR-Flink的Flink SOL中针对source表单独设置并行度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
SQL 运维 数据可视化
阿里云实时计算Flink版产品体验测评
阿里云实时计算Flink基于Apache Flink构建,提供一站式实时大数据分析平台,支持端到端亚秒级实时数据分析,适用于实时大屏、实时报表、实时ETL和风控监测等场景,具备高性价比、开发效率、运维管理和企业安全等优势。
zdl
|
2天前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
16 0
|
27天前
|
运维 搜索推荐 数据安全/隐私保护
阿里云实时计算Flink版测评报告
阿里云实时计算Flink版在用户行为分析与标签画像场景中表现出色,通过实时处理电商平台用户行为数据,生成用户兴趣偏好和标签,提升推荐系统效率。该服务具备高稳定性、低延迟、高吞吐量,支持按需计费,显著降低运维成本,提高开发效率。
63 1

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多