05_提高技术的方法

Kaggle 竞赛

kaggle是被谷歌公司收购的机器学习竞赛平台,几乎每个时期都有各类大小型比赛,并且提供大量数据,有些竞赛是由其他公司赞助的,并且提供高额奖金。

我在学习传统机器学习的时候在 kaggle 中参与了一些简单的竞赛,比如泰坦尼克号数据集,简单比赛的数据清洗的难度比较低,经过一定的加工就可以在大部分机器学习模型中运行,非常适合锻炼代码能力和构建机器学习模型的熟练度。在每个竞赛中,只要你按要求提交了一个结果,就会得到一个总排名,可以看到你和其他人模型的得分,还可以看到其他人的成绩和他们的解决方案,比如代码笔记本,你可以找到得分最高的人并且学习他们的实现方法。

由于 kaggle 是全英文的,你可能会需要用到翻译软件,但如果花一点精力,其实能够看懂大部分英文信息,这同样是锻炼英文能力的好地方。

数学建模国赛

数学建模中大数据题的热度越来越高,几乎每年都有一个数据分析的题目,当然也会有其他类型的题目,比如涉及到博弈论或者动态规划问题的,我对 2013 年的 B 题进行了练习,给出了解决方案,但并不是基于机器学习的,读者可以参考一下碎纸片拼接问题

此外,我参与了 2020 年数学建模国赛的 C 题,主办方提供了一些银行借贷的特征数据,其中包含一个"是否借贷"的字段,显然需要我们进行机器学习,题目要求参赛组对借贷情况进行数据分析,并且给出一个借贷策略,我们小组在制定策略方面采用了神经网络方法,即用一些借贷数据的特征预测是否要借贷。

然而深度神经网络在数学建模竞赛中并不被推崇,至少在 2020 年以前是那样,因为深层神经网络的可解释性非常差,机器学习不只有神经网络,如果用传统机器学习方法,构建 logistic 回归模型,那么可解释性当然是更强的,这在数模竞赛中更有优势,此外特征工程也是一个非常重要的任务,例如要预测房价,只给一个地区的人口和房屋总数,也许有一定效果,但是如果建立一个新特征,比如人口除以房屋总数,也就是人均房屋数,它与房价的相关程度可能更高,模型也就有更好的效果。

特征工程属于数据清洗之后的一个可选步骤,本书中没有详细提及数据清洗和特征工程。推荐读者学习北京理工大学嵩天的视频课程。

我的小组在那次比赛中获得了省一等奖,实际上,在那之前,神经网络方法获得省一也是很少见的,因为模型可解释性很低,事后认为可能是因为我们组做了不少特征工程,这一点比较契合办赛宗旨。但是如果论文尝试对神经网络的行为进行了合理解释,那么也许会很有优势,但解释神经网络行为一直是这个领域的难题,尤其是神经元非常多的时候。

数学建模国赛在每年的九月初,读者若想参与,在读期间,可以在开赛前几个月内报名,如果想冲刺国奖,三位组员都需要有良好的科研素质和科研能力。推荐三人组队分工:模型构建者、程序员、论文撰写者。其中程序员时间会很紧张,需要大量连续的时间写代码,模型构建者的任务,狭义来说就是负责构建公式,如果也具备代码能力,可以协助编程,论文撰写者的任务也就是字面意思,最好是熟悉论文撰写并且有较多经验的同学负责。三个组员也要对其他人的任务有一定的了解,不能完全割裂,竞赛只有三天时间,需要良好的配合。

最后补充一点,数学建模竞赛并不是"深度学习"竞赛,你还需要大量其他的工作,比如分析问题,解释问题和模型等。

自己练习

自己练习也是很重要的,你可以在学习的过程中随时尝试用已经学到的方法应用在一个新的数据上,尝试写一些小程序。

在我的机器学习笔记本中,你可以找到很多小项目。自己尝试编程是很重要的,多给自己定小目标,时间长了就会积累起来。