机器学习算法可以按照不同的标准来进行分类。比如按函数f(x,θ)的不同,机器学习算法可以分为线性模型和非线性模型;按照学习准则的不同,机器学习算法也可以分为统计方法和非统计方法。按照训练样本提供的信息以及反馈方式的不同,机器学习算法可以分为以下几类。
监督学习中的数据集是有标签的,对于给出的样本是有答案的。如果机器学习的目标是通过建模样本的特征x和标签y之间的关系:f(x,θ)或p(y|x,θ),并且训练集中每个样本都有标签,那么这类机器学习称为监督学习。
根据标签类型的不同,又可以将其分为分类问题和回归问题两类。前者是预测某一样东西所属的类别(离散的),比如给定一个人的身高、年龄、体重等信息,然后判断性别、是否健康等;后者则是预测某一样本所对应的实数输出(连续的),比如预测某一地区人的平均身高。大部分模型都是属于监督学习,包括线性分类器、支持向量机等。常见的监督学习算法有:k-近邻算法(k-NearestNeighbors,kNN)、决策树(DecisionTrees)、朴素贝叶斯(NaiveBayesian)等。监督学习的基本流程如图1所示。
跟监督学习相反,无监督学习中数据集是完全没有标签的,依据相似样本在数据空间中一般距离较近这一假设,将样本分类。常见的无监督学习算法包括:稀疏自编码(SparseAutoEncoder)、主成分分析(PrincipalComponentAnalysis,PCA)、K-Means算法(K均值算法)、DBSCAN算法(Density-BasedSpatialClusteringofApplicationswithNoise)、最大期望算
法(Expectation-Maximizationalgorithm,EM)等。利用无监督学习可以解决的问题可以分为关联分析、聚类问题和维度约减。
关联分析是指发现不同事物之间同时出现的概率。它被广泛地应用在购物篮分析中。如果发现买面包的客户有百分之八十的概率买鸡蛋,那么商家就会把鸡蛋和面包放在相邻的货架上。
聚类问题是指将相似的样本划分为一个簇(Cluster)。与分类问题不同,聚类问题预先并不知道类别,自然训练数据也没有类别的标签。
维度约减是指减少数据维度的同时保证不丢失有意义的信息。利用特征提取方法和特征选择方法,可以达到维度约减的效果。特征选择是指选择原始变量的子集。特征提取是将数据从高维度转换到低维度。广为熟知的主成分分析算法就是特征提取的方法。
非监督学习的基本处理流程如图2所示:
可以看到相对于监督学习,非监督学习的过程中没有监督者(Supervisor)的干预。图3是一个典型的监督学习和非监督学习的对比,左侧是对一群有标签数据的分类,而右侧是对一群无标签数据的聚类。
无监督学习在过去十年间的发展主要集中在生成模型(GenerativeModel)和表征学习(RepresentationLearning)两个方面。对于生成模型,变分自编码机(VariationalAutoencoder,VAE)和生成式对抗网络(GenerativeAdverserialNets,GAN)相继成为无监督复杂概率分布学习的主流方法,并由此衍生和发展出大量的无监督生成模型。对于表征学习,以双向生成式对抗网络(BiGAN)、深度聚集(DeepCluster)、逆约束自编码机插值(ACAI)和动量对比(MoCo)为代表的方法充分结合了深度神经网络强大的特征表示能力,利用无监督数据进行表征学习,为后续更复杂多样的监督学习任务打下了坚实的数据表征基础。
此外,自监督学习(Self-supervisedLearning)近年来也逐渐成为无监督表征学习一种新思路,它试图通过根据数据本身的结构或特性人为地构造标签,从而实现监督式的模型学习。
半监督学习是监督学习与无监督学习相结合的一种学习方法。半监督学习一般针对的问题是数据量大,但是有标签数据少或者说标签数据的获取很难很贵的情况,训练的时候有一部分是有标签的,而有一部分是没有的。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确,而且训练成本更低。常见的两种半监督的学习方式是直推学习(Transductivelearning)和归纳学习(Inductivelearning)。直推学习(Transductivelearning):没有标记的数据是测试数据,可以用测试的数据进行训练。需要注意,这里只是用了测试数据中的特征(Feature)而没有用标签(Label),所以并不是一种欺骗的方法。归纳学习(Inductivelearning):没有标签的数据不是测试集。半监督学习的基本流程如图4所示:
监督学习、半监督学习和非监督学习之间的区别如图6所示。
可以看到,图5(a)中,红色三角形数据和蓝色圆点数据为标注数据;图5(b)中,绿色的小圆点为非标注数据。图5(c)显示监督学习将有标签的数据进行分类;而半监督学习如图5(d)中部分是有标签的,部分是没有标签的,一般而言,半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。
强化学习从动物学习、参数扰动自适应控制等理论发展而来,基本原理是:如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是在每个离散状态发现最优策略以使期望的折扣奖赏和最大。
强化学习在机器人学科中被广泛应用。在与障碍物碰撞后,机器人通过传感器收到负面的反馈从而学会去避免冲突。在视频游戏中,可以通过反复试验采用一定的动作,获得更高的分数。Agent能利用回报去理解玩家最优的状态和当前应该采取的动作。
图6采用一只老鼠来模拟强化学习中的Agent,其任务是走出迷宫,每走一步都有一个方法来衡量其走的好与坏,基本学习过程是当其走得好的时候就给其一定的奖励(如一块蛋糕)。通过这种方式,Agent在行动评价的环境中获得知识,改进行动方案以适应环境。
在机器学习中,有一组输入变量(x)用于确定输出变量(y)。输入变量和输出变量之间存在某种关系,机器学习的目标是量化这种关系。
在线性回归中,输入变量(x)和输出变量(y)之间的关系表示为y=ax+b的方程。因此,线性回归的目标是找出系数a和b的值。这里,a是直线的斜率,b是直线的截距。图7显示了数据集的x和y值,线性回归的目标是拟合最接近大部分点的线。
CART是决策树的一个实现方式,由ID3,C4.5演化而来,是许多基于树的bagging、boosting模型的基础。CART可用于分类与回归。CART是在给定输入随机变量x条件下输出随机变量y的条件概率分布,与ID3和C4.5的决策树所不同的是,ID3和C4.5生成的决策树可以是多叉的,每个节点下的叉数由该节点特征的取值种类而定,比如特征年龄分为(青年,中年,老年),那么该节点下可分为3叉。而CART为假设决策树为二叉树,内部结点特征取值为“是”和“否”。左分支取值为“是”,右分支取值为“否”。这样的决策树等价于递归地二分每一个特征,将输入空间划分为有限个单元,并在这些单元上预测概率分布,也就是在输入给定的条件下输出条件概率分布。
随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。它包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林是一种灵活且易于使用的机器学习算法,即便没有超参数调优,也可以在大多数情况下得到很好的结果。随机森林也是最常用的算法之一,因为它很简易,既可用于分类也能用于回归。
其基本的构建算法过程如下:1.用N来表示训练用例(样本)的个数,M表示特征数目。2.输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。3.从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。4.对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。
根据这m个特征,计算其最佳的分裂方式。5.每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后被采用)。一个简单的随机森林算法示意如下:
随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的Bagging思想。
逻辑回归最适合二进制分类(y=0或1的数据集,其中1表示默认类)例如:在预测事件是否发生时,发生的事件被分类为1。在预测人会生病或不生病,生病的实例记为1)。它是以其中使用的变换函数命名的,称为逻辑函数h(x)=1/(1+e-x),它是一个S形曲线。
在逻辑回归中,输出是以缺省类别的概率形式出现的。因为这是一个概率,所以输出在0-1的范围内。输出(y值)通过对数转换x值,使用对数函数h(x)=1/(1+e-x)来生成。然后应用一个阈值来强制这个概率进入二元分类。
图9判断了肿瘤是恶性还是良性。默认变量是y=1(肿瘤=恶性);x变量可以是肿瘤的信息,例如肿瘤的尺寸。如图所示,逻辑函数将数据集的各种实例的x值转换成0到1的范围。如果概率超过阈值0.5(由水平线示出),则将肿瘤分类为恶性。
逻辑回归的目标是使用训练数据来找到系数b0和b1的值,以使预测结果与实际结果之间的误差最小化。这些系数是使用最大似然估计来计算的。
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。通过以上定理和“朴素”的假定,可知:P(Category|Document)=P(Document|Category)*P(Category)/P(Document)朴素贝叶斯的基本方法:在统计数据的基础上,依据条件概率公式,计算当前特征的样本属于某个分类的概率,选择最大的概率分类。
对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。其计算流程表述如下:(1)x={a1,a2,...,am}为待分类项,每个ai为x的一个特征属性(2)有类别集合C={y1,y2,...,yn}(3)计算P(y1|x),P(y2|x),...,P(yn|x)(4)如果P(yk|x)=max{P(y1|x)
kNN(k-NearestNeighbor)的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。kNN方法在做类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最
近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。如图10是kNN算法中,k等于不同值时的算法分类结果:
简单来说,kNN可以看成:有一堆已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的k个点,看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。
AdaptiveBoosting或称为AdaBoost,是多种学习算法的融合。它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最终的决策分类器。
AdaBoost是最常用的算法。它可用于回归或者分类算法。相比其他机器学习算法,它克服了过拟合的问题,通常对异常值和噪声数据敏感。为了创建一个强大的复合学习器,AdaBoost使用了多次迭代。因此,它又被称为“AdaptiveBoosting”。通过迭代添加弱学习器,AdaBoost创建了一个强学习器。一个新的弱学习器加到实体上,并且调整加权向量,作为对前一轮中错误分类的样例的回应。得到的结果,是一个比弱分类器有更高准确性的分类器。
AdaBoost有助于将弱阈值的分类器提升为强分类器。图11描述了AdaBoost的执行,只用了简单易于理解的代码在一个文件中就实现了。这个函数包含一个弱分类器和boosting组件。弱分类器在一维的数据中尝试去寻找最理想的阈值来将数据分离为两类。boosting组件迭代调用分类器,经过每一步分类,它改变了错误分类示例的权重。因此,创建了一个级联的弱分类器,它的行为就像一个强分类器。
目前,对Adaboost算法的研究以及应用大多集中于分类问题,同时近年也出现了一些在回归问题上的应用。Adaboost系列主要解决了:两类问题、多类单标签问题、多类多标签问题、大类单标签问题和回归问题。它用全部的训练样本进行学习。
K-均值是著名聚类算法,它找出代表聚类结构的k个质心。如果有一个点到某一质心的距离比到其他质心都近,这个点则指派到这个最近的质心所代表的簇。依次,利用当前已聚类的数据点找出一个新质心,再利用质心给新的数据指派一个簇。
注:图12中用“x”表示聚类质心,用点表示训练样本:(a)原始数据集;(b)随机初始化聚类质心;(c-f)k-均值迭代2次的示意图。
在每次迭代中每个训练样例都被指派到一个最近的聚类质心,每个聚类质心被移动到分配给它的点的平均值的位置。
支持向量机(SupportVectorMachine,SVM)是一类按监督学习(SupervisedLearning)方式对数据进行二元分类(BinaryClassification)的广义线性分类器(GeneralizedLinearClassifier),其决策边界是对学习样本求解的最大边距超平面(Maximum-MarginHyperplane)。基本思想是找到集合边缘上的若干数据(称为支持向量(SupportVector)),用这些点找出一个平面(称为决策面),使得支持向量到该平面的距离最大。由简至繁的SVM模型包括:◆当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;◆当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;◆当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;在分类问题中,很多时候有多个解,如图13左侧所示,在理想的线性可分的情况下其决策平面会有多个。而SVM的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,SVM算法计算出来的分界会保留对类别最大的间距,即有足够的余量,如图5-15右侧所示。
在解决线性不可分问题时,它可以通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。如图14所示,通过核函数的引入,将线性不可分的数据映射到一个高纬的特征空间内,使得数据在特征空间内是可分的。
人工神经网络ANN(ArtificialNeuralNetwork)是由大量处理单元互联组成的非线性、自适应信息处理系统。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。其基本过程可以概述如下:外部刺激通过神经末梢,转化为电信号,传导到神经细胞(又叫神经元);无数神经元构成神经中枢;神经中枢综合各种信号,做出判断;人体根据神经中枢的指令,对外部刺激做出反应。其过程表述如图15所示:
人工神经网络经历了漫长的发展阶段。最早是上个世纪六十年代提出的“人造神经元”模型,叫做“感知器”(Perceptron)。感知机模型是机器学习二分类问题中的一个非常简单的模型。它的基本结构如图16所示。
人工神经网络具有四个基本特征:非线性、非局限性、非常定性和非凸性。
人工神经网络的特点和优越性,主要表现在三个方面:具有自学习功能、具有联想存储功能和具有高速寻找最优解的能力。