第2版前言
Machine Learning: An Algorithmic Perspective, Second Edition
自从本书第1版出版以来,在过去的几年里,机器学习领域有了一些有意义的发展。一个是深度置信网络的崛起,这是一个真正激起了强烈研究兴趣的领域(同时也蕴含着巨大的商业利益,因为大型互联网公司都希望抢购涉足这一领域的每家小公司);而另一个则是长期持续进行的关于机器学习统计解释的研究。后者作为一个研究领域是非常不错的,但对于计算机科学专业的学生而言,由于欠缺统计学基础知识,起步阶段是很困难的,然而,他们又非常有必要学习和关注这个领域的知识。本书专注于机器学习中的算法,希望能帮助学生掌握算法思想,并熟悉相关的数学与统计学知识,以及必要的编程技巧和实验方法。
此外,可用的Python库一直在不断更新,现在有更多的工具可供程序员使用。借助这些便利条件,本书提供了用于实验的支持向量机的简单实现,其他几个地方的代码也做了精简。所有示例代码都可以从http://stephenmonika.net/下载(在“Book”标签下),在学习机器学习的过程中,强烈鼓励大家根据需要随时使用这些代码进行实验。
本书第2版的主要修改包括:
●补充了关于两个新领域的新章节:深度置信网络(第17章)和高斯过程(第18章)。
●重新对章节进行了排序,并且增加了一些材料,使得全书更加自然、流畅。
●重新撰写了关于支持向量机的内容,以包含运行代码和实验建议。
●增加了随机森林(13.3节)、感知器收敛定理(3.4.1节)、适当考虑精度的方法(2.2.4节)、MLP的共轭梯度优化(9.3.2节)以及在第16章添加的卡尔曼滤波和粒子滤波。
●改进了代码,包括更好地使用Python的命名约定。
●贯穿全书的文字修改,使解释更清晰,细节更精准。
在此,我要感谢为本书出谋划策的所有人,他们阅读了不同章节,对于内容的取舍与讲解的方式提出了很多建议。还要感谢新西兰梅西大学的学生,他们与我一起研究了这些材料,无论是作为课程作业的一部分,还是作为研究工作的第一步,无论是理论研究还是机器学习应用。感谢那些为第2版做出特别贡献的人,包括:Nirosha Priyadarshani, James Curtis,Andy Gilman,rjan Ekeberg,以及Osnabrück Knowledge-Based Systems Research小组,特别是Joachim Hertzberg、Sven Albrecht和Thomas Wieman。
Stephen Marsland
于新西兰阿什赫斯特
第1版前言
Machine Learning: An Algorithmic Perspective, Second Edition
在传统的科学研究中,学科与学科之间的融合与交流并不多,而有一门学科则做到了融合计算机科学、统计学、数学、工程学这些学科,甚至将其应用范围扩展至经济、生物、医药、物理、化学等领域中,这就是机器学习。在过去的十年中,机器学习的这种多学科魅力逐渐被人们所理解并推崇。但是,撰写一部系统介绍机器学习的著作是非常困难的,因为这本书要满足不同科学领域的研究者想要了解机器学习的需求。
作为人工智能领域的重要分支,机器学习通常在大学中作为计算机科学类课程开设,但是想要真正了解机器学习算法背后的工作原理,统计学和数学基础是必不可少的。在大学任教期间,我发现其中许多内容对数学基础的要求已经超过了计算机专业学生的所学范围,于是我重新整理了课堂讲稿与笔记,形成了本书的第1版。本书的重点在于介绍机器学习中的各类算法并探究其工作原理,同时附有大量习题。此外,本书的相关网站http://stephenmonika.net/MLbook.html提供书中的示例代码,供读者下载学习。
对于这类实用算法,用实际语言写的例子总是好于某种形式的伪代码。因为这可以让读者马上运行程序并在数据上做实验,而不用操心所选用特定语言的某些无关实现细节。任何计算机编程语言都能用来实现机器学习算法,并且全世界有各种语言的机器学习资源。在本书中我选择的是Python,因为Python语言简单易用、支持多平台,在科学计算中Python几乎已经成为首选语言。对于有编程基础的读者,Python是极易上手的;对于没有编程基础的初学者,Python也是非常友好的,附录A中介绍了如何使用Python进行基础的数值计算。
目前市面上已有许多关于机器学习的优秀著作,而对于本书,我希望它能为想深入学习这门学科的读者提供一个切入点。除此之外,网络上关于机器学习的各种学习资源也颇为丰富,开源软件网站http://mloss.org/software/提供了许多可供下载的机器学习软件。
此外,UCI机器学习库(http://archive.ics.uci.edu/ml/)提供了大量数据集,这些数据集可以用来实现并测试不同的机器学习算法,本书中用到的许多实验数据也来源于此。需要注意的是,在实际问题中,如何获取合适的数据并对其进行预处理以供机器学习算法学习其实是一个不小的问题。
在此,我要对在本书编写过程中给予帮助和提供建议的朋友表示衷心的感谢。尤其感谢Zbigniew Nowicki、Joseph Marsland、Bob Hodgson、Patrick Rynhart、Gary Allen、Linda Chua、Mark Bebbington、JP Lewis、Tom Duckett以及Monika Nowicki对本书第1版的贡献。特别感谢Jonathan Shapiro在机器学习研究过程中对我的帮助。
Stephen Marsland
于新西兰阿什赫斯特