如何用Python来计算偏差-方差权衡?( 二 )
不可约误差
整体而言 , 模型的误差包含可约误差和不可约误差 。
- 模型误差 = 可约误差 + 不可约误差
不可约误差是我们无法从模型中剔除的误差 , 在任何模型中都不可能被去除 。
这一误差源于不可控因素 , 例如观测中的统计噪声 。
“……通常会称之为“不可约噪声” , 且不能在建模过程中剔除 。 ”
——《预测模型应用》2013年版 , 第97页
同样的 , 尽管我们能够把可约误差压缩到接近于零或者非常小的值 , 甚至有时能够等于零 , 但不可约误差依然会存在 。 这决定了模型性能的下限 。
“有一点是我们是需要牢牢记住的 , 那就是不可约误差始终会作为我们对目标Y预测精确率的下限值 , 这个边界在实践中永远是未知的 。 ”
——《统计学习及其在R中的应用》2014年版 , 第19页
这提醒我们任何模型都不是完美的 。
偏差-方差的权衡
对于模型的表现来说 , 偏差和方差是有关联的 。
理想情况下 , 我们希望一个模型能有低偏差和低方差 , 但是在实际操作中这是非常具有挑战性的 。 实际上这是机器学习建模的目标 。
降低偏差很容易使方差升高 。 相反 , 降低方差也会使得偏差升高 。
“这被称之为一种‘权衡’ , 因为一般的方法很容易得到极低的偏差和很高的方差……或很低的方差和很高的偏差……”
——《统计学习及其在R中的应用》2014年版 , 第36页
这种关系一般被称为“偏差与方差的权衡” 。 这是一个关于思考如何选择模型和调整模型的概念框架 。
我们可以基于偏差和方差来选择模型 。 简单的模型 , 例如线性回归和逻辑回归 , 通常具有高偏差和低方差 。 而复杂的模型 , 例如随机森林 , 通常具有低偏差和高方差 。
我们通常会基于模型的偏差和方差所造成的影响来调整模型 。 对于K-近邻算法来说 , 超参数k控制着模型的偏差-方差权衡 。 k取值较小 , 例如k=1 , 会得到低偏差高方差的结果 。 反之k取值较大 , 如k=21 , 导致高偏差和低方差 。
高偏差和高方差都不一定是坏的 , 但他们有可能会导致不良的结果 。
我们时常要对一组不同的模型和模型参数进行测试 , 从而在给定的数据集中得到最好的结果 。 一个高偏差的模型有可能会是过于保守的 , 出现欠拟合 。 相反的 , 一个高方差的模型可能会出现过拟合 。
我们有可能会选择提高偏差或方差 , 来减少模型的整体误差 。
计算偏差和方差
我经常会遇到这样的问题:
“如何能量化我的算法在数据集上所得到的偏差-方差权衡呢?”
从技术的角度讲 , 我们无法进行这样的计算 。
我们无法针对一个预测建模问题来计算实际的偏差和方差 。 因为我们并不知道真实的映射函数 。
但是我们可以将偏差、方差、不可约误差和偏差-方差权衡作为帮助我们选择模型、调整模型和解释结果的工具 。
“在实际情况中 , f是无法被观察到的 , 所以一般对于统计学习方法来说无法明确计算MSE值、偏差、方差 。 虽然如此 , 我们必须要关注偏差-方差权衡 。 ”
——《统计学习及其在R中的应用》2014版 , 第36页
虽然偏差-方差权衡是一个概念上的工具 , 某些情况下我们也可以进行估计 。
Sebastian Raschka建立的mlxtend库提供了bias_variance_decomp()函数 , 可以对一个模型采用多重自采样(multiple bootstrap samples)的方式来评估偏差和方差 。
首先 , 你需要安装mlxtend库 , 例如:
sudo pip install mlxtend下面这个例子是直接通过URL载入波士顿房价数据集 , 划分为训练集和测试集 , 然后估计出对于线性回归的均方根误差(MSE) , 以及采用200次自采样所获得的偏差和方差模型误差 。
推荐阅读
- 下个10年,Go能取代Python成为开发者的首选语言吗?
- 游戏葡萄|七年磨一剑的任天堂,如何用美术诠释游戏?
- 大数据&云计算长飞公司亮相2020中国国际信息通信展览会
- 设备间微软推出SurfaceFleet 一种实现多设备间交互的计算概念
- 「计算机组成原理」:一文快速了解计算机原理知识点-附思维导图
- 南方新闻网|研祥凭什么做世界特种计算机NO.1?陈志列这三句话就是底气
- 艾问人物||艾问人物,隐私计算“四小龙”将如何重塑未来互联网
- 上海宝山|自愿加班,加班工资该如何计算?来看解答
- 快科技|新一代7nm计算卡就要来了,AMD申请CDNA商标
- 阿里云弹性高性能计算E-HPC:攀登性能“高峰”,加速行业创新
