|如何用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次自采样所获得的偏差和方差模型误差 。
推荐阅读
- 华为中国云与计算|珠海华发集团与华为签署战略协议
- 八戒谈科技|深惠视发布双目相机 边缘计算、轻松部署新一代ES-2000系列嵌入式3D相机系统
- 职场办公学习|每次进货价格不一样,Excel批量计算利润
- 中年|计算万物湘约未来 | 一碗饭也能吃出科技感!远程会议、粮食种植、语音转手语……记者探访世界计算机大会
- 书圈|Python 之父 Guido van Rossum 退休失败,正式加入微软搞开源!
- 云计算,百度|人工智能技术如何落地交通出行?
- 刘俊明IT人|计算机领域哪些技术的发展前景较好,本科生如何进入这些领域发展
- |赛灵思与三星携手推出新款SmartSSD计算存储驱动器
- 工业互联网|计算机领域哪些技术的发展前景较好,本科生如何进入这些领域发展
- 技术编程|Python之父Guido van Rossum退休失败,正式加入微软