机器学习最佳入门学习资料汇总

标签: 机器学习 | 发表时间:2014-07-16 13:01 | 作者:smallroof
出处:http://www.52ml.net

这篇文章的确很难写,因为我希望它真正地对初学者有帮助。面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门?

资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的。

我为每种类型的资源选出了其中最佳的学习资料。如果你是一个真正的初学者,并且有兴趣开始机器学习领域的学习,我希望你能在其中找到有用的东西。我的建议是,选取其中一项资源,一本书,或者一个库,从头到尾的读一边,或者完成所有的教程。选定一个后坚持学习,等到完全掌握以后,再选取另一个资源按同样的方法学习。现在开始吧。

程序库

我信奉这么一句话:学到一定程度后,你需要开始尝试做事。这就是我怎么学会编程的,并且我确信其他大部分的人也是这么学会的。要知道自己的极限,激发自己的能量。如果你知道怎么编程,你就能快速深入到机器学习的学习中。然后制定一个计划,在你实现一个工程系统前学习完这项技术相关的数学知识。

找一个库,先阅读其文档,然后就可以照着指南尝试做一些事情了。以下是最优秀的机器学习库开源代码。我并不认为这些库适用于你的工程项目,但是它们非常适合学习,开发及建模。

先选择一个你熟悉的语言对应的库,然后再尝试其他更功能强大的库。如果你是个很好的程序员,你应该知道你可以很容易的从一种语言切换到另一种语言。程序逻辑都是一样的,只是语法和API的区别而已。

R Project for Statistical Computing(用于统计计算的R工程):这是一个软件环境,采用类lisp脚本语言。提供了你想要的所有统计相关的东西,包括非常赞的绘图。CRAN(第三方机器学习包)的 机器学习分类下有该领域专家们编写的代码,最新的接口方法和其他你能想到的功能都可以在上面找到。如果你想快速建模并开发,R工程是必学的。不过你不一定从一开始就从这个工程学起。

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 的教程可能是最适合用于入门的了,另外,我推荐了一些一次性视频。

Stanford Machine Learning(斯坦福机器学习):通过Coursera可以获取到,Andrew Ng主讲。除了招生,你可以在任何时间看到所有的课程,并且从 Stanford CS229 course(斯坦福CS229课程)上下载到所有的讲义和课堂笔记。课程包括家庭作业,测试。课程集中在线性代数上,使用Octave环境。

Caltech Learning from Data:可以在edX访问到,Yaser Abu-Mostafa主讲。所有的课程和材料在 CalTech网站上都可以获取到。和斯坦福课程一样,你可以按你自己的节奏来完成家庭作业和任务。它覆盖了和斯坦福类似的课程,然后在细节上有一些深入,并且用了更多的数学方面的知识。家庭作业对初学者来说可能太难了。

Machine Learning Category on VideoLectures.Net(VideoLectures.Net上的机器学习分类):初学者很容易沉溺于海量的内容中。你可以找寻一些看起来比较有趣的视频,然后尝试看看。如果不是你现阶段能看懂的,就先放放。如果你看着合适,就记笔记。我发现我自己总是不断的找寻自己感兴趣的标签,然后最终选择了完全不同的标签。当然,看看该领域专家真正是什么样的也挺好的。

“Getting In Shape For The Sport Of Data Science” – Talk by Jeremy Howard:和一个本土R用户团队关于机器学习实践应用的对话,这个团队在机器学习竞赛中获取了很好的成绩。这个视频很有用,因为很少有人去讲将机器学习应用到一个项目中真正是什么样的,及怎么去做这个项目。我幻想着能创建一个网络真人TV秀,这样可以能直接看到选手机器学习竞赛中的表现。我是多么的向往啊。

论文概述

如果你不习惯读研究性论文,你将会发现他们的语言非常枯燥。论文像是教科书的片段,但是论文描述了实验,或者是该领域其他前沿研究。不过,如果你正要开始学习机器学,这里有一些论文可能会引起你的兴趣。

The Discipline of Machine Learning(机器学习的原则):机器学习原则定义的白皮书,作者Tom Mitchell. 当时有一场辩论,Mitchell最终说服CMU主席成立单独的机器学习机构,以保证机器学习将在今后的100年里作为一个学科存在。(也可参考短片Tom Mitchell访谈)。

A Few Useful Things to Know about Machine Learning(一些你必须知道的关于机器学习的事):这是一篇好论文,因为它不拘泥于特定的算法,而是偏向于比如特征选取概述和模型简化这些重要的问题上。走对方向并且从一开始就想清楚,都是很好的事情。

上面我只罗列了两篇重要的论文,因为读论文会真的让你陷入困境。

机器学习初学者书籍

市面上有很多机器学习的书,但很少有针对初学者编写的。什么才是真正的初学者?可能是从其他领域转入机器学习的,也可能是从计算机科学,软件编程或者统计学转入的。即使这样,大部分的书籍都会认为你至少已经有了线性代数和概率论的知识背景。

然而,这里还是有一些书鼓励有兴趣的程序员从一个最小的算法开始学习,指定工具和库,这样编程人员就可以运行程序并得出结果。最著名的有Programming Collective Intelligence(中文版:《集体智慧编程》)、Machine Learning for Hackers(中文版《机器学习:实用案例解析》)和Data Mining: Practical Machine Learning Tools and Techniques(中文版《数据挖掘:实用机器学习技术》),以上三本分别基于Python,R和Java三种语言。如果有不懂的地方,可以参见这三本书。

[![Books for Machine Learning Beginners](http://machinelearningmastery.com/wp- content/uploads/2013/11/photo-300x225.jpg)](http://machinelearningmastery.com /wp-content/uploads/2013/11/photo.jpg)

Programming Collective Intelligence(中文版:《集体智慧编程》):创建精巧的web 2.0应用:这本书是专门为编程人员写的,轻理论,重实战,有大量的代码示例,实际上遇到的web问题及对应的解决方案。买这本书的读者,建议边读边做练习!

Machine Learning for Hackers(中文版:《机器学习:使用案例解析》):我建议在读完Programming Collective Intelligence以后再来读这本书。该书同样提供了大量的实用性很强的案例。但是它有更多数据分析的东西并且使用R语言。我真心喜欢这本书。

Machine Learning: An Algorithmic Perspective:这本书像是Programming Collective Intelligence的升级版。这两本书的目标相同(帮助程序员入门),但是这本书包含了数学和参考文献,同时也有用Python写的示例和代码片段。我建议读者先看Programming Collective Intelligence,如果看完以后还有兴趣,再来看这本书。

Data Mining: Practical Machine Learning Tools and Techniques, Third Edition(中文版:《数据挖掘:实用机器学习技术》):实际上我是从这本书开始学起的,2000年的第一版。当时我还是个java程序员,由于WEKA库提供了很好的开发环境,我利用这本书结合WEKA库进行尝试,用自己的算法做了插件并作了大量的机器学习应用,同时延伸到数据挖掘部分。因此我强力推荐这本书和这种学习方法。

Machine Learning(中文版:《机器学习》):这本书比较老,包含了公式和很多的参考文献。虽然是本教科书,但是每个算法的实用性依然非常强。

很多人能列举出很多优秀的机器学习教科书,我也可以。这些书的确很棒,只是个人觉得对初学者来说不太好入门而已。

扩展阅读

这篇文章经过我仔细推敲,为了确保自己没有漏掉任何一点重要的东西,我同时也看了其他人列出的资源。为了使内容更全面,这里再列出一些网上其他优秀的机器学习入门资源列表。

A List of Data Science and Machine Learning Resources:很详细的资源列表,花点时间读读作者的建议,再看看其中的链接。很值得一看。

What are some good resources for learning about machine learning? Why?:这个问答的第一个答案很不错,每次读我都会做笔记并打上标签。这个答案里面最有价值的部分是机器学习课程的笔记列表及Q&A页面的相关文章列表。

Overwhelmed by Machine Learning: is there an ML101 book?:一个StackOverflow上的帖子,上面确实列出了很多推荐的机器学习书籍列表,第一个回帖的是Jeff Moser,罗列了很多课程视频和谈话。

你是否已经看过或者用过这些资源呢?你觉得怎么样?

我不知道我是否为有兴趣学习机器学习的程序员提供了真正有用的资源,有任何问题和建议,请留下宝贵留言!

译者: teyla 原作者:Jasonb
本文转载自: 译言网

相关 [机器学习 学习 资料] 推荐:

机器学习最佳入门学习资料汇总

- - 我爱机器学习
这篇文章的确很难写,因为我希望它真正地对初学者有帮助. 面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门. 资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的.

机器学习五步走

- - 我爱机器学习
经常会有人问“我该如何在机器学习方面更进一步,我不知道我接下来要学什么了. 一般我都会给出继续钻研教科书的答案. 每当这时候我都会收到一种大惑不解的表情. 但是进步确实就是持续的练习,保持较强的求知欲,并尽你可能的完成具有挑战性的工作. 因为他是为数不多的几种可以让你真真让你获取坚实知识的媒介. 是的,你可以选择选一门课,注册MOOC,参加一些讨论班.

机器学习之路

- - 我爱机器学习
自从答应简二毛博士将自己的机器学习历程和心得分享给大家至今,转眼间半年已经过去了,感谢简博士分享和开源精神的鼓舞,这也正是本系列关于机器学习介绍博客的动力来源. 之前有些网友,师弟们问我,学习机器学习怎么入手,从看什么书开始. 如果你只愿意看一本书,那么推荐Bishop的PRML,全名Pattern Recognition and Machine Learning. 这本书是机器学习的圣经之作,尤其对于贝叶斯方法,介绍非常完善.

机器学习算法Boosting

- - 标点符
机器学习通常会被分为2大类:监督学习和非监督学习. 在监督学习中,训练数据由输入和期望的输出组成,然后对非训练数据进行预测输出,也就是找出输入x与输出y之间的函数关系F:y = F(x). 根据输出的精确特性又可以分为分类和回归. 分类和回归的区别在于输出变量的类型. 定量输出称为回归,或者说是连续变量预测.

Mahout实现的机器学习算法

- - ITeye博客
使用命令:mahout -h.   在Mahout实现的机器学习算法见下表:. EM聚类(期望最大化聚类). 并行FP Growth算法. 并行化了Watchmaker框架. 非Map-Reduce算法. 扩展了java的Collections类. Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能.

国内的机器学习几个人

- - 丕子
转: http://blog.csdn.net/playoffs/article/details/7588597. 推荐几个机器学习和数据挖掘领域相关的中国大牛:. 李航:http://research.microsoft.com/en-us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究领域是信息检索,自然语言处理和统计学习.

Apache Mahout 0.8 发布,机器学习库

- - 开源中国社区最新新闻
Apache Mahout 0.8 发布了,Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用. 该项目已经发展到了它的最二个年头,目前只有一个公共发行版.

Ruby的机器学习项目

- - 阳志平的网志-技术类
作者是辉瑞公司的小牛,可惜烂尾了. 我在改啊改啊,可惜现在是商业项目,暂时不能放出改掉的部分. 对了,顺便做个小广告,去年组织翻译的一本小书:社会网络分析:方法与实践. 已经上市了,感兴趣的可以翻翻:. 社会网络分析:探索关系背后的科学与技术. treat:自然语言处理. 类似于igraph,也是桥接处理nlp.

机器学习该如何入门

- - CSDN博客综合推荐文章
  对于这个问题的解释,说实话我很有压力,因为在分享篇文章之前就有朋友告诉我,这个百度上一搜一大片,还需要你讲吗. 正如同一千个读者眼里有一千个林黛玉一样,我解释的当然是我个人自从读研到工作这么多年对机器学习的学习到应用过程的独特见解.   首先我们看下图了解一下机器学习在AI(Artificial Intelligence 人工智能)领域的地位.

[译] 理解机器学习技术

- - IT瘾-dev
第1讲 理解机器学习技术. 学完本模块的内容,读者将能够:. 讨论机器学习的技术和商业应用. 学完本讲的内容,读者将能够:. 解释各类机器学习方法和算法. “机器学习领域的突破,其价值10倍于微软. 你是否曾经为计算机能够下象棋或者机器人能够完成复杂任务而感到惊奇. 一旦你理解了机器如何学习和适应各种问题、提供合适的解决方案时,这些看上去很复杂的问题实际上相当简单.