随机森林(Forests of Randomized Tree)分类器官方文件翻译 & Var V.S. Bias数学推导
目录
一、集成学习 (Ensemble methods)的定义和分类
三、sklearn.ensemble.RandomForest_()参数
一、集成学习 (Ensemble methods)的定义和分类
各个代表算法的详解,请点击链接:官方文档地址
- 含义:在指定了算法模型的基础上,相对于单个学习器,为了进一步提高算法模型的泛化能力/鲁棒性,集成多个“基学习器”、再综合它们的结果的方法,我们称之为集成学习。
- 分类:
集成学习分为2种体系:
- 使用“平均”思想的算法:其核心标准是先建立多个相互独立的“基学习器”,然后将各个结果“平均”。一般而言,集ping成jun之后的结果比任意一个“基学习器”的结果更好,因为集ping成jun的方法可以降低Variance。
· 代表算法有:Bagging Methods,Forests of randomized trees,等。
· 最大优点:可以方便的进行并行训练。
- 对应的使用“boosting/阶梯”思想的算法:每一个“基学习器”的结果,都是下一个“基学习器”的基础(因此不能进行并行运算)。所有“基学习器”的目标功能一致,就是降低集成学习器的bias。
· 代表算法有:AdaBoosting,Gradient Tree Boosting,等。
二、随机森林random forest 的定义和分类
含义:“随机森林”喻指集成学习器,森林中的一棵树树喻指一个“基学习器”,是bagging算法 的调整版。通过在原始数据集里采用有放回的随机抽样方法,从总样本集中得到n个子样本集,但是决策树在判断分割点的时候,有可能选用的属性个数小于子样本集的,再在此基础上,分别训练出n个CART“基学习器”,应用时分别从n个“基学习器”得到n个结果:
- 如果是classification,采用“投票”法选取得票最多的类作为集成学习器的结果;
- 如果是regression,采用“平均”方法获得均值作为集成学习器的结果。
分类:在scikit-learn中,RandomForest的分类是sklearn.ensemble.RandomForestClassifier,回归是sklearn.ensemble.RrandomForestRegressor。
对Bagging Methods算法在如下方面进行了改进:
- 使用CART决策树作为基学习器,形成森林;
- 从样本中使用BootStrap方法抽取n个子样本集;
- 从所有属性中随机选取K个属性,选择最佳分割属性作为分割点建立CART决策树;
三、sklearn.ensemble.RandomForest_()参数
1. sklearn.ensemble.RandomForest链接:官方文档
sklearn.ensemble.RandomForestClassifier(
n_estimators=’warn’,
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=None,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None)
- n_estimators:interger型参数,可选(默认值为10)。用来设定树/“基学习器”的个数。
PS:版本0..20里n_extimator默认值是10,版本0.22默认值为100.
-
criterion:string型参数,可选(默认值为“gini”)。用来设定比选取分枝字段的方法,有“gini”和“entropy”两种分枝标准。
-
max_depth:integer型,可选(默认值为“None”)。用来设定决策树的层数。如果是“None”,决策树的层数会一直拓深下去,直到所有的叶的纯度为100%(纯度概包含在于gini/entropy概念上),或者所有叶子里的样本数小于提前设定的min_samples_split。
-
min_samples_split:或 int型,或 float型,可选(默认值为2)。用来设定分割内部结点的最小样本数量:如果是int型,那么将min_smaples_split作为最小值;如果是float,那么min_samples_split是一个分数,ceil(min_samples_split*n_samples)是每次分割的最小样本数。
-
min_samples_leaf:或int型,或float型,可选(默认值为1)。用来设定叶节点上最小的样本数。无论分割节点在哪个层次,只有当左右分支中留有不低于min_samples_leaf数量的训练样本时,才会被考虑。尤其在回归的时候,它或许能有平滑模型的效果。如果是int型,那么min_samples_leaf作为最小值;如果是float型,那么min-samples_leaf是一个分数,ceil(min_smaples_leaf * n_samples)是每次分割的最小数。
-
min_weight_fraction_leaf:float型,可选(默认值为0)。用来设定叶节点上所需的(所有输入样本)总权重的最小加权分数。当没有提供sample_weight是,样品的权重相等。
-
max_features:或int型,或float型,或string型,或None,可选(默认值为“auto”)。用来设定在寻找最佳分割点时的feature数。
如果是int型,那么每个分割点处用数max_features;
如果是float型,max_reatures是一个分数,那么数int(max_features * n_features)是每次分割的数;
如果是“auto”/“sqrt”,那么数max_features=sqrt(n_featrues)
如果是“log2”,那么数max_features=log2(n_features)
如果是“None”,那么数max_features=n_features.
- max_leaf_nodes:或int型,可选(默认值是“None”)。用来设定在生长决策树时LeafNodes的参数。最好的节点被定义为不纯度的降低。如果是“None”,那么LeafNodes的数目没有限制。
……未完。
2. sklearn.ensemble.RandomForestRegressor链接:官方文档
sklearn.ensemble.RandomForestRegressor(
n_estimators=’warn’,
criterion=’mse’,
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=None,
random_state=None,
verbose=0,
warm_start=False)
Refressor与Classifier相比,参数部分一致,除了这4处:
- criterion:string型,可选(默认值是“msc”)。同样用来设定比选取分枝字段的方法,有“mse”和“mae”两种标准。“mse”适用平均方差(mean squared error),“mae”适用平均标准差(eman absolute error)。
- max_features:(只有“auto”时,max_features计算式不同)。如果为“auto”,那么max_featrues = n_features。
- obb_score:bool型,可选(默认值为“False”)。用来设定是否使用bag之外的样本来预测未知数据的R^2.
- 最后一行后边,没有class_weight参数项。