球赛中,防守方的联防策略是非常有效的,几个队员彼此照应,随时协防、换位、补位,护送等,相互帮助,作为一个整体作战,而集成学习,就是机器学习里面的协同作战!如果你训练出一个模型比较弱,又训练出一个模型还是比较弱,但是,几个不大一样的模型组合起来,很可能——效率会好过一个单独的模型。这个思路导出的随机森林,梯度提升决策树,以及XGBoost等算法,都是常用的、有效的、经常在机器学习竞赛中夺冠的法宝。
集成学习(ensemble learning),是通过构建出多个模型(这些模型可以是比较弱的模型),然后将它们组合起来完成任务。名字听起来比较高大上,但它其实是很经典的机器学习方法了。在深度学习时代,集成学习仍然具有很高的江湖地位。集成学习核心策略是通过模型的集成减少机器学习中的方差(variance)和偏差(bias)。
本文是系列中的第一篇
咖哥说,“在深入介绍集成学习方法之前,先要了解的是方差和偏差这两个概念在机器学习项目优化过程中的指导意义。”
方差,是从统计学中引入的概念,方差定义的是一组数据距离其均值的离散程度。而机器学习里面的偏差呢,用于衡量模型的准确程度。
咖哥发言: 注意,机器学习内部参数w和b中的参数b,英文也是bias,是线性模型内部的偏置。而这里的bias是模型准确率的偏差。二者英文相同,但不是同一个概念。
偏差评判的是机器学习模型的准确度,偏差越小,模型越准确。它度量了算法的预测与真实结果的偏离程度, 刻画了学习算法本身的拟合能力 。也就是每次打靶,都比较靠近靶心。
方差评判的是机器学习模型的稳定性(或称精度),方差越小,模型越稳定。它度量了训练集变动所导致的学习性能变化, 刻画了数据扰动所造成的影响。也就是每次打靶,不管打的准不准,击中点都比较集中。
咖哥发言: 其实机器学习中的预测误差,还包含另一个部分,叫作噪声(noise)。
噪声表达的是在当前任务上任何学习算法所能达到的泛化误差的下界, 也可以说刻画了学习问题本身的难度,属于不可约减的误差
(irreducible error),因此也就不在我们关注的范围内了。
低偏差,低方差,是我们希望达到的效果,然而一般来说, 偏差与方差是鱼与熊掌不可兼得的,这被称作偏差-方差窘境 (bias-variance dilemma).
其实,在欠拟合、过拟合和正则化的学习中,已经探讨过这个道理了。机器学习性能优化领域的最核心问题,就是不断的探求欠拟合-过拟合之间,也就是偏差-方差之间的最佳平衡点,也是训练集优化和测试集泛化的平衡点
如上图所示,如果同时为训练集和测试集绘制损失曲线的话,大概可以看出:
因此,机器学习的性能优化是有顺序的,一般是先减小偏差,再聚焦于降低方差。
咖哥发问:“刚才画出了损失与模型复杂度之间的关系曲线,以评估偏差和方差的大小,还有另外一种的方法,能判断机器学习模型当前方差的大致状况,你们能猜的出来吗?”
小冰想了想:“刚才你说到……数据的扰动……”“啊呀!”咖哥虎躯一震,“没想到你的思路还挺正确!看来你经过坚持学习,智慧都有提升了。答案正是通过调整数据集的大小来观测损失的情况,进而判定是偏差还是方差影响着机器学习效率。”
方差高,意味着数据扰动对模型的影响大。那么观察数据集的变化如何能够发现目前模型的方差和偏差状况?
你们看这两个示意图:左图中的模型方差较低,而右图中的模型方差较高。
这是因为,数据集越大,越能够降低过拟合的风险。数据集越大,训练集和测试集上的损失差异理论上应该越小,因为更大的数据集会导致训练集损失值上升,测试集上的损失值下降。
小冰想了想,又问:“你费了那么大劲,绘制出来上面这样的曲线,又有什么意义,我们拿来做什么啊?”
咖哥回答:“当然是为了确定目前的模型是偏差大还是方差大。”
小冰接着问:“然后呢?”咖哥又答:“很重要。知道偏差大还是方差大,就知道应该把模型往那个方向调整。回到下面要谈的集成学习方法的话,就是选择什么方法优化模型,你需要有的放矢。”不同的模型,有不同的复杂度,其预测空间大小不同、维度不同,一个简单的线性函数,它所能够覆盖的预测空间是比较有限的,其实也可以说简单的函数模型方差比较低。这是好事儿。那么如果增加变量的次数,增加特征之间的组合,函数就变复杂啦,预测空间就随着特征空间的变化而增大。再发展到很多神经元非线性激活之后组成神经网络,可以包含几十万、上百万个参数,它的预测空间维度特别大。这个时候,方差也会迅速增大。
小冰刚想说话,咖哥说:“我知道你想问,那为什么我们还要不断增加预测空间,增加模型的复杂度?因为现实世界中的问题的确就是这么复杂啊,简单的线性函数虽然方差低,但是偏差高,对于稍微复杂些问题,就根本打不中靶。那只能用威力比较大的、覆盖面比较大的大杀器来解决问题了。而神经网络就像是原子弹,一个下去,肯定能够把要打击的目标给打击到。但是如何避免误伤无辜,降低方差,就又回到如何提高精度的问题了。这样,偏差-方差窘境又出现了。”
话说回来,集成学习为什么好,就是它通过组合一些比较简单的算法,以保留这些算法方差低的优势;在此基础之上,它又能引入复杂的模型,来扩展简单算法的预测空间,这样一来你就理解了为何集成学习是同时减少方差和偏差的大招。
本文经作者授权,节选自机器学习小白入门书《零基础学机器学习》,这本书专门为希望轻松快乐学习机器学习和深度学习技术的您而量身定做。喜欢的读者可以直接去京东购买呦!:)作者谢谢您的支持与赞赏!
https://item.jd.com/12763913.html
后续的文章中,我们会通过详细的案例和代码示例逐个来看每一种集成学习方法——Bagging,Boosting,Stacking / Blending,以及Voting / Averaging。戳此阅读下一篇