数据挖掘竞赛介绍与入门指北
前言
咱们学校有计科的人工智能方向,有人工智能专业,甚至还有人工智能学院,但是个人感觉大家的兴趣都在传统的计算机领域,如ACM,数模等等,很少人关注人工智能类的比赛,学校里面举办的相关比赛很少,学校里面氛围不浓,平时想找个队友比赛都比较困难,因此写下了这个帖子,当做抛砖引玉,希望有更多的人关注到这个领域,对这个领域产生兴趣。
介绍
数据挖掘竞赛,顾名思义就是对数据进行探索,通过各种手段(包括特征工程,机器学习,各种trick)来挖掘数据包含的信息,然后进行各类的下游任务,如回归、分类、推荐、时序预测等等。
数据挖掘实际上是个非常宽泛的概念,传统的数模实际上也是一种数据挖掘的形式,不过这里讲的数据挖掘,主要是针对数据做各种探索的操作,数据是非常重要的,数据量一般在10w+。而数模更加注重的是模型,数据量往往很少,而且官方不一定会提供数据,如今年的国赛建模,陶瓷题只提供了一百条左右数据,而且数据的分布也非常明显,所以说它并不是严格意义上的数据挖掘。
最典型的数据挖掘是怎样的呢?如波士顿楼价预测,官方提供一个数据集,数据集内包括,离市中心距离,房子的大小、城镇人均犯罪率等等,你需要通过特征工程+机器学习的方法,构建一个模型,这个模型接受训练集的数据进行学习,然后对测试集进行预测,得到房价的预测。
得到这个预测后,提交到官方的平台,就会返回一个得分,同时也有一个排行榜,看到所有选手的得分和排名,在这一点上,和ACM的榜是类似的,但是数据挖掘比赛持续时间一般是1个月以上,每天只有1-5次提交机会(视规则而定),次数用尽只能等第二天,这一点又与ACM有所不同。设定这个规则的原因是,训练模型和探索数据都需要大量时间,在短期内,往往得不到好的模型,因此比赛时间很长。
有人会误解机器学习和数据挖掘竞赛,说这些只是调库调参,实际上,个人认为这是一个很大的误区,在数据挖掘竞赛中,模型反而是最不重要的东西,调参并不会带来很大的分数提升,一般也不会花很多时间去调整模型参数。“Garbage in,garbage out.”,数据才是核心,一堆坏数据输入模型往往会严重拖累模型的表现,这时,无论如何调参都是没有意义的。
数据挖掘竞赛往往都是基于实际应用场景的,如江苏的天气预测数据挖掘竞赛,BDCI的返乡人群预测,因此,如何根据业务场景挖掘信息,联系实际修正数据,如何根据业务字段构造特征,进行特征工程,才是需要竞赛的核心,也是数据挖掘竞赛的乐趣,就像挖宝一样,挖出数据中的宝藏。
数据挖掘比赛一般由公司举办,所以都是有奖金的,规模越大,奖金越多,当然名额也很少。以微信大数据挑战赛为例,决赛一等奖的奖金是30w。
数据挖掘竞赛有那些?
这里我会介绍广义上的数据挖掘竞赛,给大家拓宽思路。
结构化回归预测和分类预测
这个就是最经典的数据挖掘类比赛。结构化可以理解为表格类数据,即数据集是一个大的csv文件,每一列对应一种特征,如刚刚说到的波士顿数据集,每一列对应一种信息。这个类题目的任务也比较清晰明了,就是读取这个数据集,训练机器学习模型,然后进行回归预测或者分类预测,回归预测常常是预测一些变量,如某某事件发生的概率,分类就是给出每一条测试集数据对应的类型。
这类题目虽然经典,但是并不简单,直接把数据丢进一个机器模型回归器或分类器中,往往是不行的,只能得到baseline的分数。最通常的做法的先对数据分布进行分析,查看数据情况,然后进行特征工程,设计构造新的特征,这一点是数据挖掘竞赛的核心,即充分的探索数据,分析怎么样处理数据才能带来更多的信息。
特征工程结束后,一般是进行模型的训练,常用的模型有LGBM、Xgboost、Catboost等,神经网络等深度学习模型应用反而相对较少。
推荐系统
顾名思义,就是向用户推荐商品、广告等内容。比较经典的就是,获取用户在一段时间内,浏览商品的次数、加入购物车的次数、购买的次数来预测未来客户的行为,我们日常使用的抖音、微博、音乐软件,都是靠推荐系统来绑定和服务用户。
推荐系统的变种有很多,有预测未来可能点击的商品,有预测用户是否购买等等,模型也非常复杂,甚至可以不使用机器学习的模型。
图像类
图像类属于人工智能比赛的范畴,属于广义上的数据挖掘。图像类就是常说的CV(computer vision)题,包括图像分类、图像识别、图像分割和异常检测等等。题目往往是给定大量照片,训练一个模型来完成上述任务。其中,图像分割指将图像分割出特定区域,如肺炎X光分析,就需要把病人的肺部图片分割出来。
这里的模型往往是深度学习的模型,传统的机器学习模型比较难以胜任。在这类题目中,模型又变得重要起来,好的模型,往往能学习到更多的图像信息,模型的结构对最终的结果影响比较大。
我们学校举办的第一届和第二届人工智能算法挑战赛,题目就是图像类,分别是二维码检测和菜品分类,都属于比较基础的图像类题目,比赛的关键是使用了较新的较强的模型,实际上难度并不高。
自然语言处理类
就是常说的NLP类,NLP类题目的具体类型也很多,包括情感识别,实体识别,文本理解,甚至可以和知识图谱相关联。这类比赛的难度在于文本量数据量大,所需要使用的模型规模大,所以难度都比较高。
NLP类更多的使用Transformer类的模型,如bert以及它的变种。
我们学校举办的第三届人工智能算法挑战就是NLP类的比赛,是实体识别和文本分类,都是比较经典的题目和数据集,同时有百度的算力提供,难度也不高。
多模态类
多模态就是充分使用各个模态的信息,如图像、文本、音频信息,相互交互,输入模型进行训练,并完成下游任务。这类比赛是所有比赛中最难的,数据量大,模型非常复杂,入门难度也很高,模型与NLP类的的类似,也是transformer类的模型,但是模型因为要做各模态信息的交互,所以变得非常复杂。
这类比赛也是最近非常火的比赛,非常考验实力。多模态其实在现实中应用也非常广泛,前面提到的推荐系统,其实也可以和多模态结合在一起,为用户更加精准的推送产品。
入门这个,我需要什么基础?
数据挖掘,其实是人工智能的一个分支,所以,应该掌握人工智能相关的知识,包括但不限于简单的概率论、python(pandas,各类画图库、sklearn)、深度学习框架(pytorch)和人工智能基础(人工智能的基本概念,对基本人工智能模型有所了解)。
这入门的门槛看起来比较高,实际上,除了深度学习框架,其他都是一名大二学生应该掌握知识,所以,广义上来说,大部分同学都具备,参加数据挖掘竞赛的基础,更多的细节,在比赛中慢慢学习即可。
我可以去哪些平台参加竞赛?
国内:阿里云天池、Datafountain、百度AIStudio
国外:Kaggle
那我应该如何入门?
最简单有效的入门方法,就是去参加一个入门级的比赛,这里推荐百度Aistudio,上面有很多练习赛,如反欺诈预测,里面包含了很多热心用户提供的赛题讲解、思路讲解,通过这个比赛,你就能了解到数据挖掘竞赛的整个流程,包括如何读取数据,如何处理数据,如何进行特征工程,如何训练模型,如何提交结果等等,当你顺着这个流程走一遍,理解官方开源代码,恭喜你,你已经入门数据挖掘竞赛了!
当你入门之后,距离你拿奖,甚至距离进入复赛、决赛还有一定的距离。数据挖掘竞赛不像ACM,有很多题目可以练习,数据挖掘就是以赛代练,通过不断参加比赛,重点是学习大佬们的代码和思路,平时关注一些比赛的技巧,你会发现你进步神速。
在这里也推荐几个优质的数据挖掘的公众号(不含推广),Coggle数据科学,ZLab数据实验室,kaggle竞赛宝典等,通过不断学习分享的优质竞赛思路,水平可以获得很大的提升。
数据挖掘竞赛我能收获什么?
能极大的提升对人工智能各类知识的应用,属于综合能力的提升,包括但不限于特征工程的能力,编写代码的能力,对机器学习,深度学习模型的理解、复杂实际场景解决业务问题的能力。
当然,还有一些学业和物质上的,如比赛加分和奖金。对于工作来说,一些大型比赛,如微信大数据挑战赛会提供面试绿色通道(今年形式不好,取消了,去年有),大型比赛的获奖在简历上也会有加分。
后话
其实数据挖掘竞赛和ACM有点像,都是组队一起解决题目,一起提高在榜上的成绩,当看到排名上升时,会有种很强的成就感,这个感觉和ACM过题类似,希望有更多的同学对数据挖掘感兴趣。目前在数据挖掘竞赛,重邮、北航、厦大(他们有wiser club,氛围很好),经常出现在榜单上,希望以后也能多看到我们学校的身影,一个人太难了(doge)