无需多言,大家都已知道,机器学习已发展成为当前最能激发人们兴趣的技术之一。出于各种考虑,谷歌、脸书、苹果、亚马逊、IBM等众多大公司都投入了巨资用于机器学习理论和应用的研究。机器学习看起来已经成为当前的一个流行语,但这绝不是炒作。这一令人兴奋的技术为我们带来了全新的可能,并已成为我们日常生活中不可或缺的一部分。例如,与智能手机的语音助手对话、向客户推荐合适的商品、防止信用卡诈骗、过滤垃圾邮件,以及检测与诊断疾病等,这样的例子不胜枚举。
如果你想参与机器学习的实践,或是成为解决问题的能手,抑或是考虑从事机器学习研究方面的工作,那么本书正适合你。不过,对初学者来说,机器学习的理论知识是比较有难度的。幸运的是,近年来出版了许多非常实用的书籍,通过实现一些功能强大的算法来帮助读者步入机器学习的殿堂。在我看来,代码示例起到了重要的作用,通过示例代码的实际操作可以对概念进行更好的阐释。不过请记住:能力强大了,责任就接踵而至!机器学习背后的概念美妙且重要,就如同黑盒一样令人无法琢磨。因此,我旨在为读者提供一本不一样的书籍:讨论与机器学习概念相关的必要细节,并以直观且详实的方式来说明机器学习算法是如何工作的,以及如何在实际中应用它们。尤为重要的是,如何避开常见的误区。
如果在“谷歌学术”中搜索“机器学习”一词,会返回一个大的文献数:1800000。当然,我们无法讨论过去60年中所提出的算法和应用的全部细节。不过,本书涵盖了机器学习领域最核心的主题和概念,可以让大家率先踏入这一领域,从而开启一段令人兴奋的旅程。如果本书内容无法满足你对此领域的求知欲,你可以利用作者所列出的丰富资源,追寻这一领域最核心的突破。
如果你已经详细地研究过机器学习理论,本书将教会你如何把所学知识付诸实践。如果你曾经使用过机器学习技术,并且希望能更深入地了解机器学习算法是如何工作的,本书也适合你!如果你刚接触机器学习领域,也不用担心,反而更应该感到高兴。我保证,机器学习将改变你解决问题的思考方式,并且让你见识到如何通过发挥数据的力量来解决问题。
在深度进入机器学习领域之前,先回答一个重要的问题:为什么使用Python?答案很简单:它功能强大且使用方便。Python已经成为数据科学领域最为流行的编程语言,它不仅可以让我们忽略掉编程中那些繁杂的部分,还可以提供一个交互式环境,让我们能够快速记录自己的想法,并且将概念直接付诸实现。
回顾我的个人经历,实事求是地说,对机器学习的研究让我成为一名优秀的科学工作者,让我变得善于思考,并且成长为问题解决能手。在本书中,我将与读者分享这些知识。知识经由学习获得,而学习热情是其中的关键,真正掌握某项技能只有通过实践才能够实现。学习的历程不可能一帆风顺,某些主题相对来说难度会比较大,但我希望大家能把握住这个机会,并享受学习的回报。请记住,在机器学习的旅途中,我们共同前行,通过此书,你将学会许多新的技能,借助于它们,我们甚至能够以数据驱动的方式解决那些最棘手的问题。
本书内容
第1章介绍了机器学习算法的划分。此外,还讨论了构建一个典型的机器学习模型的必要步骤,对此过程的理解有助于后续章节的学习。
第2章追溯了机器学习的起源,介绍了二元感知分类器和自适应线性神经元。该章还介绍了模式分类的基础,并着重介绍优化算法和机器学习的相互作用。
第3章介绍了机器学习中分类算法的基本内容,并使用一个流行且包含算法种类相对齐全的开源机器学习算法库scikit-learn,来完成几个机器学习分类算法实例。
第4章讨论了如何处理原始数据中常见的问题,诸如数据缺失等。该章还讨论了几种如何从数据集中找出蕴含信息最丰富特征的方法,并讲解了如何处理不同数据类型的变量,以使其与机器学习算法的输入要求相匹配。
第5章介绍了如何通过降维来压缩数据的特征数量,以便将数据集压缩到一个容量相对较小的子集上,同时还能保持原数据中有用的区分信息。该章主要讨论了通过主成分分析来降维的标准方法,并将其与监督以及线性变换技术进行了比较。
第6章讨论了对预测模型进行评估时应该做什么和不应该做什么。此外,还探讨了衡量模型的不同标准以及机器学习算法调优的相关技巧。
第7章介绍了有效地组合多个机器学习算法的不同方法,并讲授了如何通过构造继承模型来消除个别分类器的弱点,从而最终得到更加准确和可信的预测结果。
第8章讨论了将文本数据转化为有意义的表达方式的方法,根据人们的留言借助机器学习算法来预测其观点。
第9章继续对预测模型进行了探讨,并将引导你完成将机器学习模型嵌入到Web应用中的核心步骤。
第10章讨论了当自变量和因变量都为连续值时,建立线性模型来完成预测的基本方法。在介绍了不同的线性模型后,又讨论了多项式回归和基于树的方法——随机森林。
第11章将关注的焦点转移到了另一类型的机器学习方法:无监督学习。我们使用了三种基本的聚类算法将具备一定相似度的对象划分为几个组别。
第12章扩展了第2章中提及的梯度优化的概念,并基于流行的反向传播算法来构建强大的多层神经网络。
在上一章内容的基础上,第13章提供了更加有效地训练神经网络的实用指南。该章关注的重点是Theano,它是一个开源的Python库,借此,我们可以充分利用现代GPU上众多的计算内核。
阅读须知
执行本书中的示例代码需要Python 3.4.3或者更高版本,所需操作系统为Mac OS X、Linux或者微软的Windows。书中的代码需要频繁使用Python科学计算的核心库,包括SciPy、NumPy、scikit-learn、matplotlib和pandas。
第1章将介绍如何设置Python环境和上述核心库,同时还会给出一些有用的技巧。在后续章节中,还会根据需要安装其他库:用于自然语言处理的NLTK库(第8章),Flask Web框架(第9章),统计数据可视化库seaborn(第10章),以及Theano库(第13章),它可用于高效训练图像处理的神经网络单元。