机器学习笔记(3) 随机森林

admin 2018-12-04 阅读


random forest 和 extra-trees是对decison tree做ensemble而得到最终模型的两种算法.

阅读本文前需要先了解一下

机器学习笔记1:决策树

机器学习笔记2:集成学习

 

random_forest

决策树在节点划分上,在随机的特征子集中寻找最优划分特征.进一步增强了随机性,抑制了过拟合.

class sklearn.ensemble.RandomForestClassifier(n_estimators=10criterion='gini'max_depth=Nonemin_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0max_features='auto'max_leaf_nodes=Nonemin_impurity_decrease=0.0min_impurity_split=Nonebootstrap=Trueoob_score=Falsen_jobs=1random_state=Noneverbose=0warm_start=Falseclass_weight=None)

随机树的随机性体现在

  • 每一颗决策树只学习部分的训练数据
  • 决策树在做节点划分时,从某一特征子集中选取出最优划分特征.而不是从全部特征中选取.

 

extra-trees

class sklearn.ensemble.ExtraTreesClassifier(n_estimators=10criterion='gini'max_depth=Nonemin_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0max_features='auto'max_leaf_nodes=Nonemin_impurity_decrease=0.0min_impurity_split=Nonebootstrap=Falseoob_score=Falsen_jobs=1random_state=Noneverbose=0warm_start=Falseclass_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)

声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。