随机森林,Random Forest,简称RF,是一个很强大的模型。要研究随机森林,首先要研究决策树,然后再去看RF是怎么通过多颗决策树的集成提高的模型效果。
决策树分为三种,分别是ID3、C4.5和CART决策树:
ID3:信息增益
C4.5:信息增益率
CART:Gini系数
而随机森林算法中,“随机”是这个模型的灵魂,“森林”只是一种简单的组合方式而已。随机森林在构建每棵树的时候,为了保证每棵树之间的独立性,通常会采用两到三层的随机性。
1)从数据抽样开始,每颗树都随机地在原有数据的基础上进行有放回的抽样。假定训练数据有1万条,随机抽取8千条数据,因为是有放回的抽样,可能原数据中有500条被抽了两次,即最后的8千条中有500条是重复的数据。每颗树都进行独立的随机抽样,这样保证了每颗树学习到的数据侧重点不一样,保证了树之间的独立性。
2)抽取了数据,就可以开始构建决策分支了,在每次决策分支时,也需要加入随机性,假设数据有20个特征(属性),每次只随机取其中的几个来判断决策条件。假设取4个属性,从这4个特征中来决定当前的决策条件,即忽略其它的特征。取特征的个数,通常不能太小,太小了使得单颗树的精度太低,太大了树之间的相关性会加强,独立性会减弱。通常取总特征的平方根,或者log2(特征数)+1,在scikit-learn的实现中,支持sqrt与log2,而spark还支持onethird(1/3)。
3)在结点进行分裂的时候,除了先随机取固定个特征&#x