随机森林

  • boostraping:pull-up-by-your-own
  • 利用自己的资源:一种有放回抽样的方法

  • 分类:投票

  • 回归:平均

* Bagging的思想

  • 在样本集中(重采用)选出n个样本
  • 在所有属性上,对这n个样本建立分类器(ID3,C4.5,CART,SVM,LR等)
  • 重复以上两步m次,得到m个分类器
  • 将数据放在m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪个属性

* bagging的应用场合

  • 适合若分类器:

    1. 不稳定:随机采样会得到比较不同的基分类器
    2. 每个分类器的准确率略高于50%
    3. 例如决策树
  • 不适合强分类器:

    1. 稳定:随机采用对结果的影响不大
    2. 反而可能不如不集成
    3. 例如:K近邻

* bagging采样的数据集

  • 63.8%用来训练数据
  • 其余用了测试数据

1. 随机森林

  • 在bagging的基础上做了修改
  • 63.8% 是训练集合,其余是测试集合
  • 随机森林:不同树的关联性和每颗树的能力
  • 构建决策树,每次分裂,从全特征候选p集中选取m 个进行分裂,一般 m=srqt(p)
  • m是为了控制不同树之间的关联性,m大关联性大,所以m选择比p小的多

* 算法(forest-RI)

  • 从样本集中用boostrap采样,选择n个样本(0.638)
  • 从所有属性随机抽取k个属性(k=sqrt(m))
  • 选择最佳分割属性作为节点,创建CART树,但是不剪枝
  • 重以上m次,即创建了m颗树
  • m颗cart树形成随机森林,通过投票决定结果

* 算法(forest-RC)

  • 使用输入特征的线性组合
  • 使用已有的特征构成线性组合
  • 组合系数是[-1,1]之间的随机数

* 随机森林不存在过拟合

2. 特征选择

http://blog.csdn.net/jasonding1354/article/details/47066917

* OOB error估计

  • boostrap中1/3的样本不会出现在采用样本中,不参加决策树的构建;1/3的样本称为袋外数据oob(out-of-bag)
  • errOOB1:每颗决策树,选择相应的袋外数据(oob)计算袋外误差

  • 是G-平均得到(测试集数据(2/3),oob是剩余数据(1/3))

* perutation-test

  • 通过将第i个维度的特征的所有数据重新的随机调整位置,然后比较一下原始数据和调整之后的数据表现的差距,来评价特征的重要性

* 随机森林OOB特征选择

  • 首先建立m颗决策树,然后分别计算每棵树的OOB袋外误差errOOB1
  • 计算特征的重要性,随机的修改OOB的每个特征,再次计算errOOB2

  • 按特征重要性排序,然后剔除后面不重要的特征
  • 重复,只到选出n个特征

* 非线性问题可以通过RF来选择特


3. 随机森林的组合策略

* 平均法

* 投票法

* 学习法

  • 次级学习器

  • stacking学习法,从初级学习器中训练出初级学习器,然后生成新的数据集合(初级学习器的输出被当做样例输入特征,而初级学习器的标记仍被当做样例标记)

  • 过拟合问题:用初级学习器未使用的样本来产生次级学习器

4. 随机森林的参数

  • k=sqrt(m)
  • 树的个数:400
  • 树的深度:8-10

http://www.cnblogs.com/pinard/p/6156009.html

补充

  • Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”

  • bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
  • 由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。

* 随机森林算法

results matching ""

    No results matching ""