集成学习-Task3


记录 DataWhale集成学习的组队学习过程,Task3主要介绍的是方差偏差理论。

泛化误差和经验损失

在机器学习中,我们真正感兴趣的使模型能很好的拟合未知数据,设模型为 f f f,损失函数为 L ( f ( x ) , y ) L(f(x),y) L(f(x),y),带标签的数据由随机变量 X , Y X,Y X,Y独立同分布生成,且联合分布为 P ( X , Y ) P(X,Y) P(X,Y),由概率论的基础知识我们可以知道,损失函数 L ( f ( x ) , y ) L(f(x),y) L(f(x),y)可以看作是随机变量 X , Y X,Y X,Y的函数,度量 L ( f ( x ) , y ) L(f(x),y) L(f(x),y)的均值就是期望,我们把此期望称为期望损失。 R e x p ( f ) = E ( X , Y ) ∼ P ( X , Y ) [ L ( f ( X ) , Y ) ] R_{exp}(f)=\mathbb{E}_{(X,Y)\sim P(X,Y)}[L(f(X),Y)] Rexp(f)=E(X,Y)P(X,Y)[L(f(X),Y)]假设我们已经通过优化算法选择了一个模型 f ∗ f^* f,则模型 f ∗ f^* f泛化误差就是模型的期望损失。 R e x p ( f ∗ ) = E ( X , Y ) ∼ P ( X , Y ) [ L ( f ∗ ( X ) , Y ) ] R_{exp}(f^*)=\mathbb{E}_{(X,Y)\sim P(X,Y)}[L(f^*(X),Y)] Rexp(f)=E(X,Y)P(X,Y)[L(f(X),Y)]我们的目的就找到泛化误差最小的模型。
但是,我们不知道数据真正的联合分布 P ( X , Y ) P(X,Y) P(X,Y),更不可能得到所有的数据,我们真正有的只是某个数据集 D ∗ D^* D,模型在这个确定数据集 D ∗ D^* D上的平均损失称为经验风险 R e m p ( f ) = E ( x , y ) ∼ D ∗ [ L ( x , f ( x ) ) ] R_{emp}(f)=\mathbb{E}_{(x,y)\sim D^*}[L(x,f(x))] Remp(f)=E(x,y)D[L(x,f(x))]我们能做的是将 R e m p ( f ) R_{emp}(f) Remp(f)降低,但 R e m p ( f ) R_{emp}(f) Remp(f)的降低是否能带来 R e x p ( f ) R_{exp}(f) Rexp(f)的降低呢?在PAC理论中,可以使用Hoeffding不等式得到泛化误差 R e x p ( f ) R_{exp}(f) Rexp(f)和经验风险 R e m p ( f ) R_{emp}(f) Remp(f)之间的关系,具体的关系及证明过程可以参考李航老师的《统计学习方法》,根据这个关系我们可以知道把经验风险 R e m p ( f ) R_{emp}(f) Remp(f)降低,泛化误差 R e x p ( f ) R_{exp}(f) Rexp(f)在一定程度上也会降低,这为机器学习打下了理论基础。但是我们发现,在数据集 D ∗ D^* D上将模型 f ∗ f^* f的经验风险降到0,模型在未知的数据上表现不一定好,这引出了机器学习中常用的偏差-方差分解。

偏差-方差分解

这里假设我们处理的是回归问题,且选用的损失函数为平方差损失函数,也即 L ( f ( x ) , y ) = ( y − f ( x ) ) 2 L(f(x),y)=(y-f(x))^{2} L(f(x),y)=(yf(x))2首先,由于噪音干扰,数据集中的标签和样本真实标签可能存在差距,假设对于样本 x \boldsymbol{x} x,其对应的真实的标签为 y y y,某个数据集中的标签为 y D y_{D} yD,用损失函数衡量两者之间的误差为 ( y − y D ) 2 (y-y_{D})^{2} (yyD)2。则我们在所有可能数据集上对误差求平均,就等于将数据集 D D D看作随机变量,求误差函数的期望:
ϵ 2 = E D [ ( y − y D ) 2 ] \epsilon^2=\mathbb{E}_{D}[(y-y_{D})^{2}] ϵ2=ED[(yyD)2]

同一个模型 f f f在不同的数据集上训练出来的结果是不同的,可以把模型 f f f看作是关于数据集 D D D的函数,真实的数据可以分为无数个样本个数相同的子数据集 D 1 , D 2 , … , D ∞ D_1,D_2,\dots,D_{\infty} D1,D2,,D无数个子数据集就对应着无数个模型,对于相同的输入 x \boldsymbol{x} x,每个模型都有不同的输出,记作 f ( x ; D ) f(\boldsymbol{x};D) f(x;D),可以看作是随机变量 D D D的函数,无数个模型在 x \boldsymbol{x} x上的平均输出值可以看作对这个函数求期望:
f − ( x ; D ) = E D [ f ( x ; D ) ] \overset{-}f(\boldsymbol{x};D)=\mathbb{E}_{D}[f(\boldsymbol{x};D)] f(x;D)=ED[f(x;D)]
f − ( x ; D ) \overset{-}f(\boldsymbol{x};D) f(x;D)代表模型整个拟合能力,我们在开头已经提到,这里使用平方差作为损失函数,所以模型 f f f的损失(这里也记为偏差,即衡量模型 f f f与真实标签的偏差):
b i a s ( x ) = ( f − ( x ; D ) − y ) bias(\boldsymbol{x})=(\overset{-}f(\boldsymbol{x};D)-y) bias(x)=(f(x;D)y)

有了期望,我们自然可以计算方差,作为衡量着无数个模型输出的差距:
v a r ( x ) = E D [ ( f ( x ; D ) − f − ( x ; D ) ) 2 ] var(\boldsymbol{x})=\mathbb{E}_{D}[(f(\boldsymbol{x};D)-\overset{-}f(\boldsymbol{x};D))^2] var(x)=ED[(f(x;D)f(x;D))2]
偏差-方差分解说的就是,某个模型的泛化误差 R e x p ( f ) R_{exp}(f) Rexp(f)可以进行分解,具体为:
R e x p ( f ) = E ( X , Y ) ∼ P ( X , Y ) [ ( f ( x − y ) 2 ) ] = E D [ ( f ( x ; D ) − y ) 2 ] R_{exp}(f) =\mathbb{E}_{(X,Y)\sim P(X,Y)}[(f(\boldsymbol{x}-y)^2)]=\mathbb{E}_{D}[(f(\boldsymbol{x};D)-y)^2] Rexp(f)=E(X,Y)P(X,Y)[(f(xy)2)]=ED[(f(x;D)y)2]
具体的推导过程可以参考《机器学习》,经过公式化简后有:
R e x p ( f ) = b i a s ( x ) 2 + v a r ( x ) + ϵ 2 R_{exp}(f)=bias(\boldsymbol{x})^2+var(\boldsymbol{x})+\epsilon^2 Rexp(f)=bias(x)2+var(x)+ϵ2
根据此理论,我们可以做以下分析:

  1. 对于同一个模型来说,模型在训练集上训练的越充分,则这个模型的偏差就越小,但是模型会过度拟合当前数据集,会把当前数据集中的噪音当作特征,很显然,这个模型在其他数据集中表现肯定不好,这就是低偏差-高方差,是模型过拟合的表现。
  2. 对于不同的模型来说,模型VC维越大,说明模型越复杂,学习能力强,容易过拟合。在同一个数据集上,复杂度大的模型偏差低,方差高。我们知道,树模型的复杂度就很大,所以树模型方差高,bagging对基学习器的要求就是低偏差高方差,树模型正好满足这个特点,所以随机森林一直是bagging的代表算法,而像逻辑回归这种模型复杂度低的,偏差高方差低,使用bagging结果就不理想了。

降低方差的方法

我们都希望使用更稳健的模型,即模型的方差低,一些常用的方法有:
1.去除冗余特征,降低特征空间的维度。维度越高,过拟合风险越大,所以要选取最重要的维度。可以使用PCA或LDA降维,也可以做特征选择,教材中介绍的逐步回归法就是一个特征选择的方法。

2.正则化,在训练时使用结构风险函数替代经验风险函数。结构风险函数 R s r m R_{srm} Rsrm就是经验风险加上正则化项,用于控制模型复杂度,模型越复杂,正则化项越大。常用的是L1正则化和L2正则化,一个经常被提到的知识点是L1正则化更容易产生稀疏解,加了正则项后去寻找最优模型就等于在解决一个约束优化问题,L1正则化约束为菱形,L2正则化约束为圆形,最优的参数为椭圆形曲线与菱形和圆形区域相切的点,很明显L1正则化的交点更容易在坐标轴上,所以会产生稀疏解。
在这里插入图片描述

3.交叉验证。交叉验证相当于多次在不同数据集上进行实验求平均来衡量模型,会抵消模型在单个数据集上的随机性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值