随机森林算法梳理及相关参数介绍

集成学习的概念

集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个个体学习器都是同质的"弱学习器"。

bagging和boosting

bagging和boosting都属于集成学习算法。

bagging,是一种非常简单而通用的机器学习集成学习算法。RF(随机森林)需要用到bagging,但是其他的分类或者回归算法都可以用到bagging,以减少over-fitting。

boosting是一族可将弱学习器提升为强学习器的算法.

随机森林

随机森林是以决策树为个体学习器进行集成的算法,决策树容易过拟合,随机森林可以降低拟合程度。

简单来说从原始训练数据集中,有放回的采样出若干个小集合,然后在每个小集合上train model,对所有的model output取平均(regression)或者投票(classification)。

  1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(自助法)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
  3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

优点

  1. 单个决策树模型很容易受到噪音数据的影响,而混合模型就不容易会。
  2. 但是如果在同样的数据上train多棵树,也很容易得到强相关的树(或者是一样的树),那效果就不好了;上面的Bootstraping的方法就是让model看到不同的train data。
  3. 随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。
  4. 训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。
  5. 随机森林抗过拟合能力比较强

缺点

  1. 随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
  2. 对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。

随机森林参数

n_estimators :决策树的个数,越多越好,但也不能太多。

criterion :决策树支持的标准是”gini”(gini系数) or “entropy”(熵值)(default=”gini”)。

max_depth:树的最大深度。

min_samples_split:根据属性划分节点时,每个划分最少的样本数。

min_samples_leaf :叶子节点最少的样本数。

max_features

选择最适属性时划分的特征不能超过此值。
当为整数时,即最大特征数;当为小数时,训练集特征数*小数;
if “auto”, then max_features=sqrt(n_features).
If “sqrt”, thenmax_features=sqrt(n_features).
If “log2”, thenmax_features=log2(n_features).
If None, then max_features=n_features.

bootstrap:是否有放回的采样

n_jobs:并行job个数。这个在ensemble算法中非常重要,尤其是bagging(而非boosting,因为boosting的每次迭代之间有影响,所以很难进行并行化),因为可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job。

应用场景

随机森林可用于变量比较多的分类场景,且变量为离散型较好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章