本文转载自:机器之心
因为对数学感兴趣,勇敢的少年决定投身 Kaggle。
知乎上有这样一个问题已经收到了超过 700 条回答。
在这之下有人冷嘲热讽,有人给出了鼓励和建议。从人们回答的时间来看,问题的发起应该是在 2017 年,14 岁的少年如今也到了上大学的年龄。不知他 or 她是否还能坚持自己的兴趣和理想?
正如很多人所说的,如何让自己的兴趣转化为事业要看自己的努力。最近在机器学习圈里,就有一个 14 岁靠一己之力成为著名数据竞赛平台的冠军。
他叫Andy Wang,是一名来自美国华盛顿州 Redmond 的华裔,最近刚上高一。他向我们介绍了自己如何从零开始,成为 Kaggle 竞赛冠军的心路旅程。
人们可能觉得「数据科学」和「机器学习」这些术语令人生畏,需要足够的专业技能才能把握。如果你简单浏览一下数据科学和机器学习领域也会得出这样的结论,盯着无穷无尽的代码和技术术语,经常让人不知道从哪里开始。
Kaggle 是许多人开始旅程的地方之一,如果你不知如何入坑,Kaggle 是投入竞争,赢得声誉和深入机器学习领域的好地方。
在本文中,我将带你了解如何在 14 岁时成为最年轻的 Kaggle 竞赛大师之一。
Andy Wang 是谁
Andy Wang 来自美国华盛顿州 Redmond,现在是一名高一学生,对数学、人工智能和计算机科学较感兴趣。他此前曾在 Kaggle 平台上获得了一枚金牌和两枚银牌。
早期经验
几年前,我开始对数学感兴趣,并开始自行学习超过学校课程内容的知识。没过多久,我就把目标转向了编程,因为我从小就对计算机科学着迷。经过对于在线课程的一番搜索,我找到了几门 Python 基本编程和概念的课程并开始学习。不久以后我就制作出了一些基于回溯算法的小项目,比如数独求解器。
数独生成器的代码。
此时我开始对学到的知识该用来干什么有了疑问。直到有一天,当朋友向我介绍机器学习和数据科学领域时,我才真正为它的力量感到惊讶。我得知了 Kaggle,这是一个数据科学竞赛平台,它扩展了我对当前计算和人工智能技术的可能性的认识。
我是如何进步、如何学习的
我对编程知识和机器学习的了解大部分来自互联网,当你有疑问时,互联网是你最好的老师。没有学校教授数据科学或者神经网络,如果想要在 Kaggle 竞赛中取得成功,你必须依靠自己。
对于很多人来说,数据科学和机器学习是一项比较难的任务,即使是有了资源和课程,也有人不知道从哪里开始学起,如何学习。因为有许多领域与数据科学和机器学习相关,而精通每一个领域是不可能的。数据科学和机器学习功能强大,对于像我这样的初学者来说,你需要找到你感兴趣的东西,并充分挖掘它的潜力。
机器学习的不同领域。
对于很多人来说,由于先前知识的积累,学习数据科学和机器学习方法有所不同,下面是我成功的路径:
一点一滴的学习,积少成多,一开始学到的简单知识,将来可以轻松积累成复杂的知识。
参加 Kaggle 竞赛
我参加了使用回归技术预测房价的初学者竞赛。我发现我学到的东西远远不够,我最缺的是经验。最好的学习方法是通过失败和经验来学习新的东西。我熟悉了 Kaggle 环境,并且浏览关于 Kaggle 的问题讨论和笔记。不久之后,我觉得我已经为第一次真正的竞赛做好了准备。我和我的朋友 Andre Ye 一起参加了 **Mechanisms of Action (MoA) **竞赛。
我们的第一次 MoA 竞赛。图源:https://www.kaggle.com/c/lish-moa/leaderboard
当时我们都是比赛新手。论坛上所有看起来很专业的代码和技术讨论让我们很惊讶。我决定从头开始,在讨论帖的帮助下,我能够在短时间内建立基线。创新对于在竞赛中取胜非常重要。我仔细研究了与 MoA 问题相关的论文和文章,然后与论坛上展示的方法相结合,使我们的解决方案进入了前 4%。之后,我们有了更多经验,又参加了另外两个竞赛,分别取得了银牌和首个金牌。竞赛结果出乎我的意料之外,非常感谢从 Kaggle 社区获得的指导。
下面将介绍一些我参加 Kaggle 竞赛中观察和学习到的技巧。
我在 Kaggle 竞赛中遵循的通用 pipeline
从自己参加过的 Kaggle 竞赛中,我始终遵循一个通用的 pipeline,它不仅可以将工作组织得当,还能高效地产生有意义的结果。
我学到了什么、使用了哪些技巧?
随着参加了越来越多的 Kaggle 竞赛,我对一些解决方案的复杂度感到惊讶,从特征工程到神经网络架构,等等。
RANZCR CLiP-Catheter and Line Position 挑战赛(医学影像插管分类)中的第一名解决方案。
通常而言,机器学习算法仅能从信息性数据中很好地学习。能够使用与预期不同的算法在某些情况下可以提供帮助。比如,使用主成分分析(PCA)算法降低数据维然后将简化后的特征连接回原始特征,这种做法已经多次帮我解决了问题。
特征工程带来了特征选择。删除不重要的特征有助于减少数据中的噪声。在 MoA 竞赛中,论坛和讨论帖中提供的方法对我们设计的模型没有帮助。**在这些情况下,要敢于深入阅读和研究论文。**在我当时正在参加的这个竞赛中,多标签分类并不常见,我也没有找到任何简单的教程。最后,我找到了一篇使用问题转换来比较多标签特征选择的论文。
阅读论文看起来可能令人生畏,但快速浏览论文并从满篇的专业术语中找出关键词是一项至关重要的技能。对于像我一样的初学者而言,试图理解所看论文的方方面面是不可能实现的。只有当我找到自己需要并且要用到的论文时,我才会努力理解论文中的每个单词和参考文献。
**在建模时,我最大的体会是要有创造性。**这种创造性不仅体现在模型结构上,在模型如何能够作用于不同类型的数据这一问题上也要有创造性思维。
图源:Kaggle
最后,在一场竞赛中发挥作用的策略不一定能够提升另一场竞赛中的解决方案。在 Jane Street Market Prediction 挑战赛中,我发现特征工程对竞赛结果毫无帮助,但在建模中发挥奇效。需要牢记一般经验法则:
在这些情况下,不要纠结于一些「以往竞赛中有效」或「对其他竞赛有效」的解决方案,要向前看,并花更多时间探索那些可以带来提升的新东西。
参加 Kaggle 竞赛并拿到奖牌并不容易,但使用正确的学习方法与工具可以令过程更加容易。
在设置本地交叉验证方案时,需要记住以下几点:
总之,仅靠「别人怎么做,自己就这么做」对学习或者赢得竞赛没有帮助。我从 Kaggle 竞赛中收获的最重要的经验是永远不要抄袭他人的工作。我可以从他人的 idea 中获得启发,甚至使用他们的建模方法,但从未将他人的工作当作自己的解决方案。当接触新内容时,我养成了一种习惯,即查阅自己无法理解的所有内容,直到可以向他人自信地解释这些内容。
原文链接:
https://www.kaggle.com/andy1010
gle 竞赛中收获的最重要的经验是永远不要抄袭他人的工作。我可以从他人的 idea 中获得启发,甚至使用他们的建模方法,但从未将他人的工作当作自己的解决方案。当接触新内容时,我养成了一种习惯,即查阅自己无法理解的所有内容,直到可以向他人自信地解释这些内容。
原文链接:
https://www.kaggle.com/andy1010
https://towardsdatascience.com/my-journey-to-kaggle-master-at-the-age-of-14-e2c42b19c6f7