random forest 和 extra-trees是对decison tree做ensemble而得到最终模型的两种算法.
阅读本文前需要先了解一下
机器学习笔记1:决策树
机器学习笔记2:集成学习
 
random_forest
决策树在节点划分上,在随机的特征子集中寻找最优划分特征.进一步增强了随机性,抑制了过拟合.
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)¶
随机树的随机性体现在
每一颗决策树只学习部分的训练数据
决策树在做节点划分时,从某一特征子集中选取出最优划分特征.而不是从全部特征中选取.
 
extra-trees
class sklearn.ensemble.ExtraTreesClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=False, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)¶
从名字就可以看出来,extra-trees,极限随机树们 =。=.  其实也是一个森林,只是这个森林里的树比random forest里的树还要更随机.
相比与random forest  extra-trees进一步增大了随机性。这种随机性地增加体现在
在节点划分上,不光特征是从特征子集随机取的,阈值也是随机取的.
This usually allows to reduce the variance of the model a bit more, at the expense of a slightly greater increase in bias. 这种随机性的引入,通常会导致模型的方差减小,代价就是偏差可能会略微升高.
 
这里解释一下机器学习中的偏差(bias)和方差(variance).
一图胜千言
 
上图的点可以理解为一个个的模型,
high bias意味着欠拟合,模型过于简单了. low bias意味着准确率比较高.   这个相对好理解.  点离红心越近,说明在训练集上预测越准确.偏差越小.
high variance意味着过拟合,模型过于复杂,过分地去拟合训练数据了,点很分散,一旦训练数据发生一些变化,学习的结果将产生巨大变化.
更多细致的讨论见知乎上的这个回答
 
使用sklearn中的random forest和extra-trees
复制代码
from sklearn.ensemble import RandomForestClassifier
rf_clf = RandomForestClassifier(n_estimators=500, oob_score=True, random_state=666, n_jobs=-1)
rf_clf.fit(X, y)
from sklearn.ensemble import ExtraTreesClassifier
et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, random_state=666, n_jobs=-1)
et_clf.fit(X, y)
https://www.cnblogs.com/sdu20112013/p/10063722.html