开发者学堂课程【机器学习算法 :偏差与方差】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/535/detail/7181
偏差与方差
内容介绍
一、概念引入
二、泛化误差组成推导*
三、偏差与方差的理解
四、偏差和方差的模拟
一、概念引入
偏差、方差与噪声
偏差(Bias):描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,即在样本上拟合的好不好。
方差(Variance):模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
噪声(Noise):为真实标记与数据集中的实际标记间的偏差。通常由多种因素综合影响造成,不可去除。
偏差度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声表达了在当前任务上任何学习算法所能表达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
二、泛化误差组成推导*
以下有一个泛化误差组成的推导,所涉及到的数学问题比较多,只需要知道结论即可,推导过程不必关心。
数据集D中的测试样本x的标记为,就是训练集中样本推断的真实值。y为x的真实标记,就是客观世界中的真实值是y。前面这两个值还是有差异的,在做模型训练的时候通常会直接把作为真实值.f(x;D)为基于数据集D学习的模型f对x的预测值。就是通过对数据集D进行训练,训练之后得到一个结果f,那么f(x;D)就是使用模型f对数据集D进行预测的预测值。
(1)以回归算法为例,其期望预测为:f(x) = ED[f(x;D)]
(2)使用样本相同的不同训练集产生的方差为:var(x) = Ep[(f(x;D)-f(x))2]。就是预测值减去期望值的平方的期望就是方差。在学习方差的时候就是每一个样本的值减掉平均值的平方的概念。
(3)噪声:,回归方程的噪声的期望:=0。 依普西隆等于标记减去真实值的差的平方,这是不可避免的。因为真实标记y到底是什么是不知道的,用来训练的真实值是,而回归方程噪声的期望值为0。因为之前说过噪声是由很多综合因素造成,事实上要搞清楚一点,一般有综合因素影响的值一般符合正态分布,是符合一个=0的正态分布。因为是噪声,所以是在=0的上下进行浮动
(4)期望输出与真实标记的偏差:。这个偏差就等于期望预测减去真实值,这个真实值是客观世界中真实值。
(5)期望泛化误差:预测值和真实值的差的平方和即为泛化误差
就是等于预测值 f(x;D)减去真实值的平方,继续推导,把中间的内容减去一个期望预测再加上一个期望预测,这一步骤是为了拼凑。可以从上面的定义中看到在方差和偏差中都出现了期望预测,原来的公式内容上没有需要进行拼凑。之后结合起来在拆开就等于预测值减期望的平方再加上期望预测值再减上真实预测的平方,最后加上一个交叉项。交叉项数值为零,用红色框住的是交叉项。最后的结果即为前面两项的和,因为要引入真实值,所以要再次进行拼凑引入 y,再展开,同样红色框中的内容为零,结果为方差加上偏差加上噪声的总和。总之泛化误差就是由这几项组成的,第一项是方差就代表着模型的稳定性,第二项是偏差是模型的准确性,第三项是噪声无法去掉。所以泛化误差就取决于模型的方差及偏差的和
三、偏差与方差的理解
偏差:体现的是最终结果和实际结果的差异,偏差越小,和真实结果越接近
方差:体现的是整体水平波动,方差越小,结果稳定性越好
期望的模型结果为:低偏差,低方差
因为偏差和方差都是正的,泛化的误差是由这两项的和决定的,噪声无法去除,所以这两项越小,模型越好。
观察上述左边的图像,以射箭为例。左上角第一个图是一个低方差、低偏差的例子。可以看到每一箭都已经命中靶心,方差说明这些箭波动性小、表现比较稳定,所射中的面积比较小会集中到一起;而偏差是偏离靶心的位置,偏差越低和靶心越接近。低偏差和低方差就导致了所有箭都射在离靶心很近的位置上,这是最希望得到的结果,箭箭中靶心。而右上角对应的一个低偏差、高方差的图,低偏差实际上说所射出的箭均值或是期望值还是很接近靶心的,但由于方差比较高就导致了散步的面积较大,不稳定,所射中的环数忽上忽下。左下角的是一个低方差但高偏差的例子,就是基本射在同一个地方上,散步的面积小;但是高偏差使得距离靶心较远,全部离靶心远说明了和真实值的偏离较大,而整体的波动水平比较小,水平比较稳定。右下角的高偏差和高方差,距离靶心又远并且水平不稳定而造成的乱射。最期望的就是低偏差、低方差。
偏差体现的是拟合程度优劣,通常模型越复杂,偏差越小。当偏差较大时,即预期输出和实际结果偏离较大,称之为欠拟合。
方差体现的是模型的稳定程度。通常模型越简单,方差越小。当方差较大时,模型不稳定,即对一些新数据的预测不稳定。偏差小,方差大的情况即为过拟合。
可以联想到上一章的例子,比如有一个十组数,用七组数来去拟合它,在二次拟合的时候会有许多点距离线还有一段距离,就会有偏差比较大。但是如果用六次曲线的时候,基本上所有的点离曲线比较近,,就是偏差比较小。当然偏差比较大的时候。实际结果偏离较大,过大的话就是欠拟合。
在评估95风险的时候,用一次模型的话风险就很小,比较稳定;但是六次模型,风险预知就比较高了,此时的偏离程度很高,就是不稳定。方差比较大的时候就不稳定,对一些新数据的预测不稳定。偏差小,方差大的情况即为过拟合。偏差小就是在当前数据集上的表现好,经验风险小;方差大在新的数据集上表现不好,这就是过拟合。在曲线图上可以看到横坐标是模型的复杂程度,纵坐标是错误率。绿色的线是方差,同时可以看到随之模型的复杂程度错误率越来越高;红色的线是偏差,偏差随着模型的复杂程度越小。黑色的线是方差和偏差的和就是泛化误差,(噪声不可去除)可以看到在黑线上的最低点就是所期望得到的。所以要找到一个平衡点来获取。
四、偏差和方差的模拟
是所有的数据都符合这个方程,注意这些都是未知的,在这是按照这个方程来创造的一些数据,要知道一个数据集来计算偏差和误差,按照图上步骤。
假设有一个数据总体,其真实模型为一个一元二次的方程:y=x-,这些都是未知的。已知一个数据集,计算偏差和误差。
基本步骤:
准备一个测试集(其值为真实值),选其中一个样本计算偏差和误差
从已知数据集中抽样得到样本 D
使用该样本进行复杂度不同的模型的训练,此处选择了从0次到3次四种模型进行训练
每一个模型都作用于测试集中的指定样本,得到预测值
是否达到预先设置的循环次数
对指定样本计算 Bias、Variance
绘图会得到下图结果,横坐标是模型复杂程度逐渐增加,纵坐标是错误率。红色的线表示的是偏差,模型越复杂偏差越小;蓝色的是方差,模型越复杂方差越大;橙色的是 total error 所有的误差,可以看到 total error 就在模型复杂程度为2的时候,实际上和再造数的真实的逻辑值是一致的。