写点什么

千人千面营销系统在携程金融支付的实践

  • 2019-09-17
  • 本文字数:3018 字

    阅读完需:约 10 分钟

千人千面营销系统在携程金融支付的实践

一、引言

携程金融核心产品为:拿去花、借去花、信用卡、理财。其中拿去花提供携程产品分期支付服务,借去花提供现金借款服务,信用卡提供携程联名卡、理财则给用户提供有竞争力的理财产品。除此之外还有闪游卡、二维码、程金币等小的业务线。


如何把这些创新性的金融产品,推荐给有兴趣的潜在用户,成为一个需要解决的难题。在此背景下,支付中心数据组开发了一套用户精准营销系统。

二、系统设计目标

1)不侵入业务系统,与业务系统解耦


业务方只要提供符合规范的 restful 接口,即可接入系统。接口分为两类:一些强业务关联的规则,由业务研发实现;另外一些分析相关的接口由数据组负责完成实现。


2)灵活的营销页面投放方法


可以灵活进行分群及投放。投放策略分为:共性策略,个性化策略。共性策略配置实时生效,产品运营可以根据业务需要及时调整相关策略,无需数据/研发参与;而较为复杂的个性化策略可以由数据组基于画像指标进行扩展与定制,免去了漫长的开发、测试、发布等阶段,提高了投放效率。


3)支持多种投放模式


基于优先级、随机、模型等,其中模型效果可以通过 Abtest 量化效果以及迭代优化。


4)报表监控/离线数据采集


报表监控包括:实时流量使用、实时点击、离线点展转化、业务接入 api 性能监控;离线数据采集主要是为了追踪策略效果及转化。


为了方便其他业务方接入,数据组定义了一套输入/输出标准,业务方提供的 restful 接口只需满足输入输出的定义,即可接入本系统,这样接口开发与数据组策略制定可以解耦,运营可以针对每种接口进行热插拔式投放。

2.1 整体架构


1)策略管理模块:数据组收集业务相关需求,沉淀相关的业务规则。目前核心功能是:借助分流策略提高流量利用率及使用模型评分提高开户转化率。


2)模型训练模块:根据不同业务线的特点,定义模型黑白样本,使用机器学习算法,对用户业务线的开通情况进行评分并进行标准化。


3)数据收集/分析模块:建立了完善的离线及实时监控,如实时流量使用、实时点击、离线流量/开通转化率数据;通过后端埋点,埋点日志落地至 hive 中,数据组基于日志分析各个步骤数据转化效果,进而优化策略。

2.2 交互时序

通过各接入业务方接口拦截是其营销页面展示的必要条件,为了提高接口的响应性能,采用了线程池对每种类型的弹窗分别遍历各自的规则,同时对于业务线接口返回超时时间进行限制,防止系统性能出现较大的真震荡。


三、核心功能

本系统关注两个方面:流量使用率和流量转化率,前者实现流量精细化运营,能够更加精细的控制每个产线所分配的流量;后者致力于提高流量转化,使流量能够最大化其价值,流量使用率主要通过分流实现,而流量转化率主要借助机器学习算法。

3.1 流量使用率-分流

分流的本质在于提高流量的利用率,在流量总量有限的情况下,如何根据一定的策略实现不同流量的分配,流量是通过百分比进行划分,所有产品线共享流量比例为 100%。当前支持的策略有:随机均匀、基于优先级、基于推荐算法实现。

3.1.1 随机均匀

均匀性:保证各业务线不仅能够在投放总量上保持均匀分配还要求在同一时点尽可能的均匀,不同时点的流量质量会有差异,此处可以借鉴各种随机化函数实现(random/Collections.shuffle())。


一致性:保证同一个用户多次进入都会显示相同的营销内容,常用的算法为 hash 取模,如果对于并发度要求高,可以使用 murmurhash3。

3.1.2 预测当天流量

当一个用户能够通过多个业务线策略拦截时,随机选择一个业务线的营销页面进行投放。针对任一用户 uid,各业务线接口返回值会有不同,且不同业务线的拦截策略也会有所不同,最终能够通过业务线拦截的业务线个数会不同,故无法保证完全的均匀性和一致性。


如果仅仅借助于均匀性和一致性会导致部分产线的流量分配不合理,因此需要对各个业务线流量的上限进行严格控制。此时需要预测当天流量才能借助于当天流量总量及所分配比例,确定流量预算,考虑到携程 app 流量周期性影响,可以借助于时间序列模型去预测。

3.2 开通转化率-模型

3.2.1 模型 Y 值定义

为了提高营销页面的转化率,我们借助机器学习算法,在选择模型的正负样本的时候,我们没有以是否点击作为模型的 target,而是以是否开通作为模型的 target,原因是我们通过离线数据分析发现,UED 重新设计页面,可能导致页面的点击率变动较大,当对于整体的开通转化率影响较小。

3.2.2 关于模型开发及部署

我们测试了多种业内算法,最终采用了 GBDT+LR,由于目标客户量大,而模型训练的特征也有近百个,且需要对每天的全量用户进行打分并推到生产环境,故直接使用 spark ML 在 hadoop 平台进行模型训练及部署。


模型效果如下:其中拿去花 KS 较高,是由于已激活的拿去花用户较多,能够拿到的特征相对比较全面。



3.2.3 评分的标准化

由于大部分产线都会单独进行模型评分,各自评分的度量需要映射到同一个基线上进行评分才合理,这个统一基准包括:开通转化率的测算,然而不同业务线的开通转化率差异也会很大,我们对评分进行分段,对不同分段的开通转化率进行测算,最终根据测算结果选择阈值,且利用最大最小值标准化不同产线的评分。

四、策略制定需要关注的问题及解决方案

4.1 流量预算少时模型阈值的选择

倘若某个业务线所分配的流量占比非常少时,是否可以大幅度提高其转化率?也就是尽量选择高质量的流量进行曝光,防止流量过早在相对较低质量时段中耗尽,此时如果该业务线上了模型,可以将模型分值调整到一个较大值,从而保证其转化率。

4.2 业务线共存

各产线营销页面投放需求差异较大,部分营销页面投放周期较短,或不以“开通”为目的时,可能就不需要为这种类型的业务线训练模型,而营销页面投放选择时会遇到:拥有模型业务线和不拥模型业务线共存问题,此时要合并这两种类型的营销页面,进行页面随机均匀选择。

4.3 新业务线的接入

新接入的业务线由于没有样本,需要事先分配部分流量,待样本积累一段时间后,才会进行模型评分。

4.4 模型效果量化-abtest

理论上一个新的用户端产品上线前都应该进行有效的 abtest,然后基于 T/Z 检验 abtest 产品效果,实际上 abtest 效果评估也需要根据业务进行调整。


如在一般的信用类场景中,使用 abtest 进行效果评估会很不合适,因为用户变坏的过程较为缓慢,且策略变更也较为频繁,而效果却难以短时间内衡量,具体到本系统,定义好目标值,如开通转化率,在保证 AB 样本接近 1:1 时,很容易可视化模型效果,无需 T/Z 检验。

4.5 如何构建近似 1:1 的 abtest 流量

Abtest 衡量转化率时,需要尽量保证 A 流量和 B 流量近似于 1:1,这需要对 A、B 样本进行埋点,然后线下分析,进而调整各业务线的模型分值,间接影响 AB 流量分配。


五、总结

本营销系统,基于携程用户信息及机器学习算法,灵活进行分群及推荐,解决了流量利用率和转化率难点,且能够通过 abtest 量化/迭代推荐算法效果,业务线接入简单,支持运营产品实时调整营销策略。


数据同学能够基于收集的完整后端/UBT 日志,跟踪分析营销系统每一步的转化情况,然后进行策略调整及优化投放。


作者介绍


房英明,携程支付中心数据负责人,目前负责支付离线数据仓库建设及 BI 业务需求。主要兴趣点为并行计算、数据处理及应用等领域。


本文转载自公众号携程技术中心(ID:ctriptech)


原文链接


https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697268843&idx=2&sn=d06a334e47c160f1ce73af9b55ce3d81&chksm=8376f15fb401784985aed56df9621e53ca152369bd5b666235a8d5e7510b71b22723e99d5e6f&scene=27#wechat_redirect


2019-09-17 08:002541

评论

发布
暂无评论
发现更多内容

翻遍GitHub,这份MySQL全面手册,受喜爱程度不输任何大厂笔记

Geek_0c76c3

Java MySQL 程序员 架构 面试

技术分享预告|DocArray x Redis 比快更快的向量搜索

Jina AI

人工智能 开源 算法 向量检索 神经搜索

【LeetCode】仅执行一次字符串交换能否使两个字符串相等Java题解

Albert

LeetCode 10月月更

全网首发“Java面试考点大全”,25+专题梳理:JVM+多线程+Spring全家桶+MySQL+Redis等

Geek_0c76c3

Java 数据库 程序员 架构 面试

前端培训学习的就业前景是什么样的

小谷哥

小程序运营怎么做?

源字节1号

软件开发 前端开发 后端开发 小程序开发

大数据学习培训机构怎么去选择

小谷哥

抖音后端123面开挂,全靠这份啃了58天的「Java进阶核心知识集」

Geek_0c76c3

Java 数据库 程序员 架构 面试

算数、赋值、比较、逻辑、三元运算符

共饮一杯无

Java 运算符 10月月更

数字化转型:营销数字化

Taylor

数字化 营销数字化 客户数据平台 CDP 营销数据中台

MobPush iOS端常见问题

MobTech袤博科技

ios

打破“双十定律”,华为云AI推动超级抗菌药Drug X研发加速

华为云开发者联盟

AI 华为云 药物研发 盘古大模型 企业号十月 PK 榜

如何用AR Engine环境Mesh能力实现虚实遮挡

HarmonyOS SDK

AR

web3 chainlink 预言机喂价、VRF

1_bit

智能合约 web3 chanlink

前端线下面授培训机构该怎么选择?

小谷哥

快速上手SpringBoot

亮点

Java spring-boot 10月月更

两数之和

掘金安东尼

算法 10月月更

又一里程碑!阿里首推Java面试通关手册,必须人手一份!

Geek_0c76c3

Java 数据库 程序员 架构 面试

初学大数据培训学习入门

小谷哥

web前端技术培训学习好点

小谷哥

如何在 SAP BTP 平台上重用另一个已经开发好的 service

汪子熙

云原生 SaaS 云平台 SAP 10月月更

搜索中常见数据结构与算法探究(一)

京东科技开发者

数据结构 ES 哈希 数据结构算法 搜索算法

STM32L051测试 (二、开始添加需要的代码)

矜辰所致

stm32 STM32CubeMX 10月月更

Java数据类型转换

共饮一杯无

Java 类型转换 10月月更

阿里 DBA 首次公开 MySQL 调优笔记,GitHub上已经开始疯狂涨星

Geek_0c76c3

Java 数据库 开源 程序员 面试

从简历被拒到收割8个大厂offer,我只用了三个月

程序知音

Java 架构 java面试 后端技术 Java面试八股文

Qt | Qt的动画框架和类

YOLO.

qt 10月月更 C++

上岸稳了!GitHub标星115k+的阿里内部Java学习教程限时开源

Geek_0c76c3

Java 数据库 程序员 架构 开发

一文读懂 MySQL 索引

说故事的五公子

MySQL 数据库 索引

OpenHarmony社区运营报告(2022年9月)

OpenHarmony开发者

OpenHarmony

ShareSDK Android端权限说明

MobTech袤博科技

sdk Andriod

千人千面营销系统在携程金融支付的实践_文化 & 方法_房英明_InfoQ精选文章