阿里巴巴WSDM Cup 2018夺得第二名,获奖论文全解读
雷锋网 (公众号:雷锋网) AI 科技评论按:在 2 月份举行的第 11 届网络搜索与数据挖掘国际会议(WSDM 2018)上,阿里集团 AliOS 算法团队获得 WSDM Cup 挑战赛第二名的成绩,这是中国企业首次在该赛事上取得的最高名次。
WSDM 被誉为信息检索领域最顶级的会议之一,会议的关注点为搜索、数据检索、数据挖掘、算法设计、算法分析、经济影响方面的实际且严谨的研究,以及对准确率和运行速度的深入实验探究。今年已经是 WSDM 的第十一届会议。
本次 WSDM Cup 有来自全球 575 支队伍参赛。会议共收到论文投稿 514 篇,接受论文 84 篇,接受率约 16%。
此次比赛出题方是一家名为 KKBOX 的流媒体音乐公司,赛题内容是预测 3 月订阅到期的用户中,哪些会流失。为解决该题,阿里巴巴使用了两层 Stacking Model,第一层采用逻辑回归、随机森林、XGBoost 算法,第二层又采用 XGBoost 算法把第一层的结果融合。流失用户预测,对有会员体系的业务场景都可以使用,其中会员付费为主要收入的业务就更为关键,比如像 Apple Music、虾米音乐。多层 Stacking Model 由 AliOS 神灯研发,极大提升了分类预测的准确率,已广泛应用于 AliOS 多项业务中。
以下为阿里集团的论文解读。
1. 介绍
KKBOX 是亚洲一家音乐流媒体公司,其业务模式与 Spotify 和 Apple Music 类似。对于音乐流媒体业务来说,付费会员非常重要,不仅直接影响订阅收入,还会间接影响广告收入。
本次比赛的目标是利用 KKBOX 真实的用户行为数据,预测会员是否会流失。比赛中我们面临了很多挑战,如正负样本不均衡、脏数据等问题。我们采取了一些列措施来解决这些问题,比如建立数据清洗和交叉验证机制,使用 Stacking Model 来提升准确率。
2. 问题定义
本次比赛的目标是预测当月会员到期的用户中哪些会流失。这里「流失」的定义是会员到期后 30 天内没有续费。
本次比赛的结果采用 Log Loss 进行评估,Log Loss 的计算公式如下:
公式中,N 表示测试样本数,表示测试样本最终是否流失(1 表示流失,0 表示没有流失),为模型预测用户是否会流失的概率(取值 0-1)。
3. 方法
考虑到模型的数据量和开发效率,我们采用了阿里云的 DataWorks 作为开发平台。
3.1 数据预处理
比赛提供了三份数据,分别是用户的订单明细、听歌日志和人口统计学信息。见下表:
脏数据问题例如年龄数值小于 0 或者大于 100,注册时间和支付金额中的极端异常值。我们处理脏数据的方式包括根据分布将异常值转换为合理取值,删除无法解释且不包含重要信息的数据。
训练样本中,is_churn 是样本的 label,训练样本取自 2017 年 2 月和 3 月订阅到期的用户。训练数据的正负样本极不均衡,以 2 月份订阅到期的训练样本为例,在总共 992931 条数据中,is_churn = 1 的样本只有 63471,占比 6.4%。
传统的分类算法比如决策树和逻辑回归都是对正负样本比例有要求。我们使用欠采样的方式对训练样本进行了处理,分别尝试了 1:3,1:5,1:8 的正负样本配比,在最终模型中,我们根据交叉验证的结果选择了最优配比。
3.2 特征工程
特征工程阶段,我们从 计算逻辑、时间窗、额外条件 三个维度将数据进行组合。如下图,右边特征列表中 last_7_auto_tran_cnt 表示最近 7 天(时间窗)自动完成的(额外条件)订单笔数(计算逻辑)。特征组合完成后,我们对特征还要一系列的处理,如 log 转换、one-hot 编码。
我们通过交叉验证来测试特征的有效性。在交叉验证中我们发现,最有效的特征包括:1. 最近 60 或 90 天自动完成的订单笔数 2. 最近一笔交易是否被取消或自动完成 3. 账号注册的方式。最终,我们提取了 300 多个特征,并根据交叉验证的结果留下了 204 个特征。
3.3 模型
我们使用了一个两阶段模型来预测最终的流失情况。如下图,在第一阶段,提取出的特征会输入逻辑回归、随机森林、XGBoost 三个模型,而第一阶段模型的输出会被当做第二阶段的特征,最终组成一个 Stacking Model。
如下图,我们采用了 5-fold stacking 策略。
在第一阶段,将训练数据均匀地分成 5 份,使用「留一法」训练 5 个逻辑回归模型,用这 5 个模型分别去预测剩下的一份训练数据和测试数据,将 5 份预测的训练数据合并,可以得到一份新的训练数据 NewTrainingData,将 5 份预测的测试数据采用均值法合并,得到一份新的测试数据 NewTestData。用同样的方法再分别训练随机森林和 XGBoost,新的训练和测试数据上,就可以得到 3 个模型的分数。
第二阶段,将上一阶段的 NewTraningData 作为训练数据,NewTestData 作为测试数据,重新训练一个 XGBoost 模型,得到最终的预测分数。这种方法可以避免过拟合,学习出特征之间组合的信息,还能提高预测的准确率。
3.4 模型评估
交叉验证不仅可以做特征筛选,在模型阶段,还给调参、Stacking Model 策略的调整提供依据。下图可以看到我们每一步的优化带来的提升,最初的 LR 模型可以得到 0.2106 的分数,XGBoost 和特征提取技术可以把分数提升到 0.1151,最终 Stacking Model 和调参让我们得到 0.0934 的分数。
4. 结论
本文我们介绍了在参加 WSDM Cup 2018 中所做的实践,最终我们获得了第二名的成绩。对几个关键的优化技术在文中做了阐述,如数据预处理阶段的欠采样、特征提取方式、Stacking Model。通过分析和测试,我们发现这些方法都可以提升预测的准确率,后续我们还将测试更多的超参数,并引入深度学习进行优化。
论文原文地址:
https://wsdm-cup-2018.kkbox.events/pdf/7_A_Practical_Pipeline_with_Stacking_Models_for_KKBOXs_Churn_Prediction_Challenge.pdf
雷锋网版权文章,未经授权禁止转载。详情见。