频道 登录 注册
文章 – 伯乐在线
为期一周的机器学习
分享到: 13
本文由 伯乐在线 - 心灵是一棵开花的树 翻译,刘唱 校稿。未经许可,禁止转载!
英文出处:Per Harald Borgen。欢迎加入翻译组。
在门外汉看来,机器学习(Machine Learing,ML)入门是个不可完成的任务。
如果你选错了方向,确实就是不可能的了。
然而,在我学习机器学习的基本知识一周后,发现入门比我想象的容易。
本文旨在给予那些对机器学习有兴趣的人一些入门指南,这个指南来自我为期一周的学习经验。
背景
在我开始这一周的机器学习之前,我已经阅读过一些相关的文章了, 并且学习了一半吴恩达(Andrew Ng)在 Coursera 上的机器学习课程,以及一些其他的理论课程。所以我对机器学习有些基本的概念,但我仍然我不能将我的知识转换为代码,这是我想要改变的。
我想在一周学习的最后阶段能够用 ML 解决问题,尽管这意味着会跳过很多基础知识,我采取了自上而下的学习方法,而不是自下而上。
在 Hacker News 上咨询之后,我得出的结论是 Python 的 Scikit Learn 库是最适合入门的。这个库提供了丰富的算法,将实际的机器学习问题减少到几行代码。
星期一:学习一些实例
我的学习之旅从查找关于 Scikit Learn 的视频教程开始。我最后选择了 Sentdex 关于使用ML投资股票的教程,这个教程给了我继续学习的必备知识。
Sentdex 教程的好处是,教师会引导你一步步去收集数据。随着学习的深入,你会发现获取和清理数据是比真正的机器学习更耗时的。因此,编写脚本抓取文件或网络中的数据的能力是一个ML极客的必备技能。
我后来又重看了几个视频,以解决之前我不理解的问题。我建议你也这样做。
但是,如果你已经知道如何从网站抓取数据了,那本教程可能不是很适合你,因为许多视频都是关于数据抓取的。如果是这样的话, Udacity的机器学习教程可能更适合你。
星期二:将ML应用到实际问题
星期二我想看看是否能用我所学解决一个实际问题。因为另一个合作编程的伙伴正在参加英格兰银行数据可视化大赛,所以我与他一起查看了该银行发布的数据。其中最有趣的是他们的家庭调查数据,这是该银行对数千户家庭进行的关于金钱方面的年度调查。
我们决定解决的问题如下:
给定一个人的教育水平,年龄和收入信息,计算机可否预测其性别?
我观察这个数据集后,花了几个小时清理数据,并使用 Scikit Learn map 去找一个适合该问题的算法。
最后我们预测的成功率达到了 63%,这并不令人震撼。但是至少比掷硬币的准确率(50%)高一些。
最后的结果是激励你的动力,所以我建议一旦你会使用 Scikit Learn 了,就自己来动手做一做。
你意识到你可以使用 ML 来解决现实生活中的问题的时刻是很一个关键的时刻。
星期三:从头开始
在玩转各种 Scikit Learn 模块后,我决定尝试从头开始写一个线性回归算法。
我想这样做是因为我一直觉得我真的不明白后台发生了什么。
幸运的是,coursera 课程详细介绍了几种算法的工作原理,这在很大程度上是有用的。更具体地说,它描述了使用具有梯度下降的线性回归的最底层的概念。
这肯定是最高效的学习技巧,因为它迫使你了解后台的一些细节。 我强烈建议你也这么做。
我计划在继续学习的过程中重写我自己实现的一些更复杂的算法,但我想在学会 Scikit Learn 中相应的算法之后再做。
星期四:开始参加竞赛
星期四,我开始研究 Kaggle 的入门教程。Kaggle 是一个机器学习的竞赛平台,你可以在其中提交公司或组织发布的问题的解决方案。
我建议你在对机器学习有一些理论和实践经验后再尝试 Kaggle。你需要这些知识才能开始使用 Kaggle,否则你可能没什么收获,反而会觉得沮丧。
“Bag of Words”教程指导你完成参赛资料提交的每个步骤,并会给你一个简短而令人兴奋的有关自然语言处理(NLP)的介绍。看完教程之后,我对 NLP 的兴趣大大增加。
星期五:回到学校
星期五, 我继续 Kaggle 教程的学习,并开始看 Udacity 的机器学习简介。我现在的学习很愉快。
它比 Coursera 的课程简单,因为它不会深入讲算法的具体内容。但它很实用,因为它会讲如何使用 Scikit Learn,这比 Coursera 课程中的告诉你用 Octave 从头开始实现算法更易于应用到实际问题。
未来之路
这一周的学习不仅是好玩,更使我认识到了机器学习在社会中的作用。我越了解它,就越明白他可以解决哪些领域的问题。
如果你对机器学习感兴趣,我强烈建议你花几天或几晚上的时间深入了解一下。
如果你还没有准备好面对复杂难懂的原理,请选择一个自上而下的方法并尽快从解决实际问题开始吧。
祝你好运!
感谢阅读!我叫 Per Borgen,主要写一些入门文章。
如果你有任何问题或者想与我联系,请通过 Twitter, GitHub或者邮件([email protected])随时与我联系。