1.3 机器学习算法
我们在前面的内容中提及过,大部分的机器学习算法主要用来解决两类问题——分类问题和回归问题。在本节当中,我们介绍一些简单但经典实用的传统机器学习算法,让大家对机器学习算法有一个基本的感性认识。
1.3.1 分类算法
1.2节介绍了什么是分类算法,这是一种监督学习方法。有很多算法帮助我们解决分类问题,比如K近邻、决策树、朴素贝叶斯、贝叶斯网络、逻辑回归、SVM等算法。人工神经网络和深度学习也往往用来解决分类问题。这些都是常见和常用的分类算法,只不过不同的算法都有其优劣,会应用在不同的场景下。
因为本书的侧重点是深度学习领域,因此本书后续不会全面讲解所有算法(当然这也几乎是不可能完成的任务),但我们会涉及并讲解与主干内容相关的算法,如决策树、贝叶斯算法等。逻辑回归和人工神经网络是特例,其中人工神经网络是深度学习的来源,而逻辑回归又是人工神经网络的基础,因此会利用相当篇幅进行阐述。
1.3.2 回归算法
我们在前面章节中介绍了什么是回归算法。回归算法也是一种有监督学习方法。回归算法来自于回归分析,回归分析是研究自变量和因变量之间关系的一种预测模型技术。这些技术应用于预测,时间序列模型和找到变量之间的关系。举个简单例子,我们可以通过计算得出在某些情况下服务器接收请求数量与服务器CPU、内存占用压力之间的关系。
最简单的回归算法就是线性回归,相信大家都对线性回归有所了解。虽然线性回归比较简单,但是越简单粗暴的算法在面对有些实际问题的时候就越实用。深度学习也可以用于解决回归问题,在本书后文中涉及的时候会详细介绍回归算法。
1.3.3 聚类算法
聚类算法是一类无监督学习算法。聚类的概念也在前文介绍过,是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。聚类分析以相似性为基础,在一个聚类中的模式比不在同一聚类中的模式具有更多的相似性,这是聚类分析的最基本原理。聚类分析的算法可以分成很多类方法,比如划分法、层次法、基于密度的方法、基于网络的方法和基于模型的方法。
最有名的聚类算法就是K-Means(K -均值)算法,是最为经典的、基于划分的聚类方法。该算法的主要思路是以空间中k个点为形心进行聚类,将最靠近它们的对象归类。通过迭代的方法,逐次更新各簇的形心的值,直至得到最好的聚类结果。(形心可以是实际的点,也可以是虚拟点)。通过该算法我们可以将特征相似的数据聚合称为一个数据群组,而将特征相差较大的数据分开。这样说可能会比较抽象,我们会在后面章节中使用到的时候再详细讲解。
1.3.4 关联分析算法
关联分析是除了聚类以外的一种常用无监督学习方法。用于发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。
关联分析最典型的应用就是购物车分析。我们可以从用户的订单中寻找经常被一起购买的商品,并挖掘这些商品之间的潜在关系,这样有助于线上、线下商家指定购买与销售策略。
最著名的关联分析算法就是Apriori算法和FP-growth算法。Apriori算法就是根据有关频繁项集特性的先验知识而命名的。它使用一种称作逐层搜索的迭代方法。而FP-growth是针对Apriori算法的改进算法,通过两次扫描事务数据库,把每个事务所包含的频繁项目按其支持度降序压缩存储到FP-tree中。在以后发现频繁模式的过程中,不需要再扫描事务数据库,而仅在FP-tree中进行查找即可,并通过递归调用FP-growth的方法来直接产生频繁模式,因此在整个发现过程中也不需产生候选模式。该算法克服了Apriori算法中存在的问题,在执行效率上也明显好于Apriori算法,同时能生成有向关系,比Apriori更为泛用。
1.3.5 集成算法
前面几节介绍了常见的机器学习算法,但是我们会发现每个单独的机器学习算法往往只能解决特定场景下的特定问题,如果问题会变得更为复杂,就难以使用一个学习器达到目标。这时候我们就需要集成多个学习器,协同完成机器学习任务。所谓集成学习就是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比使用单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”。
集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,然后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的“弱学习器”。基于该“弱学习器”,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的“强学习器”。
最著名的集成算法就是Boosting类算法,包括AdaBoosting等常用算法。这类算法需要同时训练多个模式,基本思路就是根据训练时的正确率和错误率调整不同学习器的权重,最终预测时使用带权重的投票法产生最终结果。
还有一类集成算法为Bagging类算法,主要思路是分别训练几个不同的模型,然后用模型平均的方法做出最终决策。最著名的Bagging类算法就是随机森林,该算法还融入了随机子空间方法,是以决策树为基础分类器的一个集成学习模型,它包含多个由Bagging集成学习技术训练得到的决策树,当输入待分类的样本时,最终的分类结果由单个决策树的输出结果投票决定。
1.3.6 强化算法
强化学习(reinforcement learning)和我们在前面提到的算法不太一样,其主要用于训练一个可以感知环境的自制感知器,通过学习选择能达到其目标的最优动作。这个很具有普遍性的问题应用于学习控制移动机器人,在工厂中学习最优操作工序以及学习棋类对弈等。
提示
当某个智能体在其环境中做出每个动作时,施教者会提供奖励或惩罚信息,以表示结果状态的正确与否。该智能体的任务就是从这个非直接的,有延迟的回报中学习,以便后续的动作产生最大的累积效应。
——引用自米歇尔(Mitchell T.M.)《机器学习》
最著名的增强学习算法就是Q-Learning算法。由于增强学习算法不在本书讨论范畴,并由于其本身的复杂性,我们在这里只做简单的介绍但不做深入讨论。