把要解决的问题看作是这个靶盘,训练的模型看作是打出去的枪。
模型的误差 = 偏差 + 方差 + 不可避免的误差
导致偏差的原因:
对问题本身的假设不正确。如:非线性数据使用线性回归
欠拟合 underfitting
特征选择不正确
数据的一点点扰动都会较大地影响模型。
通常原因,使用的模型太复杂,如高阶多项式回归
过拟合 overfitting
有一些算法天生是高方差的算法。如KNN。
非参数学习算法通常都是高方差算法,因为不对数据做任何假设。
有一些算法天生是高偏差算法。如线性回归。
参数学习算法通常都是高偏差算法。因为对数据有极强的假设性。
大多数算法具有相应的参数,可以调整偏差和方差。 例如KNN中的K、如多项式回归中的degree。
偏差和方差通常是矛盾的。降低偏差,会提高方差。降低方差会提高偏差。
在算法层面上,机器学习的主要挑战来自方差。
解决高方差的通常手段:
- 降低模型复杂度
- 减少数据维度,降噪
- 增加样本数
- 使用验证集
- 模型正则化