人工智能里的数学修炼 | 是什么决定了你的学习算法泛化性能?偏差—方差分解(bias-variance decomposition)
来源:互联网 发布:linux 客户端工具 编辑:程序博客网 时间:2024/06/16 06:40
一段可以解释学习算法泛化性能的推导过程,要想提升自己模型的预测能力,得先了解这种能力受什么影响
偏差-方差分解可以对学习算法的期望泛化错误率进行拆解,得到清晰明确的错误构成
对于测试样本x,令yD为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D上学得模型f在x上的预测输出。以回归任务为例
学习算法的期望预测为:
F(x) = ED[f(x;D)]
使用样本数相同的不同训练集产生的方差为:
var(x) = ED[(f(x;D)-F(x))**2]
噪声为:
e**2 = ED[(yD-y)**2]
期望输出与真实标记的差别称为偏差:
bias(x)**2 = (F(x)-y)**2
为了便于讨论,假定噪声期望为零,即ED[yD-y] = 0.通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:
E(f;D) = ED[(f(x;D)-yD)**2] = ED[(f(x;D)-F(x)+F(x)-yD)**2] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2] + ED[2(f(x;D)-F(x))(F(x)-yD)] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2] + 2[ED(f(x;D)-F(x))ED(F(x)-yD)] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2] + 2[(F(x)-F(x))ED(F(x)-yD)] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-y+y-yD)**2] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-y)**2] + ED[(y-yD)**2] + 2ED[(F(x)-y)(y-yD)] = ED[(f(x;D)-F(x))**2] + ED[(F(x)-y)**2] + ED[(y-yD)**2] = bias(x)**2 + var(x) + e**2
上式表明,泛化误差可以分解为偏差、方差和噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的能力决定的
偏差-方差窘境:
对于给定的学习任务,假定我们能够控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导泛化错误率;随着训练程度的加深,学习器拟合能力的增强,训练数据发生的扰动渐渐能被学习器学习到,方差逐渐主导了泛化错误率
参考文献
周志华.机器学习[M].北京:清华大学出版社,2015: 44~46
阅读全文
1 0
- 人工智能里的数学修炼 | 是什么决定了你的学习算法泛化性能?偏差—方差分解(bias-variance decomposition)
- 偏差-方差分解 Bias-Variance Decomposition
- 偏差bias/方差variance 的理解
- 偏置-方差分解(Bias-Variance Decomposition)
- 偏置方差分解Bias-variance Decomposition
- 偏置方差分解Bias-variance Decomposition
- 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
- 机器学习——偏差(bias),方差(variance),噪声(noise)
- 机器学习:方差Variance与偏差Bias
- 机器学习笔记——偏差(bias)和方差(variance)及其与K折交叉验证的关系
- 机器学习入门系列03,Error的来源:偏差和方差(bias 和 variance)
- 机器学习中的偏差(bias)和方差(variance)
- 机器学习:Bias(偏差),Error(误差),和Variance(方差)
- Bias(偏差),Error(误差),Variance(方差),和K-fold Cross Validation的关系(机器学习核心)
- bagging与boosting两种集成模型的偏差bias以及方差variance 的理解
- 统计学总结之Bias(偏差),Error(误差),和Variance(方差)的区别
- 统计学总结之Bias(偏差),Error(误差),和Variance(方差)的区别
- 统计学总结之Bias(偏差),Error(误差),和Variance(方差)的区别
- 通过节点JavaScript操作改变文字大小
- 异常,finally&&return
- 策略模式
- Java并发包之CyclicBarrier
- thrift编写服务器/客户端实现图片传输(c++)
- 人工智能里的数学修炼 | 是什么决定了你的学习算法泛化性能?偏差—方差分解(bias-variance decomposition)
- git基本命令
- react-native的textInput学习中宽自动变小的问题
- spring整合hibernate的初级使用
- bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
- AJAX的使用
- hdu 6156 Palindrome Function(数位dp&&其他)
- Keras学习笔记---保存model文件和载入model文件
- 位运算