如何在一周内学会机器学习

(本文翻译自Per Borgen《Machine Learning in a Week》)

作为一个门外汉想要了解掌握机器学习(ml)看起来是不可能完成的任务。

然而,在用了一周时间练习机器学习的基础操作之后,我发现这比我预期的要更容易掌握。

这篇文章将告诉那些有兴趣进入机器学习领域的读者如何开始,并从我这一周的学习中得到一些经验。

需要了解的背景知识

在我开始一周的学习之前,我首先读了一些关于机器学习的文章,然后在Coursera上了Andrew Ng的一半课程以及其他理论性的课程。所以我对于什么是机器学习有了一些概念上的了解。但我还是完全不明白如何将我的知识转化成代码,而这正是我想要学习的。

我想要在一周的学习后能够通过机器学习去解决问题,即使这样意味着要跳过很多基本原理,并采取自上至下的学习路径,而不是传统的从基础到应用这种自下而上的方式。

Hacker News获得一些建议后,我得出了一个结论,那就是PythonScikit Learn-module是最适合开始的工具。这套模块带有许多可供选择的算法,并且通过它们可以将实际的机器学习减至区区几行代码。

星期一:学习实用性

首先我从一些关于Scikit的教学视频中找到了Sentdex的「如何使用机器学习去投资股票」,这个视频中包含进入下一步学习的必要知识。

Sentdex教学视频的好处是手把手的传授收集数据的所有步骤。当你自己动手做时,你会发现找取并清理数据比实际的机器学习所消耗的时间要多得多。所以编写从文件中获取数据或利用网络爬虫的脚本是立志成为机器学习极客所必需的技能。

在这之后,当我被上述问题卡住时,我又重新看了几遍这些视频从而获取解决办法,所以我推荐大家也这么做。

当然,如果你已经懂得如何从网页中获取数据,这些教学片可能并不是最适合你的,因为它们大多都是涉及数据提取的。在这种情况下,Udacity的机器学习介绍或许是一个更佳的入门选择。

星期二:解决一个实际的问题

星期二,我想试试以我所学到的知识能否解决一个实际的问题。因为我的同事正在做英格兰银行(Bank of England)的数据可视化竞赛的题目,我和他一起查看了银行发布的数据集。最有趣的一组数据是他们的家庭调查。这是银行对几千户家庭开展的年度调查,涉及金钱等相关主题。

我们决定解决的问题是这样的:

通过一个客户的教育水平、年龄及收入,你能预测他或她的性别吗?

我尝试了不同的方法,花了几个小时来清理数据,并利用Scikit教授的方法去寻找一个合适的算法。

最终我们计算出的成功率在63%附近,虽然根本称不上完美,但如果没有我们的干预,仅凭机器出的成功率仅为50%,比翻硬币要强一点点。

当我看到了学习成果之后,更有了继续做的动力。我建议大家一旦掌握了基本的Scikit用法之后,自己也要做一下。

星期三:从头到尾

在实际操作了多种Scikit的学习模块后,我决定试着从头到尾去写一组线性回归算法。

我之所以这么做是因为我觉得(到现在仍觉得)我真的不懂后台发生了什么。

幸运的是,Coursera上有一些课程介绍了算法如何运行的细节,更确切地说,这些课程描述了利用梯度下降的线性回归的重要概念。

这绝对是最有效的学习技巧,因为它让你了解后台运行的每一步,我强烈建议你也这么做。

我计划独自用更复杂的算法改写执行程序,但我更想在完成Scikit Learn中个别的算法之后再做这些。

星期四:开始参与竞赛

星期四,我开始做Kaggle入门教程Kaggle是一个机器学习竞赛的平台,在这里你可以找到一些公司或组织提供的问题,并提交你的解决方案。

我建议在对机器学习的理论与实践有一定程度的了解之后再尝试Kaggle上的资源,否则你会觉得沮丧多于收获。

词袋模型的教程会在你解决问题的时候给予必要的辅导,而且介绍了关于自然语言处理(NLP)的简要内容。当我完成了这个教程后,我发现自己对NLP的兴趣比刚开始时大多了。

星期五:重返学校

星期五,我继续学习Kaggle的教程,同时开始Udacity机器学习介绍课程。我已经入门了,也觉得越来越有趣了。

由于这门课并没有对算法展开太深的讲解,所以相对于Coursera的课程要容易得多。而且Scikit Learn侧重于解决生活中的案例,相比于从头到尾用Octave语言编写的算法来说,也更贴近实际。

前方的路

通过一周充满乐趣的学习,使我渐渐意识到机器学习的用途。随着我愈加深入的了解它,我就更能体会该在什么领域应用机器学习来解决问题。

如果你不想承担繁重的学习计划,不妨选择一条自上而下的学习路径,并尽快进入到解决实际问题这一步。

祝你好运!

如何在一周内学会机器学习”的一个响应

留下评论