爱奇艺AI比赛:WSDM用户留存预测挑战赛Baseline
Baseline是提供思路的,不是照着抄的哦
赛题链接
http://challenge.ai.iqiyi.com/detail?raceId=61600f6cef1b65639cd5eaa6
赛题描述
爱奇艺是中国和世界领先的高品质视频娱乐流媒体平台,每个月有超过5亿的用户在爱奇艺上享受娱乐服务。爱奇艺秉承“悦享品质”的品牌口号,打造涵盖影剧、综艺、动漫在内的专业正版视频内容库,和“随刻”等海量的用户原创内容,为用户提供丰富的专业视频体验。
爱奇艺手机端APP,通过深度学习等最新的AI技术,提升用户个性化的产品体验,更好地让用户享受定制化的娱乐服务。我们用“N日留存分”这一关键指标来衡量用户的满意程度。例如,如果一个用户10月1日的“7日留存分”等于3,代表这个用户接下来的7天里(10月2日~8日),有3天会访问爱奇艺APP。预测用户的留存分是个充满挑战的难题:不同用户本身的偏好、活跃度差异很大,另外用户可支配的娱乐时间、热门内容的流行趋势等其他因素,也有很强的周期性特征。
本次大赛基于爱奇艺APP脱敏和采样后的数据信息,预测用户的7日留存分。参赛队伍需要设计相应的算法进行数据分析和预测。
数据描述
本次比赛提供了丰富的数据集,包含视频数据、用户画像数据、用户启动日志、用户观影和互动行为日志等。针对测试集用户,需要预测每一位用户某一日的“7日留存分”。7日留存分取值范围从0到7,预测结果保留小数点后2位。
评价指标
本次比赛是一个数值预测类问题。评价函数使用:

n是测试集用户数量,F是参赛者对用户的7日留存分预测值,A是真实的7日留存分真实值。
数据集简单梳理
这里主办方给了5张表,主要包括了两个维度的信息,第一个维度是用户和APP交互的信息,第二个维度是用户和Video的交互信息,用户在登录APP的时候,会与若干的Video进行交互,这里是的APP数据和Video的数据可以认为是一个上下级的关系,下面简单的介绍一下主办方给的这5张表。
1.User portrait data
这部分数据主要描述了User的个人信息
2.APP launch logs
这张表是本次比赛的核心表,这里记录的用户和APP交互的历史记录,也是我们后续标签构造的来源
3.Video related data
这张表是描述视频相关的信息,这些视频是由用户在登录APP之后观看所得
4.User playback data
这张表记录了每个用户观看视频的历史记录,并且记录了每次的观看时间
5.User interaction data
这张表记录了每个用户和视频发生交互时的交互方式,和第四张表有一点重复
赛题标签的理解
本次赛题需要比赛选手预测user在指定的时间点后7天有几天登陆爱奇艺APP,但是这里主办方并没有给相关标签,这里就需要我们自己通过用户登陆APP的日志来手动进行构造,这里的构造的思路如下
第一步:从APP launch logs中提取出每个用户的登录APP的序列
第二步:我们对所有用户选择一个end_date作为参考点,将end_date后7天的用户等APP的天数作为标签,这样便人为构造了标签,注意这里的end_date的选取有两种情况
第一种情况是用户登录APP的记录过少,如果用户登录APP的最新的天与最早登录APP的天之间少于7天的话,我们认为这种用户的历史记录过少,这里我们对这种用户直接随机选取end_data
第二种情况是用户登录APP的记录较多,如果用户 登录APP的最新的天与最早登录APP的天之间大于7天的话,那么我们认为这类用户的历史行为信息就较为丰富,我们在选取end_data的时候就尽可能在用户的历史信息序列里面进行选取,这样就可以尽可能的利用用户的历史行为信息,代码如下:
第三步:我们在获取的end_date之后便可以统计当前end_date之后7天的用户登录APP的天数,这样便完成的标签的构造
特征工程
在完成了数据的标签的构造之后,我们就该开始考虑如何对这些数据进行特征工程的构建,由于标签的构造和时间序列是强相关的,所以在特征工程方面我们也考虑对一些序列进行操作,这里主要分为两步
第一步:对每个user获取在end_date前31天的用户和APP的交互序列,这里我们将用户登录APP并且launch_type=1的情况赋值为2,对用户登录APP并且launch_type=0的情况赋值为1,对用户没有登录APP的情况赋值为0,这样我们就得到了一个长度为31的仅仅包括0,1,2的序列了
第二步:我们对前面所得的用户登录序列统计在end_date前X天用户和APP交互的天数,从直观上理解这个操作就是如果用户在end_date前X天有很多天都登录APP的话,那么他未来7天登录APP的天数就会比较多,所以,我们考虑构造用户在end_date前X天的登录情况,注意,这里的X的取值可以非常灵活,由于我们前面的序列长度仅仅是31,所以这里的X的取值也尽可能把0-31都取一次,但是最好加上一些间隔,不然会有大量的冗余信息,代码如下:
这样便完成了特征工程的部分,这里一共构建了8个时序特征。
完整baseline,在【学姐带你玩AI】公众号,关键词“爱奇艺”

模型训练
在完成标签构造和简答你的特征工程之后,我们就要开始模型训练了,这里我们采用了5折交叉验证来进行本次baseline的训练,其代码如下:
模型结果&特征重要性
在训练结束之后可以使用Lightgbm自带的接口来查看所使用的特征的重要程度,本次baseline的特征重要性程度结果如下:

从这个结果我们可以看出,这次最强的特征是end_date前31天的登陆天数
Baseline特点
此次baseline是为数不多非常易懂的baseline,更适合小白拿来入门
此次baseline的可扩展性极强,仅用了8个简单特征就达到了线下87+,线上84+
优化方向
对序列进行更多的统计操作
构造更多的序列
加入用户相关的特征
完整baseline
关注【学姐带你玩AI】公众号,关键词“爱奇艺”
