【竞赛入门进阶】从赛题理解到竞赛入门基础
为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力。DataFountain 和 Datawhale 联合邀请了数据挖掘,CV,NLP 领域多位竞赛大咖,将从赛题理解、数据探索、数据预处理、特征工程、模型建立与参数调优、模型融合六个方面完整解析数据竞赛知识体系,帮助竞赛选手从 0 到 1 入门和进阶竞赛。
下面是大咖分享
数据挖掘方向
王贺 ID:鱼遇雨欲语与余
简介:武汉大学硕士,2019 年腾讯广告算法大赛冠军选手,京东算法工程师,一年内获得两冠四亚一季的佳绩
不得不说赛题理解是被很多人所忽略的一个问题,作为打比赛的第一个步,我们应该做到熟稔于心。那么怎样才能达到这样的效果呢,这里我们先将赛题理解分为细分为四个部分,分别是赛题背景、赛题数据、评价指标和业务分析。下面将对其逐个介绍,帮助走好比赛的第一步。
赛题背景
三个问题:
(1)这个赛题是什么业务问题;
(2)具体的业务流程是什么;
(3)最终的目标是什么。
能够回答这三个问题,基本的赛题背景也算是了解了。
举个例子,在 2019 腾讯广告算法大赛中,三个问题分别是:
(1)本次算法大赛的题目是源于腾讯广告业务中一个面向广告主服务的真实业务产品——广告曝光预估,那么很明显了,广告主服务的真实业务产品中的广告曝光预估;
(2)广告曝光预估的目的是在广告主创建新广告和修改广告设置时,为广告主提供未来的广告曝光效果参考。通过这个预估参考,广告主能避免盲目的优化尝试,有效缩短广告的优化周期,降低试错成本,使广告效果尽快达到广告主的预期范围;
(3)最终目标预测出广告的日曝光量。这些内容都是可以从赛题介绍中所找到的。
赛题数据
对于赛题的数据,就需要我们进行基本的探查,作为理解部分不需要太过深入。
(1)每种数据集之间的关系;
(2)数据中缺失值情况;
(3)类别特征和数值特征;这些可以作为我们关注基本点。
评价指标
这里主要分为分类指标和回归指标,当然还有很多主办方会自定义评价指标。不同于实际工作中,评价指标需要自己来选取,竞赛中会直接给出评价指标。我们需要做的是熟悉指标的数学性质,以及指标的区别,你是否真的理解 logloss 和 auc 的区别,同样是二分类指标,为什么有的比赛选择 logloss,而有的选择 auc。为什么 mse 对异常敏感,mae 会损失掉部分异常。面对 F1 指标,有什么好的策略来选择阈值。这些都应该是竞赛第一步中所考虑的问题。
业务分析
所有背离业务的分析都是“纸老虎”,业务分析帮助我们理解赛题,同时有助于我们进行特征工程。在我看来业务分析是连接着赛题理解与特征工程的桥梁,起到承上启下的作用。就比如我们在电商平台对一件商品进行下单,需要完成哪些页面跳转,每次跳转对最后下单都会有影响,当然对下单影响最大的就是加入购物车的那次跳转。再举个例子,最近的一场比赛中,我们团队对业务进行了充足的分析,赛题目标是预测用户未来一期的还款情况,那么可以从用户的还款意愿和还款能力来考虑,有哪些因素会影响最终结果。去模拟这样一个过程,可以看作是“角色扮演”,尝试把自己当作一个用户去进行一次交易,站在他人的视角上来寻找关键点,从而帮助理解赛题和提取特征。
王茂霖 ID:ML67
简介:华中科技大学研究生,DCIC-2019 风电赛 Top2 选手。
数据竞赛行军打仗第一步:赛题理解(摸清敌情)
作为切入一道赛题的基础,赛题理解是极其重要的,对于赛题的理解甚至会影响后续的特征工程构建以及模型的选择,对了赛题背后的思想以及赛题业务逻辑的清晰,也很有利于花费更少时间构建更为有效的特征模型。所以赛题的理解相当于一种行军打仗中的了解敌情,在不了解敌情的情况下,贸然进攻是不可取的。赛题理解要达到的地步是什么呢,把一道赛题转化为一种宏观理解的解决思路。以下将从多方面对于此进行说明。
1)赛题理解究竟是理解什么:
理解赛题是不是把一道赛题的背景介绍读一遍就 OK 了呢?并不是的,理解赛题其实也是从直观上梳理问题,分析问题是否可行的方法,有多少可行度,赛题做的价值大不大,理清一道赛题要从背后的赛题背景引发的赛题任务理解其中的任务逻辑,可能对于赛题有意义的外在数据有哪些,并对于赛题数据有一个初步了解,知道现在和任务的相关数据有哪些,其中数据之间的关联逻辑是什么样的。对于不同的问题,在处理方式上的差异是很大的。
Example:分别对两个问题举例:
1.DCIC-2019 风电数据修复题:
在赛题背景以及赛题任务的阅读上我们知道,这是一道数据缺失修复的问题(但是不清楚是离散值修复,还是连续值修复,方法是回归还是分类还是其它什么方法,而这些都是需要从数据里面理解数据去得到的),涉及包括但不限于删去某个时间段的全部数据、某台机组在某段时间的数据、某台机组在某段时间的部分字段信息这三种类型的缺失。但其实到这里来说,问题其实依然是模糊的,比如有多少机组,机组的相对位置信息知道么,机组数据是什么样子的,采样周期是多少,有多少种字段类型特征(是匿名特征还是非匿名特征),其实都还是不清楚的,所以为进一步理解赛题,还需要对于数据有一个初步认识。
在对于数据有一个基础了解上,我们才能对于赛题有着更为深入的理解。知道采样时间段,总样本有多少,缺失有多少,才能对于任务有更为清晰的了解(应该怎样选取模型),也才能更为清晰的了解赛题的大概难度。
2.智能制造预测
这是一道工业数据分析题,从背景描述和问题描述可以发现这是一道工业流程分析题,有反应机台的温度,气体,液体流量,功率,制成时间等因子 这样一些特征因子,并中结合数据观察下,我们知道这是一道可以用回归去解决的问题,可能会存在数据异常要做处理,会有不同的加工流水线,后续这个可能是需要考虑的问题等等。
2)有了赛题理解后能做什么:
在对于赛题有了一定的了解后,分析清楚了问题的类型性质和对于数据理解的这一基础上,是不是赛题理解就做完了呢? 并不是的,就像摸清了敌情后,我们至少就要有一些相应的理解分析,比如这题的难点可能在哪里,关键点可能在哪里,估摸可以用什么方法去解决一些什么问题,哪部分数据应该是关键数据(背景的业务逻辑下,比如 CTR 的题,一个寻常顾客大体会有怎么样的购买行为逻辑规律,或者风电那种题,如果机组比较邻近,相关一些风速,转速特征是否会很近似)。这时是在一个宏观的大体下分析的,有助于摸清整个题的思路脉络,以及后续的分析方向。
3)赛题理解的-评价指标:
为什么要把这部分单独拿出来呢,因为这部分会涉及后续模型预测中两个很重要的问题:
1. 本地模型的验证方式,很多情况下,线上验证是有一定的时间和次数限制的,所以在比赛中构建一个合理的本地的验证集和验证的评价指标是很关键的步骤,能有效的节省很多时间。
2. 不同的指标对于同样的预测结果是具有误差敏感的差异性的,比如 AUC,logloss, MAE,RSME,或者一些特定的评价函数。是会有很大可能会影响后续一些预测的侧重点。
4)赛题背景中可能潜在隐藏的条件:
其实赛题中有些说明是很有利益-都可以在后续答辩中以及问题思考中所体现出来的,比如高效性要求,比如对于数据异常的识别处理,比如工序流程的差异性,有些的意识是可以贯穿问题思考,特征,模型以及后续处理的,也有些会对于特征构建或者选择模型上有很大益处,反过来如果在模型预测效果不好,其实有时也要反过来思考,是不是赛题背景有没有哪方面理解不清晰或者什么其中的问题没考虑到。
谢嘉元 ID:谢嘉嘉
简介:华南理工大学博士,多次数据挖掘竞赛中获得优异成绩。
大家好,我叫谢嘉嘉,目前是一名准博士研究生,在我的研究生拿过一些数据挖掘的竞赛 top。同时,我也是“kaggle 竞赛宝典”的作者之一。PS:由于我最近打比赛少了,可能方法会有过时或不对的地方,欢迎大家来讨论。
时间序列问题
时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。根据观察时间窗口的不同,时间序列中的时间可以是年份、月份、天或其他任何时间形式。过去比赛中有很多该类型的问题,根据统计指标的数值类型的不同,包括了车流量预测,地铁人流量预测,商铺商品销售量预测等等。
在理想情况下,同一周期(年份、月份、天)内统计指标的数值应该都是平稳、相近的。但在现实生活中我们统计指标的数值的观测值往往都是呈现出不平稳的状态。这是因为实际业务场景中,统计指标的数值会受到很多的外部影响因素的作用,最终导致了数据的不平稳,如下图所示。
以将影响因素(曜日,节假日等)构建成数值特征,进而将其变成传统的机器学习方法,利用机器学习的算法对问题进行预测。或者,我们也可以利用“规则”的方法进行解决,我们可以将原始数据剔除影响因素,剔除后的数据是趋于平稳的,我们可以对平稳数据的预测做的很好。简单的流程如下所示:
如果大家对这个方法有兴趣的话,大家可以移步到阿里天池直播间,我之前录制过一期,如何用规则解决时间序列问题:
https://tianchi.aliyun.com/course/video?spm=5176.12282076.0..727a2042c2WwTo&liveId=5596的课程。最后,时间序列问题有一个小 tip,预测的时间段往往会包括很奇怪的数值(如之前做肉鸡销售预测问题包括了禽流感的时期),因此,我们做问题的时间可以去看看那段时间的新闻,多读书多看报。
分类问题
之前我做过的分类问题包括了购买预测,公司是否会逾期等等。每个问题都在我看来都可以抽取成三个部分“人”,“物”,“人和物的交互”。那么,我们就可以多从这三个方面来进行特征提取。
评论