本篇博文主要根据博主自身的参赛学习经历,分享一些关于机器学习和数据挖掘比赛的资料与经验。因为自己在学习过程中,也多亏大佬前辈们的指导和分享,才慢慢学会一些技能,所以,希望大家一起学习交流,一起进步。
博主(ID:16huakai)这半年来的参赛经历如下(按照时间先后):
1、2018 华为软件精英挑战赛 武长赛区三等奖
2、2018 DF CCF 招商银行“奇点计划”数据竞赛 5 / 1596 三等奖
3、2018 DF CCF 光伏电站人工智能运维大数据处理分析 6 / 801
4、2018 DC 西南财经大学“新网银行”数据科学竞赛 2 / 1335 二等奖 ——(竞赛总结与分享)
(嗯~,就差一个一等奖)
①吴恩达Coursera《机器学习》课程(强烈推荐)
这是个人十分喜欢的一门网课,也是我的入门课,通俗易懂,花个两三周的时间,机器学习基本可以小入门了。课程也有配套的编码作业,用于动手实践,巩固知识,本人自己整理的作业答案python版本,可以参考博客和GitHub。网上也有吴恩达的斯坦福大学机器学习公开课(2009年版),不过我不介意看这个,因为年代太久远了。当然吴恩达还有自己的deeplearning.ai系列的深度学习课程,有兴趣的也可以在网易云课堂上面搜索一下。
②台湾大学,李宏毅《机器学习》课程
这位老师也有自己的机器学习和深度学习公开课课程,覆盖面较为广泛,我看过一些章节,个人感觉讲解的一般,所以入门的话,网课看①就够了。
①Peter Harrington 《机器学习实战》
这是一本非常经典的书籍,我第一本看的入门书籍,主要注重算法代码实现,理论知识都只是粗略带过,所以强烈建议与②周志华的西瓜书《机器学习》配套使用,效果更佳。关于这本书的代码,我个人从头到尾敲了一遍,并且整理了相关的一些资料,可以参考我的博客和GitHub。
②周志华《机器学习》
这是南京大学周志华教授编著的关于机器学习的书籍,算是国内相关书籍最好的(之一)。理论知识介绍很详细,知识面覆盖广泛,适合精读。
③李航《统计学习方法》
这是清华的李航博士编著的书籍,理论推导详细,全书很多公式,最大的特点是,薄!!!可惜新手一下子看到很多公式,估计很容易一脸懵逼。
网上有人实现了对应章节的代码实现:(WenDesi/lihang_book_algorithm) + (wzyonggege/statistical-learning-method)
④范淼 李超 《Python机器学习及实践从零开始通往Kaggle竞赛之路》
这是入门竞赛的一本书籍,理论知识很少,主要介绍如何利用python工具包(sklearn、pandas等),进行数据分析和竞赛,真的是从零开始,简单到一学就会。
①网易云课堂
②Coursera公开课
③GitHub搜索各种机器学习仓库——网友汇总的各种比赛的top解决方案
①python3
主要在网上学习,推荐廖雪峰的网站,还有菜鸟教程中的python3教程。现在的趋势都是python3 ,所以不要学python2了吧。
②必学工具包
numpy:用于科学计算——中文文档地址
pandas:用于数据分析——pandas的作者有一本书叫做《利用python进行数据分析》
matplotlib:用于数据可视化
sklearn:机器学习算法的工具包,基本常规的算法都有,很强大——中文文档地址
LightGBM、XGBoost等梯度提升树集成学习模型,基本参赛必用——ApacheCN中文文档(翻译了很多优秀的英文文档)
③进阶工具包
heamy:用于模型融合
TensorFlow:谷歌深度学习框架——中文文档
keras:对用户及其友好的深度学习框架,底层默认用的是TensorFlow——中文文档
PS:首先可以肯定,这些资料,并不是说,都得必须看,或者说一个接着一个的看。我只是觉得,自己看了感觉很棒,所以推荐给大家,至于怎么运用,需要找到自己的节奏。
1、kaggle:国际认可度最高的竞赛平台之一,想了解详情,请百度 / 谷歌。
2、天池:阿里主办的竞赛平台,算国内认可度最高的。比赛一般奖金很高,难度较大,参赛人数也多。
3、DC:好像是电子科大主办的,比赛很多,也还蛮成熟的。
4、DF: CCF数据竞赛指定平台。
5、其他:还有kesci,biendata,百度点石、京东JDATA、腾讯和华为等企业也会一年举办一次竞赛等。
GitHub上的热心网友不定期汇总更新的比赛(iphysresearch/DataSciComp),包括的平台很多,比赛类型也很多!
我从2018年4月中旬开始接触数据竞赛,当初觉得需要参赛实战一下,锻炼自己的动手编码和解决问题的能力,于是边做竞赛,边学习,哪里有知识盲区,就去补缺。所以一开始,一定要抱着学习的态度,在比赛过程中,有目的的学习,这样子,你会觉得提升的非常快。再者,尽量参加不同类型的比赛,这样子,学习内容更加广泛,也更加有趣。当你有一定经验的时候,如果你没有想获奖的野心和行动,那基本都是陪跑、划水,给人家当分母。那么当你到了参加比赛的后期,我感觉提升学习能力的边际效益是很小的,所以,需要对比赛有清楚的认识和明确的目的。
参赛的流程介绍网上有很多博客资料,大概为:
报名——下载数据——数据清洗与处理——特征构造——特性筛选——模型构建——模型融合——提交结果。
这个我这里不想展开讲,因为这个内容,完全可以另开篇幅,所以引用几篇博文如下:
Kaggle 数据挖掘比赛经验分享
分分钟带你杀入Kaggle Top 1%
对机器学习与数据竞赛的一些总结
数据挖掘理论与实践
①竞赛是为了学习,为了锻炼自己的能力——永远不要眼高手低,学了一些理论知识之后,就想当然,打嘴炮。只有动手之后,才知道,什么模型有用,什么方法好用。
② 有人比赛是为了学习知识,有人比赛是为了拿奖金,有人比赛是为了拿名次,人有千千万, 目的各不同。找准自己的方向,just for fun!
③参赛队友很重要——一个人参赛很容易迷茫,做着做着,自己就没了。所以,找一个靠谱的队友吧。
④竞赛结束之后,多看一些数据竞赛的思路分享和优秀代码,一定多看、多写,学会总结!
⑤找到适合自己的数据竞赛类型,现在比赛大致分为:数据竞赛(数据挖掘)、图像比赛、NLP比赛......所以,找到自己感兴趣的方向,动手实践起来。
⑥最后,个人感觉,我们需要对数据竞赛有清楚的认识,不要盲目放大比赛带来的效益,要把握好一个度,掌握好自己的节奏!人啊,要保持清醒的头脑,在什么阶段,该做什么事,要心中有谱!