为什么随机森林强
当集成学习的基学习器均为决策树时,称随机森林,是Bagging的一种变体。决策树在选择划分属性时,是在当前属性集合中选择最优属性;而在随机森林中,对每个基决策树的每个结点,从该节点的属性集合中随机选择一个包含k
个属性的子集,再从这个子集中选择最优的属性用作划分。
这个k
控制了随机性的程度:当k值等于当前结点的属性集合中所有属性时,表示随机性为0;当k=1时,则表示,在当前结点的属性集合中随机选取一个,之后就使用这一个作为划分,不管它是好是坏(因为没得选,只有这一个)。一般情况下,选取k为log(d)
, 以2为底数。
为什么随机森林可以“代表集成学习技术”,Bagging中的基学习器多样性是仅仅通过数据的扰动达到的。而随机森林的多样性,不仅来源于数据扰动,还来自属性的扰动。
实现随机森林:
例
使用moon数据集:
1 | x, y = datasets.make_moons(n_samples=1000, noise=0.2, random_state=111) |
构建一片由500棵树的森林:
1 | from sklearn.ensemble import RandomForestClassifier |
模型参数:
1 | RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini', |
可以看出随机森林由那些参数,可以如何设置。理解了算法原理,才能理解每个参数如何使用。测试集上准确率为95.6%.
Extra-Tree
还有一种特殊随机森林:Extra-Tree,与经典森林不同的是,这种森林在结点划分时,完全随机,也就是说在当前节点的所有属性里随机选择一个,而非选择最优的。如此一来,森林中的每一棵树的就更加不同了,即多样性更强了。示例如下:
1 | from sklearn.ensemble import ExtraTreesClassifier |
结果 95.5%
回顾了Bagging,随机森林,Extra-Tree 都进行了分类任务的应用。也可以将这些集成用于回归任务。
敲黑板样本数量的扰动,样本属性的扰动,增强不同决策树的多样性。