《实用机器学习》——1.4 本书概述

  1. 云栖社区>
  2. 博客>
  3. 正文

《实用机器学习》——1.4 本书概述

异步社区 2017-05-02 13:09:00 浏览1200
展开阅读全文

本节书摘来异步社区《实用机器学习》一书中的第1章,第1.4节,作者:孙亮,黄倩,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 本书概述

本书主要从解决实际问题的角度来介绍常用的机器学习算法。在1.3节中我们讨论了机器学习中常见的4类典型问题,基本上覆盖了目前实际中可以使用机器学习算法来解决的主要问题类型。在本书中,我们将主要讨论对应的4类算法,包括:

回归算法;
分类算法;
推荐算法;
排序算法。
其中回归算法和分类算法是两类最常用的算法,也是其他很多算法的基础,因此我们首先予以介绍。推荐系统在目前有了越来越多的应用,而排序算法在搜索引擎等领域也获得了广泛的应用,因此我们也会对常用的推荐算法和排序算法进行介绍。

在上面的4个例子中,我们可以构建多个不同的模型,希望它们之间能够取长补短,使得综合它们之后的模型的性能能够进一步提升。集成学习(ensemble learning)是一类通过综合多个模型以得到更好性能的方法,对于回归问题、分类问题、推荐问题、排序问题都适用,因此我们会专门用一章来介绍集成学习。

本书的目标是尽量介绍实用的算法。读者在掌握我们讨论的机器学习算法后就可以实际使用R中的软件包来解决实际问题了。对于每种算法,我们首先介绍其基本原理。理解算法的基本原理非常重要,它是我们实际使用算法的基础。只有理解了不同算法的特点,才能在实际中根据不同数据的特点合理选择处理的算法。在本书中,我们使用R语言来介绍这些算法的实际使用。机器学习中的各种常用算法在R中都有一种甚至多种实现,而这些都是免费和开放的。用户可以直接使用R中对应的软件包来处理数据,构建相应的机器学习模型。实际使用算法是学习机器学习算法最有效的方式之一。我们希望读者阅读完算法的理论部分后,尽可能地使用R去实际处理数据和建立模型,以获得用机器学习解决问题的第一手经验。

这里我们需要强调,很多实用、有效的算法并不简单,甚至比较复杂。以决策树为例,其原理简单,在很多关于机器学习的书籍中都是予以重点介绍的,但是,由于决策树对于噪声比较敏感,在实际中很容易出现过拟合的现象,因此很少直接使用。然而,基于决策树的随机森林和提升树在实际中应用极为广泛。在本书中,我们也会介绍决策树,但主要目的是作为介绍随机森林和提升树的基础。

由于篇幅有限,本书将主要集中介绍那些最实用的算法。例如,我们没有介绍聚类分析(cluster analysis)和关联规则(association rule)。此外,我们也省略了一些常用算法。例如,在分类算法中,朴素贝叶斯分类器(Naïve Bayesian Classifier)就没有介绍。感兴趣的读者可以参考相关读物了解有关内容。

算法的介绍只是本书的一部分。在使用机器学习算法处理实际问题之前,还需要进行如下步骤:

(1)数据探索(data exploration);

(2)数据预处理(data preprocessing);

(3)从原始数据中构建相应的特征,即特征工程(feature engineering)。

在实际使用机器学习处理数据的过程中,数据探索和数据预处理是非常重要的步骤。通过数据探索,我们可以了解数据的特性,选用合理的预处理方法,如处理缺失数据等。此外,在很多情况下直接对原始数据使用机器学习算法并不能取得良好的效果,我们需要对数据进行一些变换以生成新的特征,这个过程称为特征工程。在实际使用机器学习算法解决问题时,特征工程是非常重要的一步。良好的特征是成功应用机器学习的关键点之一。

在得到算法构建的模型后,还需要评价和选择模型,包括:

不同模型的评价标准;
从多个模型中选择最优模型的方法。
注意,不同的算法有不同的评价标准,如分类算法和回归算法的评价标准就不同。因此,我们在介绍一类算法时,通常会介绍此类算法的评价标准。例如,介绍分类算法时,我们介绍了准确率、AUC等评价分类算法的标准以及在R中的计算方法,同时也介绍了交叉检验和R中的caret包以帮助用户在R中进行模型选择。

此外,我们还介绍了R语言和必要的数学基础。本书广泛使用R语言介绍如何使用算法。R语言具有免费、开放、简单易学的特点,在工业界的使用越来越广泛;同时,R语言有大量免费的软件包可以使用,基本涵盖了机器学习的各个领域,本书所介绍的各个领域都能找到相应的R软件包。本书还介绍了常用的数学基础知识,包括概率统计、矩阵计算等,这样读者能够更加容易地理解和掌握算法的原理。

1.4.1 本书结构
本书大致可以分为两部分。前半部分介绍一些相关的基础知识,后半部分着重介绍各类算法。

由于我们在全书中都使用R来介绍如何使用各种机器学习算法,因此首先在第2章介绍R语言的基础知识。在第3章中,我们介绍相关的数学基础知识,包括概率统计的基础知识和矩阵计算的基础知识等。

第4章介绍数据的探索和预处理,包括数据类型、数据探索、数据预处理及数据可视化。

从第5章开始,我们着重介绍各类算法。我们首先从最基本的回归算法和分类算法开始讨论,然后介绍推荐算法和排序算法,最后介绍如何使用集成学习来综合多个模型以进一步提高模型的性能。

第5章介绍回归分析,包括常用的回归算法以及回归算法的评价和选取。我们从最基本的线性回归和最小二乘法开始讨论,然后讨论更加复杂的回归算法,包括岭回归、Lasso和Elastic Net。在介绍完多种回归算法之后,我们讨论如何评价和选取不同的回归算法。另外,我们讨论偏差-方差权衡(bias-variance tradeoff),并讨论模型复杂度(model complexity)的概念。最后,我们使用实际的案例分析来说明如何在R中使用和选取回归算法。

第6章讨论基本的分类算法,包括决策树、支持向量机和逻辑回归。我们引入了不同的损失函数(loss function),并讨论不同的分类算法如何对应不同的损失函数,以及如何使用正则化项(regularization)来控制模型的复杂度。与回归算法的讨论类似,我们也会讨论如何评价和选取不同的分类算法。为了解决实际中更复杂的分类问题,我们将会详细讨论如何解决不平衡分类(imbalanced classification)问题。本章还会介绍R中对应的软件包,这样读者可以直接尝试使用各种分类算法。另外,我们会着重介绍caret包,这样读者能够简单地使用交叉检验(cross validation)来为各种算法选取最优参数。

第7章介绍常用的推荐算法,主要包括基于相似度的推荐算法和基于矩阵分解的算法。我们还会介绍推荐算法的评价和选取,以帮助用户合理地选取算法。其中,基于相似度的算法包括基于内容的算法和基于邻域的算法;基于矩阵分解的算法包括:

无矩阵分解的基准方法;
基于奇异值分解(SVD)的推荐算法;
基于SVD推荐算法的变体,有AFM模型、翻转的AFM模型、ASVD模型(或者SVD++模型)、翻转的ASVD模型、引入时间信息的模型。
基于内容的推荐算法不是第7章的重点。对于基于矩阵分解的诸算法,我们推导了对应的随机梯度下降(stochastic gradient descent)算法。对于基于邻域的推荐算法,我们将讨论基于用户的邻域推荐算法和基于商品的邻域推荐算法,并详细讨论基于邻域的推荐算法的核心部分:如何计算相似度和邻域。

第8章介绍排序算法,包括逐点排序(pointwise ranking)算法、逐对排序(pairwise ranking)算法和逐列排序(listwise ranking)算法。我们将着重介绍较实用的LambdaMART算法。

集成学习可以显著地提升多种算法的性能。在本书的最后一章,我们将介绍集成学习,包括基本思想和3类不同的集成学习方法:

bagging的基本思想及典型例子随机森林;
boosting的基本思想及典型例子提升决策树;
stacking的基本思想及应用。
同时,我们还会介绍R实现中流行的软件包,包括randomForest和gbm。

1.4.2 阅读材料及其他资源
这里我们介绍机器学习及相关领域的一些教材和相关资源。首先介绍一下目前流行的多种关于机器学习的教材。

参考文献[1]是一本早期的关于机器学习的教材。该书是一本入门读物,介绍了机器学习的很多基本概念和算法。参考文献[2]是机器学习领域影响很大的一本教材,讨论了很多比较实用的算法,但该书对于读者的数学基础要求较高。参考文献[3]是参考文献[2]的简化版,内容和讲解上都更基础一些。参考文献[4]和参考文献[5]是两本从贝叶斯统计角度讨论机器学习的流行教材,阅读的难度稍大。参考文献[5]介绍的内容稍微前沿一些,很多都是从近年的论文中直接总结的。

参考文献[6]从使用R进行实际建模的角度介绍了机器学习,覆盖了R中的很多软件包和具体用法,讨论了实际建模中的各个步骤。但该书对很多算法没有具体讲解原理和步骤,仅适用于各种模型的入门。参考文献[7]也是近期出版的一本使用R来介绍机器学习的著作,该书以应用为主,所介绍的算法过于基础。

关于模式识别方面的教材,我们推荐参考文献[8]。该书是关于模式识别的经典教材,难度适中。

关于数据挖掘方面的教材,我们推荐参考文献[9]。该书讲解了基本的分类算法、关联规则和聚类算法。其他具有代表性的教材包括参考文献[10]和参考文献[11]。参考文献[10]是一本较早从数据库角度讨论数据挖掘的教材,其中介绍的算法比较基础。参考文献[11]则是一本以WEKA⑤为核心介绍数据挖掘的教材。此外,参考文献[12]的优点是贴近应用实际,使用实际中的一些应用例子来介绍算法。

在掌握机器学习算法时,要注意深度和广度的问题。作为一名机器学习的实践者,熟知多种机器学习算法是必需的;同时,对于那些最常用的算法,要知道其基本思想和底层实现。本书将讨论机器学习中的一些常用算法,但限于篇幅,很难做到面面俱到。读者可以根据自己的实际需要选择不同教材的相关章节阅读。

最前沿的关于机器学习的研究文章通常会在机器学习领域的顶级会议和期刊上发布或发表。此类顶级会议主要包括:

Annual Conference on Neural Information Processing Systems(NIPS)
International Conference on Machine Learning(ICML)
ACM SIGKDD International Conference on Knowledge Discovery and Data Mining(SIGKDD)```
机器学习领域的顶级期刊主要包括:

《IEEE Transactions on Pattern Analysis and Machine Intelligence》(TPAMI)
《Journal of Machine Learning Research》(JMLR)
《Machine Learning Journal》`
这里我们只列出了部分顶级的会议和期刊。感兴趣的读者可以在互联网上找到更多的此类会议和期刊。注意,中国计算机学会在其官网上给出了各领域的推荐会议和期刊目录⑥,我们给出的列表主要涉及其中的人工智能、数据挖掘两个领域。

对于机器学习算法的广大应用者来说,最重要的问题是如何利用机器学习算法来解决实际问题。例如,如何将实际问题转化为一个能够直接应用机器学习算法的问题。网站kaggle.com有很多关于机器学习的竞赛,是一个提高这方面能力的优秀媒介。例如,前面讨论的Heritage Health Prize就是由kaggle.com组织的。kaggle.com还提供了过去竞赛的很多获胜方案。在解决具体实际问题时,如果问题和kaggle.com中的某个竞赛类似,则可以借鉴获胜方案。互联网上也有关于kaggle.com竞赛的介绍,例如,SlideShare网站⑦就给出了一个很好的关于kaggle.com的介绍。

关于机器学习的实际应用工具,除了R之外,比较常用的还有Python中的scikit-learn⑧。该软件包涵盖了机器学习中的很多实用算法,包括分类、回归、聚类、数据降维和预处理等。该软件包的文档极为完备。如果读者经常使用Python,scikit-learn是一个极好的机器学习库。WEKA也是数据挖据领域使用较多的一个软件包,该软件包集成了很多常用的机器学习算法,同时也提供了调用的API。当数据规模较大时,很多时候我们需要使用Hadoop平台上的Mahout库⑨和Spark平台上的MLlib库⑩。在本书中,为了方便读者简单地使用各种算法,我们以R为基础来介绍各种算法的使用。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注