3. 机器学习模型

机器学习模型

学习笔记 - 杨正洪;郭良越;刘玮.人工智能与大数据技术导论 清华大学出版社.Kindle版本.

机器学习模型概念

下面通过一个具体的案例来认识机器学习中的重要概念——模型,了解模型的作用及它是怎样运作的。表5-1是从美国城市餐厅小费数据集中节选的数据,我们通过图5-1的关系图来观察小费与餐费之间的关系。
小费与餐费关系图

用x轴表示餐费,y轴表示小费,通过观察散点图可以看出,y随着x的增加而增加,并且近似成比例增加。熟悉美国小费制度的读者应该知道,小费通常和餐费成正比,根据顾客对用餐服务的满意程度,金额一般为餐费的10%~20%。因此,我们考虑用线性表达式来刻画x与y之间的关系:

y=a0+a1*x  (1)

上述公式就是最简单的线性回归(LinearRegression)模型。因为只有一个自变量x,所以叫作一元线性回归。公式(1)所表述的y与x之间的关系就是这个任务中我们所用的模型。对于模型的概念,我们可以这样理解,它刻画了因变量y和自变量x之间的客观关系,即y与x之间存在这样一种形式的客观规律在约束。具
体来说,y约等于某个数乘以x,再加上另一个数。

使用这个模型,就意味着我们认定样本数据服从这样一个规律。换句话说,模型是对处理变量关系的某种假设。在机器学习中,a1叫作权重(weight)a0叫作偏差(bias),x是一个特征(feature),而y是预测的标签。训练一个模型就是从训练数据中确定所有权重和偏差的最佳值。如图5-2所示,箭头部分表示了预测值和真实值之间的差距,这叫误差(loss)。如果这个模型很完美,那么误差应该接近0。训练的目标是找到让误差最小的权重和偏差。
误差

误差和均方误差MSE

假设我们有一组带标签的样本(x,y),如表5-2所示。
在这里插入图片描述
让我们尝试用下面两个模型对原样本数据进行预测:
模型1:y=x+4
模型2:y=2x
第一个模型的预测效果如表5-3所示。
在这里插入图片描述
第二个模型的预测效果如表5-4所示。在这里插入图片描述

上面两个表中的误差是预测值与真实值之间的距离,描述了预测值与真实值之间的偏离程度。为了评价模型的拟合效果,我们需要计算均方误差(MeanSquaredError,MSE)。均方误差是所有误差平方的平均值。例如上述两个模型的均方误差分别为:

MSE1=(12+02+02+(-1)2+(-3)^2)/5=11/5
MSE2=((-1)2+(-1)2+12+12+0^2)/5=4/5

均方误差通常简称为MSE,是回归模型中极为重要的概念,它描绘了整个考察的样本集中预测值和实际值的平均偏离程度。在回归任务中,我们希望MSE尽可能的小。MSE越小,说明模型的拟合效果越好。就上述两个模型相比,y=2x的拟合效果更优,也就是说它更接近样本数据的分布规律。

误差函数

误差函数是为了评估模型拟合的好坏,通常用误差函数来度量拟合的程度。误差函数极小化意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,误差函数可以是上述的均方误差。

模型与算法的区别

在前文中,我们对于模型和算法这两个概念的界定是比较模糊的,事实上,模型和算法这两个概念是有区别的。对于线性回归这个例子来说可以这样理解,用来描述问题、定义变量之间关系的公式(1)是模型本身,而用来求解模型中的参数的“最小二乘法”则可以看成是算法。总体来说,模型用来描述要解决的问题,通常为一个或一系列数学表达式;而算法则是解决这个问题的过程,用于求解模型中待定的参数,经常会通过编程来实现。

针对一个模型,可以有多种不同的算法来求解。拿线性回归来说,模型中a0,a1,…,am是需要求解的参数,而“最小二乘法”(又称最小平方法,最小化误差的平方)只是其中最经典的一种求解方法,除了“最小二乘法”之外,还可以通过极大似然估计等方法来计算。不同模型会有各自适合的算法,比如求解深度学习模型中的参数会用到著名的梯度下降算法。不同的算法可能会有截然不同的思想,比如极大似然估计是用统计学思想来估计的,而梯度下降法的思路则是利用计算机反复迭代找到最优值。

迭代法

迭代法是用计算机解决问题的一种基本方法。比如,公式(1),对于一个数据集,我们要求解最佳的a0和a1,使得它的误差最小(比如使用MSE来判断)。那么,迭代法就是利用计算机运算速度快、适合做重复性操作的特点,让计算机尝试一组一组的参数值(a0,a1),在同一个数据集上重复计算误差。在每次执行一组参数后,就换到一组新的参数(见图5-3)。机器学习算法能够使用这个迭代过程来训练模型。整个迭代一直继续,直到找到一组误差足够小的参数值。
在这里插入图片描述
简单来说,利用迭代算法解决问题需要做好以下三个方面的工作。

  1. 确定迭代变量
    在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。在上述例子中,a0和a1是两个迭代变量。
  2. 建立迭代关系式
    所谓迭代关系式,是指从变量(如a0)的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
  3. 对迭代过程进行控制
    在什么时候结束迭代过程是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是一个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。在机器学习中,这个结束的条件就是误差(比如MSE)。只要误差达到要求,就可以结束迭代。一般情况下,误差不再有大的变化,我们就可以终止迭代,然后说模型已经是收敛(converged)的了。

梯度下降法(Gradient Descent)

在迭代法中,针对上图5-3中的“更改模型参数值”,我们并没有说明下一组新参数值怎么出来。假定我们有足够的时间来遍历各个a1的可能值,那么对于线性回归函数来说,误差和a1值之间的关系如图5-4所示。
在这里插入图片描述
图5-4 回归的收敛误差的最小值就是误差函数收敛的位置。如果我们尝试每个a1值去找到这个收敛点,效率就低了。在机器学习中,有一个更好的方法,那就是梯度下降法(Gradient Descent)。在这里插入图片描述
如图5-5所示,在梯度下降法中,首先选择一个a1的起点值。这个起点值可以是0,也可以是一个随机数,这些都没关系,我们的目的是求误差的最小值。下面来看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的方向向下走一步,然后继续求解当前位置的梯度,从这一步所在的位置沿着最陡峭最易下山的方向走一步。这样一步步地走下去,一直走到山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果误差函数是凸(convex)函数,梯度下降法得到的解就一定是全局最优解,因为最小值的地方就是梯度为0的地方。

步长和超参数

从上面的例子可以看出,下山或者寻找最小值取决于两个因素:
(1)每步你走哪个方向。如图5-4所示,从起点到下一个点,选择负梯度方向。(2)每步你走多远,这叫步长(stepsize,也叫learningrate)。步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度,如图5-5所示。

在机器学习算法中,在最小化误差函数时,通过梯度下降法来一步步地迭代求解,最终得到最小化的误差和模型参数值。上述的步长是一个超参数(Hyperparameter)。所谓超参数,是模型的一些细化特征。超参数与参数不同,它们本质的区别是,参数是在模型中训练出来的,而超参数是不可被训练的。绝大多数机器学习模型都有超参数,超参数是需要我们在训练之前人为指定的。

三类梯度下降法

三类梯度下降法有三类常见的梯度下降法,下面一一进行介绍。

  • 批量梯度下降法批量梯度下降法(Batch Gradient Descent)是梯度下降法最常用的形式,具体做法就是在更新参数时使用所有的样本来进行更新,这个方法对应于前面的线性回归的梯度下降算法,也就是说前面的梯度下降算法就是批量梯度下降法。由于我们有m个样本,这里求梯度的时候就用了所有m个样本的梯度数据。
  • 随机梯度下降法随机梯度下降法(Stochastic Gradient Descent)其实和批量梯度下降法的原理类似,区别在于求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。随机梯度下降法和批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说,随机梯度下降法由于每次仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法仅用一个样本决定梯度方向,导致解很有可能不是最优的。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快地收敛到局部最优解。那么,有没有一个中庸的办法能够结合两种方法的优点呢?有,这就是小批量梯度下降法。
  • 小批量随机梯度下降法
    小批量随机梯度下降法(Mini-Batch Stochastic Gradient Descent,Mini-BatchSGD)是批量梯度下降法和随机梯度下降法的折中,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取10到1000之间的随机数,当然根据样本的数据,可以调整这个x的值。

模型的拟合效果

欠拟合与过拟合

在如图5-8所示的分类问题中,我们的目标是找到一个分类器,分割两种标签的数据。我们用肉眼不难看出,蓝色标签(圆圈)的点集中在图的右上区域,中间的图是最为合适的分类器。左图用一条直线分割平面,模型过于简单,对直线右侧的红色标签数据(叉叉)刻画较差,属于欠拟合(underfit);而右图则用了比较复杂的模型,对样本集的数据全部照顾,属于过拟合(overfit)。过拟合是参数过多,对训练集的匹配度太高、太准确,以至于在后面的预测过程中可能会导致预测值非常偏离合适的值,预测非常不准确。中间的图是合适的拟合。
在这里插入图片描述

欠拟合和过拟合都是应当尽可能避免的。欠拟合会让我们的模型产生较大的偏差(bias),这里的偏差是指我们的模型描绘的数据分布与数据的客观分布之间存在差异。欠拟合通常是因为我们使用了过于简单的模型,比如线性模型,或者训练的时间不够。而过拟合虽然将样本集的误差降到最低,但会使模型产生很大的方差(variance),方差大意味着当新的数据进来时,模型的预测准确率波动会比较大,虽然训练集预测能力很好,但对未知的测试集预测效果可能会很差。过拟合通常是因为我们的模型过于复杂。

事实上,在实际应用中,过拟合的问题远远多于欠拟合。在解决问题时,我们几乎总是要考虑和处理过拟合,但很少会遇到欠拟合。这是因为我们在训练模型时经常会采用过于复杂的模型,使用了太多的特征(features)来训练,对训练集的匹配度非常高(误差几乎为零),但是不能推广到其他未知数据上,也就是对于训练集之外的输入不能做出正确的预测。

模型的评估与改进

要评价一个机器学习模型的表现,我们需要一个具体的指标来评估。一个确实的量化指标对我们评价和选择模型具有重要的参考意义。对于回归模型来说,常用的指标为MSE、MAE等,对于分类模型,常用指标包括准确率、精确率、召回率、F1-Score、ROC曲线和AUC等。

分类模型的评估

绝大多数分类任务都是二分类任务(binary classification problem),即类别只有两种:0或1。对于一个二分类问题来说,根据预测值和真实值分类,无外乎出现表5-5所示的4种情况。
在这里插入图片描述
对于分类问题,最直观也是最简单的评价指标就是准确率(Accuracy),即样本中有多大比例被我们预测正确。
准确率等于预测正确的样本数除以总样本数,即(TP+TN)/(TP+TN+FP+FN)。

相对应的一个概念是错误率(Error/MisclassificationRate),或者叫误差率,是指我们预测错误的样本数所占的比例,误差率=1-准确率。

使用准确率或误差率作为评价指标的时候,意味着我们将两种分类类别平等对待。但现实中我们遇到的二分类任务中,通常两种分类类别并不像“性别为男或女”这样的对等关系,而是有正负之分。我们将某件事情发生、具有肯定性结果对应为类别1,或称为具有正值,比如药检呈阳性、天气预报会下雨、信用贷款会违约等。与之相对应的分类结果归为类别0,即事件未发生、具有否定性的结果。

当我们要差别对待类别0和类别1时,就需要懂得精确率、召回率等概念,这也是我们引入表5-5的原因。

精确率(Precision)的定义是所有我们预测为正的样本中确实为正值的比率。精确率=TP/(TP+FP)

召回率(Recall)是指所有真实值为正的样本中被我们预测为正值的比率。召回率=TP/(TP+FN)

F1-Score综合考虑精确率与召回率,等于二者的调和平均值,定义如下:F1-Score=2precisionrecall/(precision+recall)

精确率和准确率看似只在分母上有细微差别,其实表达的意思截然不同,它们反映了分类器性能的两个方面。之所以有两个概念,是因为不同问题中我们关注的侧重点不同。

我们来看以下两个场景。
(1)罪犯追踪在人脸识别罪犯的案例中,通常我们会秉着“不错怪任何好人”的原则,希望我们识别出来的“罪犯”确实全部是真的罪犯。因此,我们要让精确率尽可能高,判断出的正值不能有失误。虽然这样做可能会使得一些嫌犯“逃脱”,但仍然是这个任务中可以接受的结果,总比错将好人当作犯人产生不必要的麻烦要好得多。
(2)地震检测对于地震的预测则恰恰相反,我们希望当地震真实发生时我们能预测出来,宁可100次误报95次,将5次地震全部预测到,而不要只预测10次,结果漏掉5次中的2次。在这个情形中,我们希望召回率越高越好,哪怕牺牲一定的精确率。

回归模型的拟合效果评估

相比分类模型,回归模型的评价指标则比较简单,最常使用的指标就是前面提到的MSE。回忆一下,MSE是估计值与真实值之差的平方和取均值再开平方根,用来量化预测值和真实值的偏离程度。除了MSE之外,有时也会用MAE(MeanAbsoluteError,平均绝对误差)。MAE是估计值与真实值之差的绝对值取均值。MAE看起来似乎比MSE更直观,但远不及MSE常用。这主要是因为MSE作为误差(损失)函数是可导的,方便通过求导来找最小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值