共计 4855 个字符,预计需要花费 13 分钟才能阅读完成。
简介: 阿里云 周云峰(云岩)、淘系技术部 黄家明(明小)两位老师独特解读第三届 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
版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。