在 sklearn中,随机森林的函数模型是:
1 | RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini', |
参数:
n_estimators:integer,optional(default = 10)森林里的树木数量。
criteria:string,可选(default =“mse”)测量分割质量的功能。唯一支持的标准是均方误差为“mse”。注意:此参数是树特定的。
max_features:int,float,string或None,可选(default =“auto”)寻找最佳分割时要考虑的功能数量:如果是int,那么在每次拆分时考虑max_features特征。如果是float,那么max_features是一个百分比,并且 在每个拆分时考虑int(max_features * n_features)特征。如果是“auto”,那么max_features = n_features。如果“sqrt”,则max_features = sqrt(n_features)。如果“log2”,则max_features = log2(n_features)。如果没有,那么max_features = n_features。
注意:在找到节点样本的至少一个有效分区之前,搜索分割不会停止,即使它需要有效地检查超过max_features的特征。注意:此参数是树特定的。
max_depth:integer或None,可选(默认=无)树的最大深度。如果没有,那么节点将被扩展,直到所有的叶子都是纯的,或者直到所有的叶子都包含少于min_samples_split样本。如果max_leaf_nodes不为None则忽略。注意:此参数是树特定的。
min_samples_split:integer,optional(default = 2)拆分内部节点所需的最小样本数。注意:此参数是树特定的。
min_samples_leaf:integer,optional(default = 1)新创建的叶片中的最小样本数。拆分后,如果分割后,其中一个叶子将包含少于 min_samples_leaf样本。注意:此参数是树特定的。
min_weight_fraction_leaf:float,optional(default = 0。)输入样本的最小加权分数需要在叶节点。注意:此参数是树特定的。
max_leaf_nodes:int或None,可选(默认=无)以最好的方式种植具有max_leaf_nodes的树。最佳节点被定义为杂质的相对减少。如果无,则无限数量的叶节点。如果不是,那么max_depth将被忽略。注意:此参数是树特定的。
bootstrap:boolean,optional(default = True)是否在构建树时使用自举样本。
oob_score:bool是否使用外包样本来估计广义误差。
n_jobs:integer,optional(default = 1)并行运行的工作数量适合和预测。如果为-1,则将作业数设置为核心数。
random_state:int,RandomState实例或无,可选(默认=无)如果int,random_state是随机数生成器使用的种子; 如果RandomState的实例,random_state是随机数生成器; 如果没有,随机数生成器所使用的RandomState实例np.random。
verbose:int,可选(默认= 0)控制建树过程的冗长度。
warm_start:bool,可选(default = False)当设置为True时,重新使用上一次调用的解决方案来适应并向集合添加更多估计量,否则只适合整个新林。
重要参数分析
A. max_features:
随机森林允许单个决策树使用特征的最大数量。 Python为最大特征数提供了多个可选项。 下面是其中的几个:
Auto/None :简单地选取所有特征,每颗树都可以利用他们。这种情况下,每颗树都没有任何的限制。
sqrt :此选项是每颗子树可以利用总特征数的平方根个。 例如,如果变量(特征)的总数是100,所以每颗子树只能取其中的10个。“log2”是另一种相似类型的选项。
0.2:此选项允许每个随机森林的子树可以利用变量(特征)数的20%。如果想考察的特征x%的作用, 我们可以使用“0.X”的格式。
max_features如何影响性能和速度?
增加max_features一般能提高模型的性能,因为在每个节点上,我们有更多的选择可以考虑。 然而,这未必完全是对的,因为它降低了单个树的多样性,而这正是随机森林独特的优点。 但是,可以肯定,你通过增加max_features会降低算法的速度。 因此,你需要适当的平衡和选择最佳max_features。
B. n_estimators:
在利用最大投票数或平均值来预测之前,你想要建立子树的数量。 较多的子树可以让模型有更好的性能,但同时让你的代码变慢。 你应该选择尽可能高的值,只要你的处理器能够承受的住,因为这使你的预测更好更稳定。
C. min_sample_leaf:
如果您以前编写过一个决策树,你能体会到最小样本叶片大小的重要性。 叶是决策树的末端节点。 较小的叶子使模型更容易捕捉训练数据中的噪声。 一般来说,我更偏向于将最小叶子节点数目设置为大于50。在你自己的情况中,你应该尽量尝试多种叶子大小种类,以找到最优的那个。
参考&引用
http://scikit-learn.org/0.16/modules/generated/sklearn.ensemble.RandomForestRegressor.html# sklearn.ensemble.RandomForestRegressor
http://blog.csdn.net/y0367/article/details/51501780