|如何用Python来计算偏差-方差权衡?



|如何用Python来计算偏差-方差权衡?
本文插图

作者:Jason Brownlee翻译:吴振东校对:车前子本文约3800字 , 建议阅读8分钟 。 本文为你讲解模型偏差、方差和偏差-方差权衡的定义及联系 , 并教你用Python来计算 。
衡量一个机器学习模型的性能 , 可以用偏差和方差作为依据 。
一个高偏差的模型 , 总是会对数据分布做出强假设 , 比如线性回归 。 而一个高方差的模型 , 总是会过度依赖于它的训练集 , 例如未修剪的决策树 。 我们希望一个模型的偏差和方差都很低 , 但更多情况下我们需要在二者之间做出权衡 。
在选择和调整模型时 , “偏差-方差权衡”是一个非常有用的概念 。 当然它在一般情况下是无法直接计算的 , 因为这需要这一问题领域内的全部知识 , 而我们并不具备 。 尽管如此 , 我们可以评估出一个模型的误差 , 并将其拆分成偏差和方差两部分 , 从而借此了解该模型的运行方式 。
在这篇教程中 , 你将了解如何计算一个机器学习模型的偏差和方差 。
在完成这篇教程后 , 你将会学到:

  • 模型误差包含模型方差、模型偏差以及不可约误差;
  • 我们希望模型具有低偏差和低方差 , 但是一般情况下一个值的缩小会导致另一个值的增大;
  • 如何将均方误差分解成模型的偏差和方差 。
我的新书《用Python掌握机器学习》(https://machinelearningmastery.com/machine-learning-with-python/)将帮助你开始新的项目 , 其中包括分步教程和所有示例的Python源代码文件 。
让我们开始吧 。
|如何用Python来计算偏差-方差权衡?
本文插图

教程综述
本篇教程可以分为三部分 , 分别是:
  • 偏差、方差和不可约误差;
  • 偏差-方差权衡;
  • 计算偏差和方差 。
偏差、方差和不可约误差
机器学习模型是用来做预测任务的 , 例如回归或分类 。
一个模型预测性能可以用对未参与训练的样本做预测后的误差来表示 , 我们将其视作是模型误差 。
  • 误差(模型)
模型误差可以被分解为三个部分:模型的方差、模型的偏差以及不可约误差的方差 。
  • 误差(模型)= 方差(模型)+ 偏差(模型)+ 方差(不可约误差)
让我们仔细看看这三个术语 。
模型偏差
偏差用于衡量一个模型拟合的输入和输出之间关系与真实情况的近似程度 。
这能获得模型的刚度:模型对于输入和输出之间的函数的假设强度 。
“这能够反映出模型的拟合结果与真实规律之间的差距 。 ”
——《预测模型应用》2013年版 , 97页
当偏差符合未知的真实规律时 , 我们可以接受具有高偏差的预测模型 。 但是 , 当真实数据函数形式与模型的假设完全不匹配时 , 例如对一个高度非线性关系的数据使用线性关系的假设 , 具备过高偏差的模型是毫无用处的 。
  • 低偏差:关于对输入到输出映射函数形式的弱假设 。
  • 高偏差:关于对输入到输出映射函数形式的强假设 。
偏差一定是正值 。
模型方差
模型的方差是模型在拟合不同的训练数据时性能的变化大小 。 它反映特定数据对模型的影响 。
“方差指的是 , 用不同训练数据进行模型评估时 , 模型表现的变化程度 。 ”
——《统计学习及其在R中的应用》2014年版 , 第34页
一个高方差的模型在训练数据集发生细小变化时预测结果会发生很大变化 。 相反 , 对于低方差的模型 , 训练数据发生或大或小的改变时 , 预测结果的变化都很小 。