Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

大数据文摘内容来源

从全球千余支队伍中脱颖而出,BDC冠军团队是如何做用户预测的

历时近3个月,2018 年中国高校计算机大赛——大数据挑战赛(下称「大数据挑战赛」)落下帷幕。最终,厦门大学的lambda团队夺取冠军获得 30 万元奖金。

根据决赛10支队伍的答辩内容,我们梳理整理了冠军、亚军两支团队的答辩成果及评委点评。

以下,enjoy!

全球千余团队参与,专注活跃用户预测

本次大赛由快手和清华大学联合承办,基于快手提供的脱敏和采样后的数据信息,预测快手平台上未来一段时间的活跃用户。快手同时提供给选手安装了多种机器学习平台的云服务器,供选手研究机器学习算法。

参赛队伍需要设计相应的算法进行数据分析和处理,比赛结果按照指定的评价指标使用在线评测数据进行评测和排名,得分最优者获胜。决赛中10支队伍答辩后,最终成绩综合复赛B榜成绩和现场评委打分两部分生成。

本次大赛面向全球高校在校生开放,并鼓励高校教师参与指导,共有来自全球 10 个国家及地区,439 所高校,1392 支队伍,2751 位选手,15803 次提交参与评审。经过层层筛选激烈竞争,现场 10 支队伍进入决赛环节。

10 支队伍来自清华大学、北京邮电大学、哈尔滨工业大学、厦门大学、武汉大学、同济大学、西北大学、福州大学、东南大学、重庆邮电大学、山东大学、西安电子科大、杭州电子科大。

参赛队伍解题思路及算法亮点干货分享

冠军队伍——lambda思路自述

团队介绍:Lambda团队由厦门大学的一名同学组成,颜晶。值得一提的是,颜晶本专业为金融专业,现读研二,自学机器学习半年时间。

解题思路 :

本题是基于30天内用户使用快手app的相关行为(特别强调:数据为采集和脱敏后),预测未来7天内用户是否活跃的概率,评价指标为AUC。

首先本题没有标签,因此需要自己进行标注标签。首先想到的是根据题目要求,用7天进行自己标注,但是7天噪音大,因此可以尝试使用更少的时间进行标注,比如6天、5天等。最后结果表明用6天进行标注能得到更好的结果。有了训练集和标签就可以选择模型:一种是将时间序列进行面板化,使用传统机器学习(LGB or XGBoost);第二种是使用RNN(many-to-many)。

算法亮点:

此次比赛主要使用了RNN模型。RNN分为三类:many-to-one、one-to-many、many-to-many。我们选择了many-to-many,这相当于对数据一天一天进行滑窗,可以对数据集进行扩充。

首先我对用户按注册进行分类,在通过采样策略,将数据集输入到GRU里面去:

此外我们对数据集进行padding,这样可以在训练集中随机选择用户输入到的GRU中,其中也对注册早的用户赋予更高的概率,这样保证模型能够得到更多的信息。

在优化时,使用了快速集合集成fast geometric ensembling(FGE),这样可以无成本的获得到多个差异性模型,能得到更好的结果。

评委点评:

与其他参赛队伍使用复杂的特征工程+多模型融合方案不同,lambda 队仅用十几个原始特征+RNN单模型就拿到了最好的成绩。RNN模型的难点在于调参和学习方法的调整,选手调研了多种优化方法,如余弦退火、warmrestarts、快照集成和快速几何集成,最终使得模型稳定收敛。选手的方案再一次证明了神经网络可以从原始数据中自动发现规律,可以节省大量的特征工程工作。同时模型复杂度较低,可以部署到线上生产环境。

比赛感想:

将近3个月的比赛从中,我收获很多。首先是可以多尝试些方案,虽然各大比赛中冠军基本是LGB or XGBoost,NN一直作为融合补充所用,这可能只是那么数据集更适合LGB模型。其实在比赛开始时,我们并不是一开始就选择了RNN模型,也走了很多弯路。在初赛中,由于数据量较小,RNN模型的成绩在B榜排在200名以后。复赛数据集扩大后,RNN有了很好的效果,才一直不断的优化RNN,算是踩对了坑。

此外,在比赛中找到一致的线上与线下是非常重要的,这样不仅能保证得到的模型是稳定的,且能更有效利用提交次数。

最后,在国内大数据比赛中,夺冠的有以下几种情形:对数据理解透彻、很多模型融合、模型创新等。虽然模型创新很难,但是当你将模型构建起来时,也预示着,别人是很难追上你了。

亚军队伍——小小蚂蚁队思路自述

团队介绍:小小蚂蚁队由两位同学组成,分别来自西北大学的曾凯,计算机应用技术专业,研一在读,和福州大学的冉宪东,大三在读,电子信息工程专业。

解题思路 :

1、滑动窗口

题目是给定1-30天时间内的四个日志数据(特别强调,数据为采集和脱敏后),通过这些数据来预测未来一段时间(即31-37天)活跃(即出现在以上四个日志中任意一个)的用户。经过分析,判定该问题是一个典型的二分类问题,也就是说给定一个用户id,让我们来预测这个用户是活跃或者不活跃。那么首先考虑如何构造出线上线下的训练集以及它的标签,还有线上线下测试集以及它的标签。

图(一)

如图一所示,我们采用滑动窗口的算法思想,给定a到b,也就是1-30天区间,我们定义n和m,其中n是构造训练集或验证集的区间,紧接着的后7天是构造标签的区间。其中,n小于等于23,m大于等于0。这样满足这种条件的我们可以滑动出很多个窗口,理论上讲这样我们训练集的样本可以构造出很多个,但是经过仔细分析与思考,我们总结了窗口必须满足以下两个条件:

  • 保持线上与线下窗口间隔一致。

  • 满足数据分布的周期性。

我们看第一点,假如我们以构造训练集越多越好的原则去构造,那么变长窗口当然是1-2,1-3,1-4,一直到1-23,但是这样会出现一个问题,也就是线上和线下的窗口间隔不一致,这样会导致线上和线下构造的特征数据分布不一致,很容易出现过拟合现象。因此我们从后往前推,使得线上线下得窗口间隔一致,还是以构造训练集最多原则构造窗口,那么这样构造就是1-30,1-23,1-16,1-9,1-2(为什么间隔是7呢,因为这7天是用来构造label的,也就是线上和线下最小的间隔)。

图(二)

第二个原则,我们是根据图二得出的规律,也就是窗口还需要满足数据分布的周期性,可以看出,每个窗口每天的行为次数都是周期性的增长,除了1-2这个窗口之外。因此1-2这个窗口就被去掉了,并且1-2这个数据窗口太小,信息量太小,显然也就舍去了。

表(一)

同样的道理,所以最终我们构造出了两个可行的窗口,如表一所示,第一个是变长窗口,线下训练集是1-9,1-16,线下验证集是1-23。线上训练集是1-9,1-16,1-23,线上测试集就是1-30。另一个是定长窗口,线下训练集是1-16,8-23(4/5),验证集是8-23(1/5),线上训练集是1-16,8-23,线上测试集是15-30。

后来我们最终确定的窗口为变长窗口,主要有三个原因:

第一,这样我们可以预测全范围的用户,也就是注册表里所有的用户,而定长窗口不能。

第二,这样有利于线下验证集的构造,因为数据分布基本一致,保持线上线下一致,而相比定长窗口的切分窗口数据好。

第三,变长窗口构造的训练集相比较定长窗口多

2、用户分类

构造好了数据集的划分,我们再进一步对数据进行探索,因为是对用户进行是否活跃预测,那么我们研究的对象主体是用户,于是,我们就通过日志数据对用户类型进行分析。

图(三)

如图三所示,我们发现每天的行为次数从第一天开始每隔五天就会有两天突增,我们猜测这两天应该是周末,说明有个用户群在周末这两天比较活跃,而在周内相对活跃次数较少。这部分用户也许是上班族等,他们得生活规律有周期性。21,22,23这三天也比较多我们猜测是节假日三天。

图(四)

从图四我们可以看出,每天的注册人数也是符合图一的规律,但是到了第24天,注册量出奇的高。于是我们单独拿出这一天注册日志的数据,分析发现,这些注册用户的设备类型和注册类型一模一样,于是我们就画出了如图五这样的图。

图(五)

横轴是注册类型和设备类型组合,纵轴是注册用户数量,发现确实有几种组合类型的注册数量很高,我们把这类用户定义为异常用户,这类用户有以下两个个特点:

  • 注册类型和设备类型一样,并且是一天之内注册数量相对正常注册量出奇的高(设定阈值γ,只要这种异常用户注册量大于γ就符合)。

  • 这些用户在随后的天数之内都没有活跃,只在当天活跃

我们推测这类用户是因为快手的某种活动引流进来的用户,并且这类用户是那种类似于黄牛的机器用户,最终我们根据这种规则找出了每天的异常用户。掌握了这些用户群的特点之后,这样更有利于我们进一步的特征构造与模型构建。

图(六)

于是根据上面数据的进一步探索,我们把用户分为两大类,如图六所示,第一类是正常用户,我们可以用模型去预测活跃的概率。第二类是异常用户,我们可以通过规则去筛选预测,也就是符合异常规则的用户我们把预测概率置为0。

总结起来,这样对用户划分主要有两大好处,第一就是使得预测异常用户更加准确。第二就是剔除之后,减少训练集噪声,增加正常用户模型预测准确率

3、特征构造

现在我们数据集划分确定了,用户也基本分析清楚了,就开始根据变长窗口的特点以及用户群的特性构造特征。特征构造方面我们主要从‘时间’ 和‘空间’维度的层面构造。

时间维度基本侧重的是单个日志来提取的有关的时序特征,概括性的分类如图七所示。

图(七)

空间维度就是题目中给的四类日志,它们从不同方面也就是不同的维度反映着用户的不同特征,比如用户的活动日志,从这方面提取的大部分特征是有关用户活动方面的特征,因此我们利用空间维度与维度之间的差异主要来构造出交叉特征。如图八所示

图(八)

4、模型构建

图(九)

模型方面,主要对两个单模型进行单独训练,然后对其预测结果进行加权融合。由于Lightgbm模型和神经网络模型差异性大,一个是boosting的集成思想,一个是采用神经元激活的思想的,因此我们对其两个模型预测的结果进行加权融合,提升的效果会好

算法亮点:

TF-IDF特征的构造:

TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

这样我们把一个authorid比作一个字词,根据authorid在日志中出现的次数从大到小排列,取前n个作为语料库。这样与userid交互的有多个authorid,就能计算出对应的tf-idf值,我们取前m个,不够的补0,多的省去,这样就构成了m维特征。

这个特征就相当于对每一个用户在窗口内进行了编码,表征着这个用户与authorid的亲密程度,用于区分特定的用户群体。例如,一个人气高的作者一般是经常活跃的,用户与该作者交互次数越多,此用户对应该作者的tf-idf的值也越大,那么该用户活跃的概率也越大。

比赛感想:

此次比赛提供的数据为快手app真实数据的脱敏采集后的数据,更结合实际业务,使得我们更应该结合用户使用快手app的实际场景,从而对用户的特性有更深的了解以及用户群有更深更细的划分,使得特征的构造更加合理与有效。同时,在比赛过程中,竞争比较激烈,但是一定要坚持下去,不到最后一刻决不放弃,一定不能只停留在想象方面,有想法一定要及时去实现,也许那个点子就是提分的关键。

评委点评:

小小蚂蚁队在充分理解业务场景、对数据进行细致的分析后,用丰富的特征来表达业务场景。在构建训练集的过程中,对比了多种滑动窗口方案。针对业务场景中出现的异常噪音,能够细致分析并妥当处理。选手使用的模型为 gbdt 模型, 在实际业务场景中,易于增加特征做扩展,可以持续迭代优化。

大赛点评

评委对此次大赛点评:

参赛选手在历时 100 多天的比赛中,遵守比赛相关规定,公平竞赛。本届赛题提供给选手的是经过采样和脱敏后的真实行为数据,在赛题设计上并不限制选手使用分类模型求解。选手在问题转化的过程中,方法各有不同,在训练集构造、标签构建、特征抽取等环节均有创新。冠军队 lambda 使用 RNN 模型,从原始数据中学习规律,该方法具有通用性和实用性。

第三届BDC评委介绍:

此次大赛共有七位评审,其中四位是高校老师,三位是快手的技术专家。分别是,教育部高等学校教学指导委员会委员,大赛专家委员会副主任臧斌宇教授。北京大学教授、大数据挑战赛专家委员会委员王腾蛟教授。哈工大教授、大数据挑战赛专家委员会委员王宏志老师。代表清华主办方的清华软件学院党委副书记王朝坤老师。快手的技术专家李森栋、王哲、林涛。

快手科技技术专家李森栋,曾先后工作于社区科学部、海外事业部,参与推荐系统的迭代开发以及推荐模型的研究和实现工作。在本次大赛中,担任竞赛专家委员会委员,负责大赛的赛题、数据和评测等工作。

王哲快手科技技术专家,在快手社区科学部负责推送和新产品的推荐系统和算法策略。

林涛快手科技技术专家,在快手社区科学部负责推荐系统架构,主要包括搭建机器学习平台、开发线上高性能的一些模型触发、预估模块等工作。

快手
快手

快手是面向普通人的记录和分享生活的短视频社交平台。以“记录世界记录你”,用有温度的科技提升每个人独特的幸福感为快手的核心使命。快手的AI技术深入产品骨髓,贯穿于内容生产、内容审核、内容分发、内容消费的全业务流程。快手拥有世界领先的计算机视觉与深度学习能力。

工程机器学习特征工程神经网络智能互联网信息检索推荐系统大数据技术
1
相关数据
快手科技机构

快手科技成立于2011年,是一家用户导向、人工智能(AI)为核心技术的高科技公司,以“记录世界 记录你”,用有温度的科技提升每个人独特的幸福感为核心使命。公司旗下产品矩阵包括主打短视频的快手APP、二次元社区AcFun、小游戏APP快手电丸、剪辑软件快影等,致力于用科技帮助用户探索世界、连接彼此和共同成长。

https://kuaishou.com
相关技术
数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

噪音技术

噪音是一个随机误差或观测变量的方差。在拟合数据的过程中,我们常见的公式$y=f(x)+\epsilon$中$\epsilon$即为噪音。 数据通常包含噪音,错误,例外或不确定性,或者不完整。 错误和噪音可能会混淆数据挖掘过程,从而导致错误模式的衍生。去除噪音是数据挖掘(data mining)或知识发现(Knowledge Discovery in Database,KDD)的一个重要步骤。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

特征抽取技术

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

推荐文章
暂无评论
暂无评论~