这篇文章的确很难写,因为我希望它真正地对初学者有帮助。面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门?
资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的。
我为每种类型的资源选出了其中最佳的学习资料。如果你是一个真正的初学者,并且有兴趣开始机器学习领域的学习,我希望你能在其中找到有用的东西。我的建议是,选取其中一项资源,一本书,或者一个库,从头到尾的读一边,或者完成所有的教程。选定一个后坚持学习,等到完全掌握以后,再选取另一个资源按同样的方法学习。现在开始吧。
程序库
我信奉这么一句话:学到一定程度后,你需要开始尝试做事。这就是我怎么学会编程的,并且我确信其他大部分的人也是这么学会的。要知道自己的极限,激发自己的能量。如果你知道怎么编程,你就能快速深入到机器学习的学习中。然后制定一个计划,在你实现一个工程系统前学习完这项技术相关的数学知识。
找一个库,先阅读其文档,然后就可以照着指南尝试做一些事情了。以下是最优秀的机器学习库开源代码。我并不认为这些库适用于你的工程项目,但是它们非常适合学习,开发及建模。
先选择一个你熟悉的语言对应的库,然后再尝试其他更功能强大的库。如果你是个很好的程序员,你应该知道你可以很容易的从一种语言切换到另一种语言。程序逻辑都是一样的,只是语法和API的区别而已。
WEKA:数据挖掘平台,提供了API,一些命令行及整个数据挖掘生命周期的图像化用户接口。你可以准备数据,进行可视化开发,创建分类、回归、集群模型和很多内嵌及第三方组件提供的算法。如果你需要基于Hadoop平台工作,那么Mahout就是一个很好的机器学习java框架,这个框架和和WEKA不相关。但如果你是大数据和机器学习的新手,那么还是坚持看WEKA,记得一次只学一样东西。
Scikit Learn:机器学习Python库,依赖Numpy和Scipy库。如果你是Python或者Ruby程序员,这个库比较合适。该库接口友好,功能强大,且有完善的文档支持。如果你想尝试其他东西,那么 Orange将是一个不错的选择。
Octave:如果你熟悉MatLab或者你是Numpy程序员且正尝试寻找一些不一样的东西,那么可以考虑Octave。它提供了跟Matlab相似的数据计算环境,并且可以很简单的通过编程解决线性及非线性的问题,这些问题是大部分机器学习算法的基础。如果你有工程师背景,你可以从这里开始学起。
BigML:可能你不想做任何的编程,那么你可以全部使用工具,比如WEKA。你还可以更深一步并使用像BigML一样的服务,BigML提供了web版的机器学习接口,开发及创建模型可以全部在浏览器上完成。
选取其中一个平台用于机器学习的实战练习。不要只是看,要做。
视频课程 现在很流行通过观看视频来学习机器学习。我在YouTube和VideoLectures.Net上看了很多机器学习的视频,看视频的风险在于你很容易只是看而不会去实践。我建议在看视频的时候一定要做好笔记,即便之后你很快就会把笔记扔掉。同时建议你不管在学什么,一定要去动手尝试。
坦白来说,我看过的视频中,没有哪个视频是特别适合初学者的,我指真正的初学者。他们都是基于读者有最基本的线性代数和概率理论知识的假设。斯坦福大学Andrew Ng 的教程可能是最适合用于入门的了,另外,我推荐了一些一次性视频。
论文概述 如果你不习惯读研究性论文,你将会发现他们的语言非常枯燥。论文像是教科书的片段,但是论文描述了实验,或者是该领域其他前沿研究。不过,如果你正要开始学习机器学,这里有一些论文可能会引起你的兴趣。
上面我只罗列了两篇重要的论文,因为读论文会真的让你陷入困境。
机器学习初学者书籍 市面上有很多机器学习的书,但很少有针对初学者编写的。什么才是真正的初学者?可能是从其他领域转入机器学习的,也可能是从计算机科学,软件编程或者统计学转入的。即使这样,大部分的书籍都会认为你至少已经有了线性代数和概率论的知识背景。
然而,这里还是有一些书鼓励有兴趣的程序员从一个最小的算法开始学习,指定工具和库,这样编程人员就可以运行程序并得出结果。最著名的有Programming Collective Intelligence(中文版:《集体智慧编程》)、Machine Learning for Hackers(中文版《机器学习:实用案例解析》)和Data Mining: Practical Machine Learning Tools and Techniques(中文版《数据挖掘:实用机器学习技术》),以上三本分别基于Python,R和Java三种语言。如果有不懂的地方,可以参见这三本书。
Machine Learning for Hackers(中文版:《机器学习:使用案例解析》):我建议在读完Programming Collective Intelligence以后再来读这本书。该书同样提供了大量的实用性很强的案例。但是它有更多数据分析的东西并且使用R语言。我真心喜欢这本书。
很多人能列举出很多优秀的机器学习教科书,我也可以。这些书的确很棒,只是个人觉得对初学者来说不太好入门而已。
扩展阅读 这篇文章经过我仔细推敲,为了确保自己没有漏掉任何一点重要的东西,我同时也看了其他人列出的资源。为了使内容更全面,这里再列出一些网上其他优秀的机器学习入门资源列表。
你是否已经看过或者用过这些资源呢?你觉得怎么样? 我不知道我是否为有兴趣学习机器学习的程序员提供了真正有用的资源,有任何问题和建议,请留下宝贵留言!
|