转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/75091612
NFL(No Free Lunch Theorem)告诉我们选择算法应当与具体问题相匹配,通常我们看一个算法的好坏就是看其泛化性能,但是对于一个算法为什么好为什么坏,我们缺乏一些认识。“Bias-Variance Decomposition”就是从偏差和方差的角度来解释一个算法的泛化性能。
“Bias-Variance Decomposition” 是以测试集上的平方错误为基础的,假设我们的预测值为
,真实值为
,则均方误差为
。
为了让世界更加美好,我们在这里不考虑样本的噪声。
“The noise term is unaviodable no matter what we do, so the terms we are interested in are really the bias and variance”(from “Learning From Data” Page 64)
(噪声的存在是学习算法所无法解决的问题,数据的质量决定了学习的上限。而假设在数据已经给定的情况下,此时上限已定,我们要做的就是尽可能的接近这个上限)
并且使用
来代表预测值(这里我们把它看成是随机变量,即不同数据学习得到的模型),
代表真实值,
代表算法的期望预测(如:可以用不同的数据集
来得到
),则有:
由上面的公式可知,偏差描述的是算法的预测的平均值和真实值的关系(可以想象成算法的拟合能力如何),而方差描述的是同一个算法在不同数据集上的预测值和所有数据集上的平均预测值之间的关系(可以想象成算法的稳定性如何)。
(ps:个人认为可以把偏差认为是单个模型的学习能力,而方差则描述的是同一个学习算法在不同数据集的不稳定性)
偏差和方差的形象展示如下图所示(图片引自Understanding the Bias-Variance Tradeoff )
在下图中,给出了偏差方差和总体的泛化误差的示意图(图片引自Understanding the Bias-Variance Tradeoff ):
Bagging和Boosting是集成学习当中比较常用的两种方法,刚好分别对应了降低模型方差和偏差。
Bagging是通过重采样的方法来得到不同的模型,假设模型独立则有:
所以从这里我们可以看出Bagging主要可以降低的是方差。
而Boosting每一次都关注使得整理的loss减少,很显然可以降低bias。这里的模型之间并不独立,所以不能显著减少variance,而Bagging假设模型独立所以可以减少variance。
更多内容请参考知乎问题:为什么说bagging是减少variance,而boosting是减少bias? 回答很精彩。
参考资料: 1. 周志华《机器学习》p44-p46 2. Hsuan-Tien Lin. “Learning From Data”. Chapter 2.3 3. Christopher M. Bishop. “Pattern Recognition and Machine Learning” Chapter 3.1