过拟合和欠拟合
推荐博客:Understanding the Bias-Variance Tradeoff
当我们讨论预测模型时,预测误差可以分解为两个我们关心的主要子成分:由“偏差”引起的误差和由“方差”引起的误差。模型最小化偏差和方差的能力之间存在权衡。了解这两种类型的误差可以帮助我们诊断模型结果,避免过度或欠拟合的错误。
每一个蓝点,都代表了一个训练模型的预测数据,即根据不同的训练集训练出一个训练模型,再用这个训练模型作出一次预测结果。如果将这个过程重复N次,相当于进行了N次射击。我们假设真实的函数关系是Y=f(x),而训练模型预测的结果是p(x),则
- 偏差错误:偏差是衡量预测值和真实值的关系。即N次预测的平均值(也叫期望值),和实际真实值的差距。所以偏差bias=E(p(x)) - f(x)。
即bias是指一个模型在不同训练集上的平均表现和真实值的差异,用来衡量一个模型的拟合能力。 - 方差错误:方差用于衡量预测值之间的关系,和真实值无关。即对于给定的某一个输入,N次预测结果之间的方差。variance= E((p(x) - E(p(x)))^2)。这个公式就是数学里的方差公式,反应的是统计量的离散程度。只不过,我们需要搞清楚我们计算的方差的意义,它反应的是不同训练模型针对同一个预测的离散程度。
即variance指一个模型在不同训练集上的差异,用来衡量一个模型是否容易过拟合。
高偏差,低方差:
每次射击都很准确的击中同一个位置,故极端的情况方差为0。只不过,这个位置距离靶心相差了十万八千里。对于射击而言,每次都打到同一个点,很可能是因为它打的不是靶心。对于模型而言,往往是因为模型过于简单,才会造成“准”的假象。提高模型的复杂度,往往可以减少高偏差。
高方差,低偏差:
是不是偏差越低越好?是不是低偏差时,方差也会低呢?通过对偏差的定义,不难发现,偏差是一个期望值(平均值),如果一次射击偏左5环,另一次射击偏右5环,最终偏差是0。但是没一枪打中靶心,所以方差是巨大的,这种情况也是需要改进的。
过拟合/高方差
原因
- 训练集数量不足,样本类型单一。
- 训练集中存在噪声。
- 模型复杂度过高。
解决方法
- 标注不同类型的样本,是 样本尽可能的均衡。
- 降低训练模型复杂度
- 正则化
- 采用 bagging(如随机森林等)集成学习方法 来 防止过拟合
- 交叉检验
- DropOut策略
欠拟合/高偏差
原因
模型没有充分学习到 数据中的特征信息,使得模型无法很好地拟合数据
解决方法
- 特征工程,添加更多的特征项
- 集成学习方法,boosting(如GBDT)能有效解决 high bias
- 提高模型复杂度
- 减小正则化系数
其他
PCA不被推荐用来避免过拟合:PCA是一种无监督学习,其存在的假设是:方差越大信息量越多。但是信息(方差)小的特征并不代表表对于分类没有意义,可能正是某些方差小的特征直接决定了分类结果,而PCA在降维过程中完全不考虑目标变量 的做法会导致一些关键但方差小的分类信息被过滤掉。