标签:
假设我们有很多机器学习算法(可以是前面学过的任何一个),我们能不能同时使用它们来提高算法的性能?也即:三个臭皮匠赛过诸葛亮。
有这么几种aggregation的方式:
一些性能不太好的机器学习算法(弱算法),如何aggregation,成为表现比较好的算法?来看一下:
我们可以看出,有时候aggregation的表现像是在做feature transform,有时候又像是在做regularization。
我们可以看出:机器学习算法A的表现,分为两部分,performance of consensus (bias) 和 expected deviation to consensus (variance)。而uniform blending提高性能是通过减小variance ,来获得更加stable的算法来实现的。
其中α必然会大于0,约束条件可以去掉。
我们可以看出,aggregation之所以奏效,是因为机器学习算法的多样性。那么,如何产生足够多的机器学习算法?有如下几种情形。现在我们将注意力集中到:diversity by data randomness.
之前我们在uniform Blending中假想过这一情形。但是呢,那是在理想状态下,1)我们的T不可能无限大;2)我们的D不可能无限多,现在我们采用如下技术来解决:
什么是random forest?就是Bagging的一种特殊情况:g为决策树的情况。
为什么呢?之前我们说过uniform Blending是通过减小variance,使算法稳定,来提高算法性能。而bagging是Blending的一种特殊形式。而我们知道决策树对于数据很敏感,不同的数据会导致算法巨大的变化。Bagging正好可以减小variance。
所以可以说random forest是Bagging的一种特殊情况,也可以说random forest是为了提高决策树性能(稳定性)而使用的一种策略。
那么如何进行所谓的“bootstrap”步骤?产生大量的“D”?
那究竟需要多少棵决策树呢?作者在一次比赛中使用了12000棵。
Bagging技术我们之前谈到过了:
也就是说,对于某个g来说,有将近三分之一的资料没有被使用!这是巨大的浪费!如何使用这些OOB资料呢?
回想一下validation:
假设每一个样本有很多Feature,那其中有很多冗余的特性,有很多与问题不相关的特性,如何选择我们想要的特性呢?
Aggregation(1):Blending、Bagging、Random Forest
标签:
原文地址:http://www.cnblogs.com/wangyanphp/p/5520172.html