跟李沐学AI:实用机器学习 | 第五章
5.1 方差和偏差
方差:预测结果的方差
偏差:预测结果和真实值之间的差距
需要低方差、低偏差的模型
第一项为偏差,第二项为方差
减小泛化误差
- 减小偏差:设计更加复杂的模型,例如增加神经网络的层数、隐藏单元,Boosting、Stacking
- 减小方差:更简单的模型,使用L1L2正则项,Bagging、Stacking
- 减小噪音σ平方:提升数据质量
Boosting、Stacking、Bagging属于集成学习Ensemble learning
5.2 Bagging-Bootstrap AGGregatING
Bagging并行训练n个base learner,然后通过平均learner的输出(回归问题)或者多数投票(分类)进行决策。每个learner在经过Bootstrap采样的数据上进行训练。
Bootstrap采样:假设有m个训练样本,有放回地从数据中随机采样m个样本。那么大概有1-1/e≈63%的样本会被采样到,剩下的部分(未被采样到的数据out-of-bag)用于验证。
Bagging降低方差,当base learner不那么稳定的时候(例如决策树),bagging对于降低方差的效果更好。
5.3 Boosting
把多个弱模型组合在一起得到更强的模型,减小偏差
Boosting按顺序学习n个弱模型,在第i步中,训练弱模型h_i,评估它的误差;根据误差的情况重新采样数据,多关注预测不正确的样本。
经典算法:AdaBoost、Gradient Boosting
Gradient Boosting:H_t(x)表示时刻t的模型,H_1(x)=0。在时刻t=1,2,3,…时,在残差数据{(xi, yi-H_t(xi))}i=1,…,m 上训练一个新模型ht,H_(t+1)(x)=H_t(x)+θht(x),学习率θ通过收缩正则化模型。如果选择MSE作为损失函数,残差部分就等于负梯度方向。
其他Boosting算法可以通过选择不同的函数空间(损失函数)很容易地换到Gradient Boosting的框架里
GBDT:使用小一点的决策树作为base learner,降低过拟合风险
顺序建树太慢了,可以使用加速算法,如XGBoost,lightGBM
5.4 Stacking(比较贵)
单层Stacking:把多个base learner组合在一起降低方差,在同样的数据集上训练不同的模型,把不同模型的输出concat起来,经过全连接层得到最终的结果。
跟bagging的区别:①不需要经过Bootstrap采样 ②学习的模型是不同类型的
多层Stacking:降低偏差,特别容易过拟合
降低过拟合风险的方法:
- 划分训练数据集,不同层stacking采用不同的训练集
- 重复的k折bagging:假设有k个模型,把数据集分成k份,k-1份用于训练,1份用于验证。假设第i个模型是在第 i 块数据上做了验证,那么把第 i 个模型在第 i 块数据上的输出作为预测输出,把所有模型的预测并起来,进入到下一层进行训练。(进一步降低方差的方法:重复上述步骤n次,把n次的预测结果取平均,再进入到下一层进行训练)
Reduce |
Variance |
Bias |
Computation cost |
Parallelization |
Bagging |
Y |
n |
n |
|
Boosting |
Y |
n |
1 |
|
Stacking |
Y |
n |
n |
|
K-fold multi-level stacking |
Y |
Y |
n*L*k |
n*k |
跟李沐学AI:实用机器学习 | 第五章相关推荐
- 李沐-斯坦福《实用机器学习》-01章
1.课程介绍 视频链接 首先介绍了机器学习作为技术本身, 它的大致构成以及所面临的一些挑战. 然后讲述学习机器学习,你会变成什么样的角色. 最后讲述了本课程中会涉及到哪些主题. 举例:房价预测问题 工 ...
- 李沐-斯坦福《实用机器学习》-02章
1.探索性数据分析 导入相关包 numpy:python中做数据分析常用的包: pandas:也是用于数据分析,擅长处理表,数据没那么大要放入内存中,这将是首选: matplotlib.pyplot: ...
- 【跟李沐学AI学习笔记】数据操作
本文的来源是B站跟李沐学AI的视频. 机器学习用的最多的数据结构是N维数组.最简单的N维数组是一个0-d的标量,比如1.0,它可能表示一个物体的类别.1-d的数组称为向量,比如说[1.0, 2.7, ...
- 动手学深度学习在线课程-跟着李沐学AI
动手学深度学习在线课程-跟着李沐学AI http://courses.d2l.ai/zh-v2/ 李宏毅<机器学习>中文课程(2022) https://hub.baai.ac.cn/vi ...
- 【深度学习】ResNet残差网络 ResidualBlock残差块实现(pytorch) | 跟着李沐学AI笔记 | ResNet18进行猫狗分类
文章目录 前言 一.卷积的相关计算公式(复习) 二.残差块ResidualBlock复现(pytorch) 三.残差网络ResNet18复现(pytorch) 四.直接调用方法 五.具体实践(ResN ...
- 过拟合欠拟合模拟 || 深度学习 || Pytorch || 动手学深度学习11 || 跟李沐学AI
昔我往矣,杨柳依依.今我来思,雨雪霏霏. ---<采薇> 本文是对于跟李沐学AI--动手学深度学习第11节:模型选择 + 过拟合和欠拟合的代码实现.主要是通过使用线性回归模型在自己生成的数 ...
- 深度学习笔记-[跟李沐学AI]-01引言
DIVE INTO DEEP LEARNING 参考笔记:http://zh-v2.d2l.ai/chapter_introduction/index.html 符号 本书中使用的符号概述如下. 数字 ...
- 【深度学习】跟李沐学ai 线性回归 从零开始的代码实现超详解
目录 一.引言 二.本文代码做了什么 如何利用数据集训练 三.代码实现与解析 一.导包 二.相应的函数实现 1 生成样本(数据集) 2 按批量读取数据集 3 定义模型 损失函数 算法 1 定义模型 2 ...
- 【斯坦福21秋(李沐)】实用机器学习(学习笔记)——1.1课程介绍
一.概述 Industral ML:主要是讲机器学习在工业中的应用. 二.机器学习在工业界的应用 制造:预测设备是否需要维护.生产的产品质量控制等 零售:商品推荐.客服机器人.预测产品销量等 健康: ...
- 跟李沐学AI:实用机器学习 | 第九章
9.1 模型调参 手动调参 从一个好的基线开始,从工具包或者论文中的设置选择起始参数. 每次调一个超参数的值,观察性能变化. 虽然SGD在参数调得好的情况下模型效果会优于Adam,但是Adam相比于S ...
最新文章
- 036_PageHeader页头
- 浅谈MVC设计模式和SSH框架的关系
- IOS学习笔记十九NSArray和NSMutableArray
- 网页版四则运算(未全部完成)
- 【Linux】linux ln文件夹的链接(转)
- c#winform演练 ktv项目 MediaPlayer控件播放音乐
- 割线法求解过程_浸入边界法求解流固耦合问题
- http://www.codeproject.com/Questions/117324/upload-file-in-c-with-HttpWebRequest
- MS印象-----北京.Net俱乐部8.13活动
- 在几何画板中如何制作圆柱的侧面展开动画_几何画板制作圆锥侧面展开图课件...
- GameEntity(六)—— IChat
- react 中加载静态word文档(或加载静态的html文件)
- php spider 开发文档,爬虫进阶开发——之技巧篇 - 开发PHPSpider爬虫的常用工具 - 《phpspider开发文档》 - 书栈网 · BookStack...
- 逻辑强化(03)真假推理 知识练习
- 企业如何搭建并运营好积分商城?
- (一)unity自带的着色器源码剖析之——————UnityShaderVariables.cginc文件
- 网优5g前景_5G网络优化工程师的前景和待遇
- #大三狗的日常总结与反思03#
- 跳动的心 - HTML 代码
- Windows CMD 检擦电脑是否被入侵[简单办法]