写点什么

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

  • 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:002936

评论

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

2023-05-15:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次, 能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k。 给你两个字母异位词 s1

福大大架构师每日一题

Go 算法 rust 福大大

解密 Golang 哈希算法:深入了解 MD5、SHA-1 和 SHA-256

Java你猿哥

Java golang 算法 哈希算法 Go 语言

如何使用Go语言实现ISP原则

Jack

龙蜥产品生态总监做客 InfoQ:后 CentOS 时代,国产操作系统能否扛起大旗?

OpenAnolis小助手

centos InfoQ 迁移 国产操作系统 龙蜥社区

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

西柚子

Nest.js JWT 验证授权管理

程序员海军

Node JWT nest

面试官:断网了,还能 ping 通 127.0.0.1 吗?

Java你猿哥

Java 架构 ssm ping

MobTech MobPush|助力预热618

MobTech袤博科技

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

股市老人

PoseiSwap缘何成DEX赛道新宠?POSE价值分析

西柚子

Java数据库项目之满汉楼

timerring

Java

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

BlockChain先知

Nautilus Chain 或成未来最好的链上隐私生态

鳄鱼视界

MySQL 8.0不再担心被垃圾SQL搞爆内存

GreatSQL

MySQL MySQL 数据库 greatsql greatsql社区

在 Python 中如何使用并发模型编程

江湖十年

Python 并发编程 多线程 协程 多进程

Java字节码 - ByteBuddy原理与使用(上)

骑牛上青山

Java JVM bytebuddy 字节码

Django笔记二十九之中间件介绍

Hunter熊

Python django 中间件 middleware

C语言编程-基本语法

芯动大师

骨灰级技术大牛左耳朵耗子(陈皓)突发心梗离世。

福大大架构师每日一题

福大大

Java字节码 - ByteBuddy原理与使用(下)

骑牛上青山

Java bytebuddy 字节码

GitHub万赞,不愧是腾讯大牛总结的操作系统笔记,面面俱到太全了

Java你猿哥

Java 面试 多线程 ssm 线程与进程

Nautilus Chain 或成未来最好的链上隐私生态

股市老人

对不起,您的访问次数已用尽!

为自己带盐

.net core 限流 AspNetCoreRateLimit

PoseiSwap缘何成DEX赛道新宠?POSE价值分析

股市老人

古鱼、恐龙和大众,相逢在百度百科的“彩虹桥”

脑极体

百科

远程桌面连接可以传文件么?

RayLink远程工具

远程桌面连接

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