随机森林算法是什么?

  • 随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble
    Learning)方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想–集成思想的体现。
  • 其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的
    Bagging 思想。

决策树与随机森林的区别

  • 决策树通常通过计算信息增益和基尼指数来生成节点和规则时,相比之下,随机森林则是随机的。
  • “深度”决策树往往会遭遇过拟合问题。而随机森林则可以通过创建随机的特征子集并使用这些子集构建较小的树,随后组成子树,这种方法可以防止大部分情况的过拟合。要注意的是,这同时会使得计算速度变慢,并取决于随机森林构建的树数。

决策树的构建

步骤1:将所有的数据看成是一个节点,进入步骤2;

步骤2:从所有的数据特征中挑选一个数据特征对节点进行分割,进入步骤3;

步骤3:生成若干孩子节点,对每一个孩子节点进行判断。如果满足停止分裂的条件,进入步骤4;否则,进入步骤2;

步骤4:设置该节点是子节点,其输出的结果为该节点数量占比最大的类别。

sklearn之随机森林算法重要的超参数

max_leaf_nodes, 叶子节点的最大数目。
提高准确度
n_estimators,表示算法在进行最大投票或采取预测平均值之前建立的树数。 一般来说,树的数量越多,性能越好,预测也越稳定,但这也会减慢计算速度。
criterion,节点分裂函数,可选“gini”,“entropy”。
max_depth,树的最大深度。如果缺省,则算法运行到所有叶子都是“纯”的才结束;或者直到叶子节点的samples数量少于min_samples_split为止。
max_features,The number of features to consider when looking for the best split.
If int, then consider max_features features at each split. Sklearn提供了几个选项,在他们的文档中有描述。
min_samples_leaf,The minimum number of samples required to be at a leaf node. A split point at any depth will only be considered if it leaves at least min_samples_leaf training samples in each of the left and right branches. 叶子节点所包含的最小的sample个数。
min_impurity_decrease, 如果一个节点分裂之后使得不纯度下降的值大于min_impurity_decrease,则可以开始分裂。

提高泛化能力
min_impurity_split,一个关于不纯度的阈值。当节点的不纯度大于min_impurity_split的时候,可以分裂。

加快模型计算速度
n_jobs超参数表示引擎允许使用处理器的数量。 若值为1,则只能使用一个处理器。 值为-1则表示使用所有处理器。
random_state,表示随机数种子,保证模型的输出具有可复制性。 当它被赋于一个指定值,且模型训练具有相同的参数和相同的训练数据时,该模型将始终产生相同的结果。
oob_score(也称为oob采样),它是一种随机森林交叉验证方法。 在这个抽样中,大约三分之一的数据不用于模型训练,而用来评估模型的性能。这些样本被称为袋外样本。它与留一法交叉验证方法非常相似,但几乎没有附加的计算负担。