机器学习方法已成为各个领域科学家、研究人员、工程师和学生的重要工具。许多年前,人们可以发表论文,将(比如说)分类器引入一个还未听说过它的研究领域。现在,在大多数领域中,你要开启自己的研究就必须知道什么是分类器。本书面向想要使用机器学习作为主要工具,而并不一定要成为机器学习研究人员的读者——在本书编写之际,几乎人人都是如此。本书没有引入机器学习的最新发现,主要涵盖我自己选择的一些主题。这是本书与其他书籍的不同之处。本书根据我在很多场合针对不同学生讲授的课程的课堂笔记修改而成。当时的学生大多是四年级本科生和一年级研究生,其中有一半的学生不是计算机科学专业,但他们仍然需要机器学习方法的背景知识。该课程强调将各种方法应用于真实的数据集,本书亦然。决定本书内容的主要原则是要覆盖一些机器学习的思想,我想无论读者的专业或职业如何,只要他们使用学习工具,就应该了解这些思想。虽然忽略一些内容不是件好事,但是我必须做出选择。大多数人会发现广而浅地了解这个领域比深而窄地掌握更有用,因此本书广泛介绍了很多领域。我认为这样很好,因为本书的目标就是让所有读者都能够充分了解这一点,比如,启用分类工具包会使很多问题迎刃而解。所以,本书为你提供了足够多的基础知识,同时使你意识到还有更多的内容值得去了解。本书对有专业基础的学生也是有用的。以我的经验,很多学生学习部分或全部材料时并不知道它们的用处,最后就忘记了。如果你也是这种情况,我希望本书可以唤醒你的记忆。本书适合从头至尾地讲授或阅读。在包含15周的一个学期中,我讲授了其中很多内容,且通常设置12次编程作业。不同的教师或读者有不同的需求,所以我在下面给出几点建议。阅读准备本书假设你已经具备一定的概率和统计的背景知识。这些背景知识在我编写的另一本书——Probability and Statistics for Computer Science 中文版将由机械工业出版社于2021年出版。——编辑注中均有介绍。两本书有部分重叠,因为不是每位读者都会完整阅读这两本书。但是,我已经尽量减少重叠的比例(大约40页),内容仅限于有必要重复介绍的部分。你应该从另一本书(或其他类似的书籍)中了解的内容包括:●各种描述性统计量(均值、标准差、方差)和一维数据集的可视化方法●二维数据集的散点图、相关性和预测●一些离散概率知识●少量连续概率知识(大体掌握概率密度函数及其解释)●随机变量及其期望●少量样本和总体知识●最大似然●简单贝叶斯推断●各种实用概率分布的一些性质,或者到哪里查找它们理论基础:熟练掌握和应用线性代数的相关知识。我们很快将遇到矩阵、向量、正交矩阵、特征值、特征向量和奇异值分解等概念,本书不会对这些概念做过多的介绍。编程基础:你应该能够毫不费力地使用一种编程环境。在此我使用的是R或MATLAB,具体依特定工具包的可靠程度而定。在某些地方,使用Python是个很好的主意。学习技巧:大多数关于编程的简单问题可以通过搜索得到答案。我通常通过网络搜索来了解语法、特定工具包等的详细信息,因为它们很容易被遗忘。答疑时间有学生来问我诸如“如何在R中写循环”等问题时,我经常通过搜索“R loop”来回答,而且告诉他这其实并不需要记忆。数据集及失效的链接使用真实数据集是本书的一个重要特点。然而,现实生活是复杂的,我在本书中引用的数据集可能在你阅读时已经被移动了。一般而言,使用网络搜索引擎简单地查找就可以找到被移动的数据集或条目。我也会尽量在我的个人主页上提供缺失或被移动的数据集的链接。在因特网上搜索我的名字,很容易找到我的个人主页。引用一般来说,我遵循教材的风格,尽量不在正文中引用论文。我并不准备提供完整的现代机器学习的参考文献列表,也不打算提供一个不完整的参考文献列表。但是,我在书中某些地方提及了一些论文,或者是因为对读者来说了解该论文非常重要,或者是因为我使用的数据集的提供者要求引用其出处。我将尽量在我的个人主页上更正引用的错误或遗漏。省略的主题罗列出所有省略的主题是不现实的。其中,我深感遗憾地省略了下述三个主题:核方法、强化学习和像LSTM那样的神经序列模型。省略这些是因为我曾经认为,虽然每个主题都是实践者工具箱的一个重要部分,但是其他的主题更需要在本书中涵盖。完成本书之后我可能会编写关于这些主题的附加内容,完善后再将它们放到网上,并链接到我的个人主页。本书涉及非常少量的学习理论。尽管学习理论非常重要(我仅用简短的一章进行介绍,让读者有个初步的了解),但它并不会直接影响实践。而且,很多机器学习方法虽然仅由较弱的理论支撑,却是极其有用的。大卫·福赛斯美国伊利诺伊州厄巴纳市