这是一个非常难写的帖子,因为我希望它真的很有价值。
我坐在一张空白页面上,问了一个非常难的问题,那就是我会向机器学习领域的绝对初学者推荐的最好的图书馆,课程,论文和书籍。
我真的很痛苦包括什么和排除什么。我必须努力工作,让自己成为程序员和机器学习的初学者,并考虑哪些资源最有利于他们。
我为每种类型的资源选择了最好的。如果您是一名真正的初学者并且对机器学习领域的开始感到兴奋,我希望您能找到有用的东西。我的建议是选择一件事,一本书或一个图书馆并阅读它以涵盖或完成所有教程。选择一个并坚持下去,然后一旦掌握它,选择另一个并重复。我们进入吧。
编程库
我是“学会足够危险并开始尝试”的倡导者。
这就是我学习编程的方式,我相信很多其他人也是这样学习的。了解自己的局限并发挥自己的优势。如果您知道如何编程,请利用它来快速深入了解机器学习。然后在实施生产系统之前,有学科去学习技术的数学。
查找库并阅读文档,按照教程开始尝试。以下是最好的开源机器学习编程库。我不认为它们都适合在您的生产系统中使用,但它们是学习,探索和原型设计的理想选择。
从您熟悉的语言开始,然后转到其他更强大的库。如果你是一个优秀的程序员,你知道你可以很容易地从语言转向语言。这是完全相同的逻辑,只是不同的语法和API。
- R统计计算项目:这是一个环境和类似于lisp的脚本语言。您可能想要做的所有统计数据将被提供给R,包括惊人的绘图。CRAN上的机器学习类别(思考:第三方机器学习包)具有该领域的领导者使用最先进的方法编写的代码,以及您可以想到的任何其他内容。如果您想快速进行原型设计和探索,学习R是必须的。它可能不是你开始的第一个地方。
- WEKA:这是一个数据挖掘工作台,为整个数据挖掘生命周期提供API和许多命令行和图形用户界面。您可以准备数据,可视化探索,构建分类,回归和聚类模型,并且内置了许多算法以及第三方插件中提供的算法。与WEKA无关, Mahout是Hadoop基础架构上机器学习的优秀Java框架,如果您更喜欢它。如果您不熟悉大数据和机器学习,请坚持使用WEKA并一次学习一件事。
- Scikit Learn:基于NumPy和SciPy构建的Python机器学习。如果您是Python或Ruby程序员,那么这就是您的库。它友好,功能强大,并附有优秀的文档。如果您想尝试别的东西,橙色将是一个很好的选择。
- Octave:如果您熟悉MatLab或者您是NumPy程序员寻找不同的东西,请考虑Octave。它就像Matlab一样,是一个数值计算环境,可以很容易地编写程序来解决线性和非线性问题,例如那些构成大多数机器学习算法的问题。如果您有工程背景,这可能是您开始的好地方。
- BigML:也许你不想做任何编程。无需编程即可完全驱动WEKA等工具。您可以更进一步,使用BigML等服务,在Web上提供机器学习界面,您可以在浏览器中浏览所有建模模型。
选择一个平台并用它来进行实用的机器学习教育。不要只读,做。
视频课程
视频是一种非常流行的机器学习入门方式。
我在YouTube和VideoLectures.Net上观看了很多机器学习视频。风险在于你要做的就是消费而不采取行动。我建议您在观看视频时应始终记笔记,即使您稍后丢弃了这些笔记。我还建议您尝试在讲座中学习的任何东西。
坦率地说,我所见过的视频课程都不适合初学者,真正的初学者。它们都预设了至少线性代数和概率论的工作知识等等。
Andrew Ng的斯坦福大学讲座可能是开课的最佳场所,否则我推荐一次性的视频。
- 斯坦福机器学习:可通过Coursera获得,由Andrew Ng教授。除了报名,您还可以随时观看所有讲座,并获得实际斯坦福CS229课程的讲义和讲义。该课程包括家庭作业和测验,并侧重于线性代数和使用Octave。
- 加州理工学院数据学习:可通过edX获得,由Yaser Abu-Mostafa教授。所有讲座和材料均可在CalTech网站上获得。再次,像斯坦福大学的课程一样,您可以按照自己的进度完成作业和作业。它涵盖了类似的主题,并进入更多细节,更具数学性。对于初学者来说,家庭作业可能过于具有挑战性。
- VideoLectures.Net上的机器学习类别:这是一个容易在内容过载中淹没的地方。寻找看似有趣的视频并试用它们。保释,如果它处于错误的水平,或者如果你喜欢它就做笔记。我发现我不断回过头来重新审视自己的主题,并提出全新的主题。此外,很高兴看到该领域的主人实际上是什么样子。
- “为数据科学运动做好准备” - 由杰里米·霍华德讲话:与当地R用户小组讨论在竞争机器学习方面做得好的实际过程。这非常有价值,因为很少有人谈论解决问题以及如何解决问题的实际意义。我并不是暗中幻想为参与机器竞赛的网络真人秀节目提供资金。这就是我的意思!
概述论文
如果你不习惯阅读研究论文,你会发现这种语言非常僵硬。一篇论文就像一本教科书的片段,但描述了一个实验或该领域的其他一些前沿。不过,如果您希望开始进行机器学习,有些论文可能会让您感兴趣。
- 机器学习学科:汤姆米切尔定义机器学习学科的白皮书。这是Mitchell用来说服CMU总裁为一个主题创建一个独立的机器学习部门的一个论点,这个部门将在100年左右仍然存在(另见Tom Mitchell的简短采访)。
- 关于机器学习的一些有用的事情:这是一篇很好的论文,因为它从特定算法中退出并激发了许多重要问题,例如特征选择的普遍性和模型简单性。这一切都是好事,从一开始就要正确思考。
我只列出了两篇重要的论文,因为阅读论文真的让你陷入困境。
初学者机器学习书籍
有很多机器学习书籍,很少是为初学者编写的。
真的是什么初学者?
很可能你是从其他领域进行机器学习,很可能是计算机科学,编程或统计学。即便如此,大多数书籍都希望你至少具备线性代数和概率论的基础。
然而,有一些书籍鼓励热心的程序员通过教授算法的最小直觉并指向工具和库来开始,以便你可以跑去尝试。
最值得注意的是 编程集体智能, 黑客机器学习和 数据挖掘:分别用于Python,R和Java的实用机器学习工具和技术。如果有疑问,请抓住这三本书中的一本!
机器学习初学者的书籍
- 编程集体智慧:构建智能Web 2.0应用程序(联盟链接):本书是为您亲爱的程序员编写的。它是理论上的重点,重点是代码示例和实际的Web问题和解决方案。买它,读它,做练习。
- 黑客机器学习(会员链接):我在阅读编程集体智慧(上图)后推荐这本书 。它再次提供了实用的工作示例,但它具有更多的数据分析风格并使用R.我真的很喜欢这本书!
- 机器学习:算法视角(会员链接)。本书就像编程集体智能的更高级版本 (上图)。它有类似的目标(让程序员从机器学习开始),但它包括数学和参考以及python中的示例和片段。如果您仍然感兴趣,我建议您在阅读编程集体智慧后阅读本文 。
- 数据挖掘:实用机器学习工具和技术,第三版(会员链接):我实际上是从这本书开始的,实际上它是第一版,大约是2000年。我是一名Java程序员,本书和配套库WEKA为我提供了一个完美的环境,让我可以尝试,实现我自己的算法作为插件,并通常实践机器学习和更广泛的数据挖掘过程。我强烈推荐这本书和这条路。
- 机器学习(会员链接):这是一本旧书,包含公式和大量参考文献。这是一本教科书,但每个算法的基础动机也很容易获得。
很多人都在谈论一些很棒的机器学习教科书。我也是,他们很棒。我认为它们不是初学者开始的好地方。
进一步阅读
我深深地想到了这篇文章,我也去了看其他人的资源清单,以确保我没有错过任何重要的内容。
为了完整起见,这里有一些其他伟大的资源列表,用于开始机器学习。
- 数据科学和机器学习资源列表:精心整理的列表。花点时间阅读他的建议并点击链接。非常值得。
- 学习机器学习有哪些好资源?为什么?:这个Quora问题的第一个答案是惊人的。我每次看书都记笔记并做书签。这个答案中最有价值的部分是机器学习课程列表,附有讲义和问答网站上的相关帖子列表。
- 机器学习不堪重负:是否有ML101书籍?:StackOverflow问题。真的是推荐的机器学习书籍清单。Jeff Moser的第一个答案非常有用,因为它指出了视频和讲座。