集成学习(上)Task03:掌握偏差与方差理论

  • 1 偏差-方差的权衡
    • 1.1 背景
    • 1.2 偏差-方差权衡的理论基础
    • 1.3 偏差-方差平衡的具体方法
      • 1.3.1 特征提取法
      • 1.3.2 压缩估计法
      • 1.3.3 降维的方法

引入偏差和方差理论的背景:我们希望建立的机器学习模型在测试数据上表现优异,而不是训练集。


1 偏差-方差的权衡

1.1 背景

当我们的模型的训练均方误差达到很小时,测试均方误差反而很大【过拟合】。下面用一张图说明问题:

1.2 偏差-方差权衡的理论基础

从上图的测试均方误差曲线可以看到:测试均方误差曲线呈现U型曲线,这表明了在测试误差曲线中有两种力量在互相博弈。

一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,因此我们要找到一个方差–偏差的权衡,使得测试均方误差最。

测试集的均方误差的期望可以写为:
E [ ( y 0 − f ( x 0 ) ^ ) 2 ] = Var ⁡ ( f ( x 0 ) ^ ) + [ Bias ⁡ ( f ( x 0 ) ^ ) ] 2 + Var ⁡ ( ϵ ) E[(y_0-\hat{f(x_0)})^2] = {\operatorname{Var} (\hat{f(x_0)})} + {[\operatorname{Bias} (\hat{f(x_0)})]^2} + \operatorname{Var} (\epsilon) E[(y0​−f(x0​)^​)2]=Var(f(x0​)^​)+[Bias(f(x0​)^​)]2+Var(ϵ)

  • 第一项为【模型的方差】,用不同的数据集去估计 f f f时,估计函数的改变量。一般来说,模型的复杂度越高, f f f的方差就会越大。因此,我们希望得到一个稳定的模型,也就是在不同的样本集估计的模型都不会相差太大,即要求 f f f的方差越小越好。
  • 第二项为【模型的偏差】,为了选择一个简单的模型去估计真实函数所带入的误差。它的构成时复杂的。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
  • 第三项为【不可约误差】,表示建模任务的难度,这个量在我们的任务确定后是无法改变的。

方差度量的是同一个模型在不同数据集上的稳定性,偏差度量的是单个模型的学习能力。 泛化性能是由数据的充分性【方差】、学习算法的能力【偏差】以及学习任务本身的难度【误差】所共同决定的。

给定学习任务,为了取得好的泛化性能,则需使
(1) 偏差较小,即能够充分拟合数据;
(2) 使方差较小,即使得数据扰动产生的影响小。

用一个图说明偏差和方差两者的关系:

1.3 偏差-方差平衡的具体方法

1.3.1 特征提取法

(1)训练误差修正
先构造一个特征较多的模型使其过拟合,此时训练误差很小而测试误差很大,那这时我们加入关于特征个数的惩罚。因此,当我们的训练误差随着特征个数的增加而减少时,惩罚项因为特征数量的增加而增大,抑制了训练误差随着特征个数的增加而无休止地减小。

(2)交叉检验
交叉验证可以对测试误差的直接估计。

常用的是 K K K折交叉验证
我们把训练样本分成K等分,然后用 K − 1 K-1 K−1个样本集当做训练集,剩下的一份样本集为验证集去估计由 K − 1 K-1 K−1个样本集得到的模型的精度,这个过程重复 K K K次取平均值得到测试误差的一个估计 C V ( K ) = 1 K ∑ i = 1 K M S E i CV_{(K)} = \frac{1}{K}\sum\limits_{i=1}^{K}MSE_i CV(K)​=K1​i=1∑K​MSEi​。

5折交叉验证如下图:(蓝色的是训练集,黄色的是验证集)
在测试误差能够被合理的估计出来以后,我们做特征选择的目标就是:从 p p p个特征中选择 m m m个特征,使得对应的模型的测试误差的估计最小。对应的方法有:

  • 最优子集选择
    (i) 记不含任何特征的模型为 M 0 M_0 M0​,计算这个 M 0 M_0 M0​的测试误差。
    (ii) 在 M 0 M_0 M0​基础上增加一个变量,计算 p p p个模型的 R S S RSS RSS,选择 R S S RSS RSS最小的模型记作 M 1 M_1 M1​,并计算该模型 M 1 M_1 M1​的测试误差。
    (iii) 再增加变量,计算 p − 1 p-1 p−1个模型的 R S S RSS RSS,并选择RSS最小的模型记作 M 2 M_2 M2​,并计算该模型 M 2 M_2 M2​的测试误差。
    (iv) 重复以上过程直至拟合的模型有 p p p个特征为止,并选择 p + 1 p+1 p+1个模型 { M 0 , M 1 , . . . , M p } \{M_0,M_1,...,M_p \} {M0​,M1​,...,Mp​}中测试误差最小的模型作为最优模型。

  • 向前逐步选择:最优子集选择虽然在原理上很直观,但是随着数据特征维度 p p p的增加,子集的数量为 2 p 2^p 2p,计算效率非常低下且需要的计算内存也很高,在大数据的背景下显然不适用。因此,我们需要把最优子集选择的运算效率提高,因此向前逐步选择算法的过程如下:
    (i) 记不含任何特征的模型为 M 0 M_0 M0​,计算这个 M 0 M_0 M0​的测试误差。
    (ii) 在 M 0 M_0 M0​基础上增加一个变量,计算 p p p个模型的 R S S RSS RSS,选择 R S S RSS RSS最小的模型记作 M 1 M_1 M1​,并计算该模型 M 1 M_1 M1​的测试误差。
    (iii) 在最小的 R S S RSS RSS模型下继续增加一个变量,选择 R S S RSS RSS最小的模型记作 M 2 M_2 M2​,并计算该模型 M 2 M_2 M2​的测试误差。
    (iv) 以此类推,重复以上过程直至拟合的模型有 p p p个特征为止,并选择 p + 1 p+1 p+1个模型 { M 0 , M 1 , . . . , M p } \{M_0,M_1,...,M_p \} {M0​,M1​,...,Mp​}中测试误差最小的模型作为最优模型。

1.3.2 压缩估计法

除了刚刚讨论的直接对特征自身进行选择以外,我们还可以对回归的系数进行约束或者加罚的技巧对 p p p个特征的模型进行拟合,显著降低模型方差,这样也会提高模型的拟合效果。具体来说,就是将回归系数往零的方向压缩

(1)岭回归(L2正则化的例子)
在线性回归中,我们的损失函数为 J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 J(w) = \sum\limits_{i=1}^{N}(y_i-w_0-\sum\limits_{j=1}^{p}w_jx_{ij})^2 J(w)=i=1∑N​(yi​−w0​−j=1∑p​wj​xij​)2,我们在线性回归的损失函数的基础上添加对系数的约束或者惩罚,即:

J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p w j 2 , 其 中 , λ ≥ 0 w ^ = ( X T X + λ I ) − 1 X T Y \begin{aligned} J(w) & = \sum\limits_{i=1}^{N}(y_i-w_0-\sum\limits_{j=1}^{p}w_jx_{ij})^2 + \lambda\sum\limits_{j=1}^{p}w_j^2,\;\;其中,\lambda \ge 0\\ \hat{w} & = (X^TX + \lambda I)^{-1}X^TY \end{aligned} J(w)w^​=i=1∑N​(yi​−w0​−j=1∑p​wj​xij​)2+λj=1∑p​wj2​,其中,λ≥0=(XTX+λI)−1XTY​

调节参数 λ \lambda λ的大小是影响压缩估计的关键, λ \lambda λ越大,惩罚的力度越大,系数则越趋近于0,因此,选择合适的 λ \lambda λ对模型精度来说十分重要。岭回归通过牺牲线性回归的无偏性降低方差,有可能使得模型整体的测试误差较小,提高模型的泛化能力。

(2)Lasso回归(L1正则化的例子)
岭回归的一个很显著的特点是:将模型的系数往零的方向压缩,但是岭回归的系数只能无限趋于0但无法等于0,换句话说,就是无法做特征选择。能否使用压缩估计的思想做到像特征最优子集选择那样提取出重要的特征呢?答案是肯定的!我们只需要对岭回归的优化函数做小小的调整就行了,我们使用系数向量的L1范数替换岭回归中的L2范数:
J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p ∣ w j ∣ , 其 中 , λ ≥ 0 J(w) = \sum\limits_{i=1}^{N}(y_i-w_0-\sum\limits_{j=1}^{p}w_jx_{ij})^2 + \lambda\sum\limits_{j=1}^{p}|w_j|,\;\;其中,\lambda \ge 0 J(w)=i=1∑N​(yi​−w0​−j=1∑p​wj​xij​)2+λj=1∑p​∣wj​∣,其中,λ≥0

1.3.3 降维的方法

到目前为止,我们所讨论的方法对方差的控制有两种方式:一种是使用原始变量的子集,另一种是将变量系数压缩至零。但是这些方法都是基于原始特征 x 1 , . . . , x p x_1,...,x_p x1​,...,xp​得到的,现在我们探讨一类新的方法:将原始的特征空间投影到一个低维的空间实现变量的数量变少,如:将二维的平面投影至一维空间。

机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x → y f : x \to y f:x→y,其中 x x x是原始数据点的表达,目前最多使用向量表达形式; y y y是数据点映射后的低维向量表达,通常 y y y的维度小于 x x x的维度(当然提高维度也是可以的)。 f f f可能是显式的或隐式的、线性的或非线性的。

之所以使用降维后的数据表示是因为在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应用例如图像识别中造成了误差,降低了准确率;而通过降维,我们希望减少冗余信息所造成的误差,提高识别(或其他应用)的精度。又或者希望通过降维算法来寻找数据内部的本质结构特征。在很多算法中,降维算法成为了数据预处理的一部分,如PCA。事实上,有一些算法如果没有降维预处理,其实是很难得到很好的效果的。

主成分分析(PCA)法

主成分分析的思想:通过最大投影方差将原始空间进行重构,即由特征相关重构为无关,即落在某个方向上的点(投影)的方差最大。在进行下一步推导之前,我们先把样本均值和样本协方差矩阵推广至矩阵形式:

样本均值:
x ˉ = 1 N ∑ i = 1 N x i = 1 N X T 1 N , 其 中 1 N = ( 1 , 1 , . . . , 1 ) N T \bar{x} = \frac{1}{N}\sum\limits_{i=1}^{N}x_i = \frac{1}{N}X^T1_N,\;\;\;其中1_N = (1,1,...,1)_{N}^T xˉ=N1​i=1∑N​xi​=N1​XT1N​,其中1N​=(1,1,...,1)NT​

样本协方差矩阵:
S 2 = 1 N ∑ i = 1 N ( x i − x ˉ ) ( x i − x ˉ ) T = 1 N X T H X , 其 中 , H = I N − 1 N 1 N 1 N T S^2 = \frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\bar{x})(x_i-\bar{x})^T = \frac{1}{N}X^THX,\;\;\;其中,H = I_N - \frac{1}{N}1_N1_N^T S2=N1​i=1∑N​(xi​−xˉ)(xi​−xˉ)T=N1​XTHX,其中,H=IN​−N1​1N​1NT​

最大投影方差的步骤:
(i) 中心化: x i − x ˉ x_i - \bar{x} xi​−xˉ
(ii) 计算每个点 x 1 , . . . , x N x_1,...,x_N x1​,...,xN​至 u ⃗ 1 \vec{u}_1 u 1​方向上的投影: ( x i − x ˉ ) u ⃗ 1 , ∣ ∣ u ⃗ 1 ∣ ∣ = 1 (x_i-\bar{x})\vec{u}_1,\;\;\;||\vec{u}_1|| = 1 (xi​−xˉ)u 1​,∣∣u 1​∣∣=1
(iii) 计算投影方差: J = 1 N ∑ i = 1 N [ ( x i − x ˉ ) T u ⃗ 1 ] 2 , ∣ ∣ u ⃗ 1 ∣ ∣ = 1 J = \frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2,\;\;\;||\vec{u}_1|| = 1 J=N1​i=1∑N​[(xi​−xˉ)Tu 1​]2,∣∣u 1​∣∣=1
(iv) 最大化投影方差求 u ⃗ 1 \vec{u}_1 u 1​:
u ˉ 1 = a r g m a x u 1 1 N ∑ i = 1 N [ ( x i − x ˉ ) T u ⃗ 1 ] 2 s . t . u ⃗ 1 T u ⃗ 1 = 1 \bar{u}_1 = argmax_{u_1}\;\;\frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2 \\ \;\;\;s.t. \vec{u}_1^T\vec{u}_1 = 1 uˉ1​=argmaxu1​​N1​i=1∑N​[(xi​−xˉ)Tu 1​]2s.t.u 1T​u 1​=1
得到:
J = 1 N ∑ i = 1 N [ ( x i − x ˉ ) T u ⃗ 1 ] 2 = 1 N ∑ i = 1 N [ u ⃗ 1 T ( x i − x ˉ ) ( x i − x ˉ ) T u ⃗ 1 ] = u ⃗ 1 T [ 1 N ∑ i = 1 N ( x i − x ˉ ) ( x i − x ˉ ) T ] u ⃗ 1 = u ⃗ 1 T S 2 u ⃗ 1 \begin{aligned} J & = \frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2 \\ & = \frac{1}{N}\sum\limits_{i=1}^{N}[\vec u_1^T(x_i-\bar{x})(x_i-\bar{x})^T\vec u_1] \\ & = \vec u_1^T[\frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\bar{x})(x_i - \bar{x})^T] \vec u_1 \\ & = \vec u_1^TS^2 \vec u_1 \end{aligned} J​=N1​i=1∑N​[(xi​−xˉ)Tu 1​]2=N1​i=1∑N​[u 1T​(xi​−xˉ)(xi​−xˉ)Tu 1​]=u 1T​[N1​i=1∑N​(xi​−xˉ)(xi​−xˉ)T]u 1​=u 1T​S2u 1​​
即:
u ⃗ 1 ^ = a r g m a x u ⃗ 1 u ⃗ 1 T S 2 u ⃗ 1 , s . t . u ⃗ 1 T u ⃗ 1 = 1 L ( u ⃗ 1 , λ ) = u ⃗ 1 T S 2 u ⃗ 1 + λ ( 1 − u ⃗ 1 T u ⃗ 1 ) ∂ L ∂ u ⃗ 1 = 2 S 2 u ⃗ 1 − 2 λ u ⃗ 1 = 0 \begin{aligned} \hat{\vec u_1} & = argmax_{\vec u_1} \vec u_1^TS^2 \vec u_1,\;\;\; \\ s.t. \vec u_1^T \vec u_1 & = 1\\ L(\vec u_1,\lambda) & = \vec u_1^TS^2 \vec u_1 + \lambda (1- \vec u_1^T \vec u_1)\\ \frac{\partial L}{\partial \vec u_1} & = 2S^2 \vec u_1-2\lambda \vec u_1 = 0\\ \end{aligned} u 1​^​s.t.u 1T​u 1​L(u 1​,λ)∂u 1​∂L​​=argmaxu 1​​u 1T​S2u 1​,=1=u 1T​S2u 1​+λ(1−u 1T​u 1​)=2S2u 1​−2λu 1​=0​
即:
S 2 u ⃗ 1 = λ u ⃗ 1 S^2\vec u_1 = \lambda \vec u_1 S2u 1​=λu 1​
可以看到: λ \lambda λ为 S 2 S^2 S2的特征值, u ⃗ 1 \vec u_1 u 1​为 S 2 S^2 S2的特征向量。因此我们只需要对中心化后的协方差矩阵进行特征值分解,得到的特征向量即为投影方向。如果需要进行降维,那么只需要取 p p p的前 M M M个特征向量即可。


集成学习(上)Task03:掌握偏差与方差理论相关推荐

  1. (三)集成学习上——偏差与方差

    参考:DataWhale教程链接 集成学习(上)所有Task: (一)集成学习上--机器学习三大任务 (二)集成学习上--回归模型 (三)集成学习上--偏差与方差 (四)集成学习上--回归模型评估与超 ...

  2. 【集成学习(上)】My_Task03掌握偏差与方差理论 笔记

    文章目录 (4) 优化基础模型 (4) 优化基础模型 特征提取的实例:向前逐步回归 案例来源:https://blog.csdn.net/weixin_44835596/article/details ...

  3. 20210317_23期_集成学习(上)_Task02_sklearn构建完整机器学习模型

    二.Sklearn构建完整机器学习模型 目录 二.Sklearn构建完整机器学习模型 来源 2.1 机器学习项目通常步骤 2.2 用Sklearn对机器学习项目的构建 2.2.1 导入数据集及特征选择 ...

  4. 集成学习(上)——Task3 考试前千万不要背书

    机器学习专题 机器学习三要素 模式识别 贝叶斯推导 机器学习训练的套路 考试前千万不要背书 机器学习专题 进度条 考试前千万不要背书! 我们要怎么学习?[^1] 世界上难的不是无路可走,而是选择太多 ...

  5. 集成学习(上) - Talk 3

    文章目录 测试误差及其优化 训练误差修正 交叉验证 特征选择 压缩估计(正则化) 岭回归(L2正则化的例子) Lasso回归(L1正则化的例子) 降维 PCA(主成分分析) 方差与偏差 方差: 偏差: ...

  6. 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务

    机器学习基础task1-熟悉机器学习的三大主要任务 1.导论 1.1 回归 1.2 分类 1.3 无监督学习 学习内容来源链接 1.导论 什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解 ...

  7. 【机器学习】集成学习(Boosting)——XGBoost算法(理论+图解+公式推导)

  8. 集成学习精讲02 - Bagging方法:多个基模型的聚合(SAP大神黄佳新作《零基础学机器学习》节选)

    我们将分为5篇文章介绍集成学习,分别是: 集成学习基础知识:偏差和方差 - 戳此阅读 Bagging - Boosting - 戳此阅读 Stacking/Blending - 戳此阅读 Voting ...

  9. 【组队学习】【23期】Datawhale集成学习(上)

    集成学习(上) 开源内容:https://github.com/datawhalechina/team-learning-data-mining/tree/master/IntegratedLearn ...

  10. 【组队学习】【29期】7. 集成学习(上)

    7. 集成学习(上) 航路开辟者:李祖贤.薛传雨.六一.杨毅远.陈琰钰 领航员:刘思含 航海士:李祖贤 基本信息 开源内容:https://github.com/datawhalechina/ense ...

最新文章

  1. 【Django】用pycharm初学习使用Django
  2. 如何加强测评机构自身的规范化管理, 不断提高测评的能力和水平
  3. 运动并不是最好的减肥办法,控制饮食也不是
  4. kafka分区与分组原理_大数据技术-Kafka入门
  5. 《中国人工智能学会通讯》——4.32 数据包丢失
  6. Spring Boot : 自定义 Starter
  7. Mongo Replica set的Primary 客户端不回自动重连新的primary
  8. mysql restart fail_mysql突然挂掉,重启失败,求助
  9. 关于信贷资产逾期计算口径和小微模型的经典问题与答案
  10. java servlet spring_带着新人简单看看servlet到springmvc
  11. DirectX (13) 粒子系统
  12. 数据分析师如何正确地提意见?
  13. web前端教程,详解引入CSS的4种方式
  14. uri和url区别和关联
  15. 2021牛客多校6 I Intervals on the Ring
  16. 图片实现裁剪功能vue-img-cutter
  17. 基于有赞微小店+有赞云实现的个人微信和支付宝扫码在线支付收款
  18. python 打印99乘法口诀
  19. Springboot整合ES8(Java API Client)
  20. 接口自动化测试项目实战

热门文章

  1. Ctex中插入Visio图的步骤
  2. 最新Picrust2功能预测详细流程
  3. ssm基于微信的基层党建信息系统267iq【独家源码】计算机毕业设计问题的解决方案与方法
  4. 传感器检测及控制实验实训台QY-CGQ932
  5. Codeforces 615D Multipliers (数论)
  6. 微服务项目(maven父子级项目)怎么打包
  7. 自己怎么一步步喜欢编程
  8. git 显示不出图标
  9. JDK8中HashMap依然会产生死循环问题,太香了
  10. Windows无法完成格式化怎么办?正确的3个解决方法!