关于本书

本书讲述重要的机器学习算法,并介绍那些使用这些算法的应用和工具,以及如何在实际环境中使用它们。市面上已经出版了很多关于机器学习的书籍,大多数讨论的是其背后的数学理论,很少涉及如何使用编程语言实现机器学习算法。本书恰恰相反,更多地讨论如何编码实现机器学习算法,而尽量减少讨论数学理论。如何将数学矩阵描述的机器学习算法转化为可以实际工作的应用程序,是本书的主要目的。

读者对象

机器学习是什么?谁需要使用机器学习算法?简而言之,机器学习可以揭示数据背后的真实含义。这本书适合有数据需要处理的读者,也适合于想要获得并理解数据的读者。如果读者有一些编程概念(比如递归),并且了解一些数据结构(比如树结构),那么将有助于本书的阅读。即使不具备线性代数和概率论的知识,也能从本书获益,但是如果读者具有线性代数和概率论的入门知识,那么也会利于本书的阅读。此外,本书使用Python语言进行编程,它过去也被称作“可执行的伪代码”。本书假定读者有一些基本的Python编程知识,不过不知道如何使用Python也没有关系,只要具备基本的编程思想,学习Python也不困难。

数据挖掘十大算法

数据以及基于数据做出决策是非常重要的,本书内容也是来源于数据——“数据挖掘十大算法”是IEEE数据挖掘国际会议(ICDM)上的一篇论文,2007年12月在Journal of Knowledge andInformation Systems杂志上发表。依据知识发现和数据挖掘国际会议(KDD)获奖者的问卷调查结果,论文统计出排名前十的数据挖掘算法。本书的基本框架与论文中提到的算法基本一致。聪明的读者可能已经注意到,虽然论文只给出了十个重要的数据挖掘算法,但本书却有十五章。下面我会给出解释,这里我们先看看排名前十的数据挖掘算法。

论文选出的机器学习算法包括:C4.5决策树、K-均值(K-mean)、支持向量机(SVM)、Apriori、最大期望算法(EM)、PageRank算法、AdaBoost算法、k-近邻算法(kNN)、朴素贝叶斯算法(NB)和分类回归树(CART)算法。本书包含了其中的8个算法,没有包括最大期望算法和PageRank算法。本书没有包括PageRank算法,是因为搜索引擎巨头Google引入的PageRank算法已经在很多著作里得到了充分的论述,没有必要进一步累述;而最大期望算法没有纳入,是因为涉及太多的数学知识,如果它像其他算法那样简化成一章,就无法讲述清楚算法的核心,有兴趣的读者可以参阅相关材料。

本书结构

本书由四大部分15章和4个附录组成。

第一部分 分类

本书并没有按照“数据挖掘十大算法”的次序来介绍机器学习算法。第一部分首先介绍了机器学习的基础知识,然后讨论如何使用机器学习算法进行分类。第2章介绍了基本的机器学习算法:k-近邻算法;第3章是本书第一次讲述决策树;第4章讨论如何使用概率分布算法进行分类以及朴素贝叶斯算法;第5章介绍的Logistic回归算法虽然不在排名前十的列表中,但是引入了算法优化的主题,也是非常重要的,这一章最后还讨论了如何处理数据集合中的缺失值;第6章讨论了强大而流行的支持向量机;第7章讨论AdaBoost集成方法,它也是本书讨论分类机器学习算法的最后一章,这一章还讨论了训练样本非均匀分布时所引发的非均衡分类问题。

第二部分 利用回归预测数值型数据

第二部分包含两章,讨论连续型数值的回归预测问题。第8章主要讨论了回归、去噪和局部加权线性回归,此外还讨论了机器学习算法必须考虑的偏差方差折中问题。第9章讨论了基于树的回归算法和分类回归树(CART)算法。

第三部分 无监督学习

前两部分讨论的监督学习需要用户知道目标值,简单地说就是知道在数据中寻找什么。而第三部分开始讨论的无监督学习则无需用户知道搜寻的目标,只需要从算法程序中得到这些数据的共同特征。第10章讨论的无监督学习算法是k-均值聚类算法;第11章研究用于关联分析的Apriori算法;第12章讨论如何使用FP-Growth算法改进关联分析。

第四部分 其他工具

本书的第四部分介绍机器学习算法使用到的附属工具。第13章和第14章引入的两个数学运算工具用于消除数据噪声,分别是主成分分析和奇异值分解。一旦机器学习算法处理的数据集扩张到无法在一台计算机上完全处理时,就必须引入分布式计算的概念,本书最后一章将介绍MapReduce架构。

示例

本书的许多示例演示了如何在现实世界中使用机器学习算法,通常我们按照下面的步骤保证算法应用的正确性:

  1. 确保算法应用可以正确处理简单的数据;
  2. 将现实世界中得到的数据格式化为算法可以处理的格式;
  3. 将步骤2得到的数据输入到步骤1的算法中,检验算法的运行结果。

千万不要忽略前两个步骤而直接跳到步骤3来检验算法处理真实数据的效果。任何复杂系统都是由基础工程构成的,尤其是算法出现问题时,增量地搭建系统可以确保我们及时找到问题出现的位置和原因。如果刚开始就把这些堆砌在一起,我们就很难发现到底是不准确的算法实现引发的问题还是数据格式的问题。此外,本书在实现算法的过程中,记录了很多注意事项,将有助于读者深入了解机器学习算法。

代码约定和下载

本书正文和程序清单中的源代码都使用等宽字体。一些程序清单中包含了代码注解,以突出其中蕴含的重要概念。在某些场合,带编号的程序注释会在程序清单之后进一步解释说明。

本书所有源代码均可在英文版出版商的网站上下载:http://www.manning.com/MachineLearninginAction1

1 读者也可以访问图灵社区本书页面提交勘误或下载源代码,网址是http://ituring.com.cn/book/1021

作者在线

本书的读者还可以访问出版商Manning的网络论坛。在论坛上读者可以评论本书的内容,讨论技术问题,得到作者或其他用户的帮助。为了使用和订阅论坛,请访问http://www.manning.com/MachineLearninginAction ,该网页包含如何注册论坛、如何获取帮助以及论坛的行为规则。

出版商Manning对读者承诺,为读者和作者提供讨论的空间。作者自愿参与作者在线论坛,我们也不承诺作者参与论坛讨论的次数。建议读者尽量问作者具有挑战性的问题,以免浪费作者的宝贵时间。

只要本书英文版在销售,读者都可以访问英文版出版商的作者在线论坛,阅读以前的讨论文档。

目录

  • 版权声明
  • 献词
  • 译者序
  • 前言
  • 致谢
  • 关于本书
  • 关于作者
  • 关于封面
  • 第一部分 分类
  • 第1章 机器学习基础
  • 第2章 k-近邻算法
  • 第3章 决策树
  • 第4章 基于概率论的分类方法:朴素贝叶斯
  • 第5章 Logistic回归
  • 第6章 支持向量机
  • 第7章 利用AdaBoost元算法提高分类性能
  • 第二部分 利用回归预测数值型数据
  • 第8章 预测数值型数据:回归
  • 第9章 树回归
  • 第三部分 无监督学习
  • 第10章 利用K-均值聚类算法对未标注数据分组
  • 第11章 使用Apriori算法进行关联分析
  • 第12章 使用FP-growth算法来高效发现频繁项集
  • 第四部分 其他工具
  • 第13章 利用PCA来简化数据
  • 第14章 利用SVD简化数据
  • 第15章 大数据与MapReduce
  • 附录A Python入门
  • 附录B 线性代数
  • 附录C 概率论复习
  • 附录D 资源