理解方差与偏差分解

假设存在一个真实(但未知)的的分布F(\cdot),它输出带有噪声的数据。我们用由F(\cdot)产生的集合\mathcal{D}中的n个样本来估计F(\cdot),待估计的模型表示为g(\mathbf{x} ; \mathcal{D})
估计算子的有效性可以用真实分布和模型估计的均方误差来表示,在所有大小为n的训练集\mathcal{D}上求平均,可以得到

E_{\mathcal{D}}\left[(g(\mathbf{x} ; \mathcal{D})-F(\mathbf{x}))^{2}\right] =\underbrace{\left(E_{\mathcal{D}}[g(\mathbf{x} ; \mathcal{D})-F(\mathbf{x})]\right)^{2}}_{\text { $bias^2$}}+\underbrace{E_{\mathcal{D}}\left[\left(g(\mathbf{x} ; \mathcal{D})-E_{\mathcal{D}}[g(\mathbf{x} ; \mathcal{D})]\right)^{2}\right]}_{\text {variance}}

可以看到,均方误差可以用偏差项和方差项的和的形式来表示。偏差代表估计值和真实值(一般情况下未知)之间的差异,一个小的偏差意味着从平均意义上来说我们可以从\mathcal{D}中准确的估计出F(\cdot);而由于训练集选取的随机性,对于有限大小的某些数据逼近性能可能会很好,但是对于其他同样大小的数据集可能会很差,一个小的方差意味着模型的估计并不随着训练集的波动而发生较大的改变。

Bias–variance tradeoff

“偏差和方差折中”是一个很普遍的现象:一个模型如果逐渐提高对于训练数据的拟合程度(比如设计更多的自由参数),那么它将趋向于更小的偏差(对数据集拟合的很好,则g(\mathbf{x} ; \mathcal{D})-F(\mathbf{x})很小),但会导致更高的方差(对于不同的数据集,各个g(\mathbf{x} ; \mathcal{D})之间差异较大)。
因此,如果模型的参数很多(通常产生较小的偏差),那么它会很好地拟合数据,但是会导致较高的方差。相反,如果模型参数较少(通常产生较大的偏差),那么数据的拟合性能将不会特别好,但拟合的程度对于不同的数据集变化不会太大(较低的方差)。
可见,对于复杂模型,如何降低方差是要关注的主要问题,由于模型足够复杂,每个模型都能学习到了训练集特有的特征,因此不同训练集上得到的模型之间差异很大。改善这个问题,一个方法是降低模型复杂度,如采取正则化等方法,来限制模型的学习能力,只学习训练集最通用的特征。另一个方法就是增加训练集的大小,只要模型足够一般,以至于有能力表达真实分布,那么采用大量的训练数据将会使性能得到改善(当数据量无限多时,模型的偏差可以非常小,仅仅由随机噪声引起,而数据量无限多同时也使得不同数据集趋向于同一个,从而降低方差)。
而对于简单模型,如何降低偏差是要关注的主要问题,当数据无限多时,由于模型太过简单,以至于达到其最大能力都不能很好的表达训练集,这时,对于不同训练集,简单模型都达到了其最大能力,因此模型之间的方差都会趋向于零,但偏差仍然很大,我们可以采取的措施就是增加模型的复杂度来改善这个问题。

参考资料
Pattern Classification (2nd Edition), by Richard O. Duda, Peter E. Hart, and David G. Stork, Wiley-Interscience, 2000. 9.3.1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。