前言
本书介绍了机器学习,一个不仅对于IT专业人员和分析师,而且对于所有想要利用如预测分析、分类、聚类和自然语言处理等强大技术的数据科学家和工程师都十分重要的领域。为便于学习,所有的理论后都附有基于Python的具体实例。
要想对该领域有基本而扎实的理解需要具备一定的数学基础,这不仅是解释算法所必需的,同时还能使读者理解如何通过调整超参数以获得尽可能高的精度。当然,本书不可能覆盖所有细节内容,因而对某些内容只进行了简单的描述,仅将理论用于结果解释。这样,用户能有更多的机会专注于没有过于复杂数学理论的基础内容,并可以通过文献来深入研究所有感兴趣的内容。
所有章节的阅读不需要按特定的顺序,可以随意跳过你已经知道的内容。必要时可以参考解释某些概念的章节。作者在此对本书中任何不准确或笔误的内容表示歉意,同时感谢所有Packt出版社编辑人员的合作和持续关注。
读者对象
本书适合那些希望在预测分析和机器学习领域建立扎实基础的机器学习工程师、数据工程师和数据科学家阅读。熟悉Python将是一个额外的优势,这将使你能够充分利用本书。
本书内容
第1章介绍了机器学习的世界,解释了创建智能应用程序涉及的最重要方法的基本概念,重点介绍了不同类型的学习方法。
第2章解释了关于常见机器学习问题的数学概念,包括可学习性的概念和信息论的内容。本章包含一些理论,但如果你从头开始学习本章内容,它将非常有用,因为其中深入介绍了大多数算法中使用的最重要的数学工具。
第3章描述了用于预处理数据集、选择信息量最大的特性和降低原始维度的重要技术。
第4章描述了线性回归算法及其优化方法,包括Ridge、Lasso和ElasticNet。本章还给出了更高级的模型,可用于解决非线性回归问题或减轻异常值的影响。
第5章介绍了线性分类的概念,重点介绍了逻辑回归、感知器、随机梯度下降算法和被动攻击算法。5.7节介绍了最重要的评价指标,这些指标用于衡量模型的性能并找到最优的超参数集。
第6章解释了贝叶斯概率理论并描述了广泛使用的朴素贝叶斯分类器的结构。在6.4节中,通过一些具体的例子分析了线性和二次判别。
第7章介绍了SVM算法,特别介绍了利用核技巧解决线性和非线性分类问题。本章的最后介绍了支持向量回归和更复杂的分类模型。
第8章解释了分层决策过程的概念,描述了决策树分类、随机森林、bootstrapped和袋装树以及投票分类器的概念。
第9章描述了高斯混合、k-NN算法和k-means算法。本章最后介绍了确定最优簇数和度量模型性能的不同方法。
第10章介绍了更复杂的聚类技术,包括DBSCAN、谱聚类和双聚类,这些方法可用于非凸数据集结构。10.3节介绍了两种在线聚类算法(mini-batch k-means聚类和BIRCH)。
第11章在上一章的基础上介绍更复杂的聚类算法,还介绍了凝聚聚类和树形图的概念。
第12章解释了推荐系统中最广泛使用的算法:基于内容和用户的策略、协同过滤和交替最小二乘法。一个基于Apache Spark的完整示例展示了如何使用交替最小二乘法处理非常大的数据集。
第13章解释了词袋策略的概念,并介绍了有效处理自然语言数据集所需的最重要的技术(标记、词干抽取、停止词删除、标注和向量化)。13.4节还讨论了基于Reuters数据集的分类器示例。
第14章介绍了主题建模的概念,并描述了最重要的算法,如潜在语义分析(确定性和概率性)和隐性狄利克雷分配。14.2节和14.3节分别介绍了词嵌入和情感分析的问题,阐述了解决这一问题的使用最广泛的方法。
第15章介绍了深度学习的内容,解释了神经网络和计算图的概念。15.2节以多层感知器的具体例子介绍了高级深度学习框架Keras。
第16章解释了最重要的深度学习层的基本功能,并以深度卷积网络和用于处理时间序列的循环网络(LSTM)的Keras示例来说明。16.4节简要介绍了TensorFlow框架,并通过一些示例来展示它的一些基本功能。
第17章解释了如何定义完整的机器学习管道,重点介绍了每个步骤的特性和缺点。
充分利用本书
为完全理解本书中的所有算法,需要掌握线性代数、概率论和微积分的基本知识。
所有实例都是用Python编写的,使用了scikit-learn机器学习框架、自然语言工具包(NLTK)、Crab、langdetect、Spark(PySpark)、Gensim、Keras和TensorFlow(深度学习框架)。这些程序适用于Linux、macOS X和Windows系统的Python 2.7及Python 3.3或以上版本。当特定框架用于特定任务时,将提供详细的说明和参考。第1~14章的所有示例都可以使用Python 2.7执行(而TensorFlow需要Python 3.5或以上版本)。但是,强烈建议读者使用Python 3.5或以上版本的发行版。数据科学和机器学习最常见的选择是Anaconda(https://www.anaconda.com/distribution/),它已经包含了所有最重要的软件包。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
约定使用
本书中使用了一些字体约定。
代码:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。例如:“scikit-learn提供了SVC类,这种实现非常有效,可以在大多数情况下使用。”
代码段设置如下:
粗体:新术语和重要词汇以粗体显示。
警告或重要内容用此标识提示。
提示和技巧用此标识提示。