机器学习的发展历程机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,专门用于研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径。
从上世纪五十年代初开始,机器学习已经发展了将近70年时间。从机器学习的发展历程来看,主要有如下几个重要时间线。
机器学习发展历程
进入21世纪后,在数据量更大大,机器计算能力更强等原因下,深度学习正式兴起。
机器学习的分类我们一般将机器学习分为四大类:监督学习、非监督学习、半监督学习和强化学习。
监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。在监督学习的过程中会提供对错指示,通过不断地重复训练,使其找到给定的训练数据集中的某种模式或规律,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,主要应用于分类和预测。其最大的特点就是使用已标记的数据作为数据集。
非监督学习与监督学习相对应,两者的区别在于非监督学习无须对数据集进行标记,即没有输出。它需要从数据集中发现隐含的某种结构,从而获得样本数据的结构特征,判断哪些数据比较相似。因此,非监督学习目标不是告诉计算机怎么做,而是让它去学习怎样做事情。其最大的特点就是使用未标记的数据作为数据集。
半监督学习是监督学习与非监督学习的结合,它在训练阶段同时使用未标记的数据和已标记的数据,不仅要学习属性之间的结构关系,也要输出分类模型进行预测。
强化学习又叫做再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
机器学习的常用模型、损失函数与优化方法机器学习可以解释成数据+模型+优化方法,其中模型发挥着极其重要的作用。经典的机器学习模型算法包括线性算法(线性回归、逻辑回归等)、决策树(ID3、C4.5、CART)、SVM、朴素贝叶斯算法、kNN、聚类算法(k-Means等)、随机森林、降维算法、梯度增强算法等。
机器学习发展至今,已经有许多损失函数被用于各种模型学习之中,其中最常见的包括0-1损失函数、绝对值损失函数(L(y, f(x))=|y-f(x)|)、平方损失函数(L(y, f(x))=(y-f(x))^2)、log对数损失函数(L(y, f(x))=log(1+e^{-yf(x)}))、指数损失函数(L(y, f(x))=exp(-yf(x)))和Hinge损失函数(L(w, b)=max{0, 1-yf(x)})。(上述公式中,y为标签值,f(x)为预测值。)
在机器学习的优化方法中,梯度下降是最常用的优化方法之一。它是使用梯度的反方向来更新模型需要学习的参数,从而使得目标函数达到最小化的一种优化方法,我们也常常称之为梯度更新。常见的梯度更新方法包括梯度下降(全量)、随机梯度下降、小批量梯度下降、引入动量的梯度下降、自适应学习率的Adagrad算法和牛顿法。
机器学习的评价指标机器学习在训练模型的过程中针对不同的应用场景往往需要使用不同的评价指标来指导模型进行更好的学习,最常见有如下几种。
MSE(均方误差):是真实值与预测值的差值的平方再求和平均。常被用于线性回归的损失函数
MSE公式
MAE(平均绝对误差):是绝对误差的平均值,可以更好地反映预测值误差的实际情况。是用于回归问题的损失函数。
MAE公式
RMSE(均方根误差):是衡量观测值与真实值之间的偏差。常用于回归问题。
RMSE公式
混淆矩阵:是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。
混淆矩阵
其中,TP(真正例)表示真实类别为正例,预测类别为正例;FN(假负例)表示真实类别为正例,预测类别为负例;FP(假正例)表示真实类别为负例,预测类别为正例;TN(真负例)表示真实类别为负例,预测类别为负例。由以上混淆矩阵可以延伸出许多可用于分类问题的评价指标。
真正率:TPR=TP/(TP+FN)。假负率:FNR=FN/(TP+FN)。假正率:FPR=FP/(FP+TN)。真负率:TNR=TN/(FP+TN)。准确率:ACC=(TP+TN)/(TP+FN+FP+TN)。精准率:P=TP/(TP+FP)。召回率:R=TP/(TP+FN)。F1-Score:F_1=2/(1/P+1/R)。ROC曲线:采用不分类阈值时的TPR(真正率)与FPR(假正率)围成的曲线,以FPR为横坐标,TPR为纵坐标。如果ROC是光滑的,那么基本可以判断没有太大的overfitting。AUC:就是ROC曲线下的面积,计算从(0, 0)到(1, 1)之间整个ROC曲线以下的整个二维面积,用于衡量二分类问题及机器学习算法性能的泛化能力。其另一种解读方式可以是模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。使用AUC判断分类器(预测模型)优劣的标准如下:1)AUC=1是完美的分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。2)0.5<AUC<1,优于随机猜测。这个分类器妥善设定阈值的话,能有预测价值。3)AUC<0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
ROC曲线
上图为一个ROC曲线示例,蓝色曲线就是一条ROC曲线,坐标(0, 0)到(1, 1)之间整个ROC曲线以下的整个二维面积就是AUC,上图的AUC值为0.8641,可见其模型是一个比随机猜测要好的分类器。
机器学习的模型选择在实际的机器学习任务中,我们往往会对同一个问题使用多种算法来进行选择,即使是使用同一个算法,当使用不同参数配置时,也会产生不同的模型。因此,我们常常会进行模型选择,最常用的模型选择方法就是交叉验证。将所有数据分为训练集、验证集和测试集三部分。其中,验证集不仅在选择模型时有用,在超参数选择、正则项参数和评价模型中也很有用。
k-折叠交叉验证步骤:假设训练集为S,首先将训练集等分为k份:{S1, S2, ..., Sk},然后每次从集合中拿出k-1份进行训练并利用集合中剩下的那一份来进行验证并计算损失值,最后共得到k次测试得到的损失值,并选择平均损失值最小的模型。
方差与偏差、欠拟合与过拟合偏差(bias)是当前模型的平均预测与我们需要预测的实际结果之间的差异。一个高bias的模型表明它对训练数据的关注较少。这使得模型过于简单,在训练和测试中都没有达到很好的准确性。这种现象也被称为欠拟合。
方差(Variance)可以简单理解为模型输出在一个数据点上的分布。Variance越大,模型越有可能密切关注训练数据,而不提供从未遇到过的数据的泛化。因此,该模型在训练数据集上取得了非常好的结果,但是与测试数据集相比,结果非常差,这就是过拟合的现象。
模型复杂度-错误率取消
欠拟合一般表示模型对数据的表现能力不足,通常是模型的复杂度不够,并且bias高,训练集的损失值高,测试集的损失值也高。
过拟合一般表示模型对数据的表现能力过好,通常是模型的复杂度过高,并且Variance高,训练集的损失值低,测试集的损失值高。
方差与偏差
上图中,圆的中心(红色部分)是一个模型,它完美地预测了精确的值。事实上,我们从来没有发现过这么好的模型。当我们离圆的中心越来越远,我们的预测就越来越糟。我们可以改变模型,这样我们就可以尽可能地增加落入圆中心的模型猜测的数量。
如果我们的模型过于简单,参数很少,那么它可能就会产生高偏差和低方差。如果我们的模型有大量的参数,那么它就可能会有高方差和低偏差。因此,我们需要在偏差值和方差值之间取得平衡,这也是我们在设计算法时计算模型复杂度的基础。
机器学习的参数调优在机器学习中,通过参数调优,可以让我们的模型工作得更好。常用的参数调优方法有网格搜索、随机搜索和贝叶斯优化算法。
网格搜索通过穷举搜索的方式在所有候选的参数中选择,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果
随机搜索与网格搜索相比,并未尝试所有参数值,而是从指定的分布中采样固定数量的参数设置。它的理论依据是,如果随机样本点集足够大,那么也可以找到全局的最大或最小值,或它们的近似值。通过对搜索范围的随机取样,随机搜索一般会比网格搜索要快一些。
贝叶斯优化算法用于机器学习调参的主要思想是,给定优化的目标函数(广义的函数,只需指定输入和输出即可,无需知道内部结构以及数学性质),通过不断地添加样本点来更新目标函数的后验分布,直到后验分布基本贴合于真实分布。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。