随机森林

1.随机森林

随机森林是一种重要的基于Bagging的集成学习方法,可以用来做分类、回归等问题。

随机森林有许多优点:
  • 具有极高的准确率
  • 随机性的引入,使得随机森林不容易过拟合
    因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不断更新每个样本以及子分类器的权重。因此模型相对简单点,不容易出现过拟合。

  • 随机性的引入,使得随机森林有很好的抗噪声能力

  • 能处理很高维度的数据,并且不用做特征选择
  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
  • 训练速度快,可以得到变量重要性排序
  • 容易实现并行化
随机森林的缺点:
  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
  • 随机森林模型还有许多不好解释的地方,有点算个黑盒模型

随机森林的构建过程大致如下:

  • 从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集
  • 对于n_tree个训练集,我们分别训练n_tree个决策树模型
  • 对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂
  • 每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝
  • 将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果
设有N个样本,M个变量(维度)个数,该算法具体流程如下:
  1. 确定一个值m,它用来表示每个树分类器选取多少个变量。(注意这也是随机的体现之一)
  2. 从数据集中有放回的抽取 k 个样本集,用它们创建 k 个树分类器。另外还伴随生成了 k 个袋外数据,用来后面做检测。
  3. 输入待分类样本之后,每个树分类器都会对它进行分类,然后所有分类器按照少数服从多数原则,确定分类结果。
重要参数

1.预选变量个数 (即框架流程中的m);
2. 随机森林中树的个数。

背景知识:
1.Bagging(套袋法)

bagging的算法过程如下:

从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

2.Boosting(提升法)

boosting的算法过程如下:

对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

3.Bagging,Boosting的主要区别

样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提升树

3)Gradient Boosting + 决策树 = GBDT
决策树

常用的决策树算法有ID3,C4.5,CART三种。

3种算法的模型构建思想都十分类似,只是采用了不同的指标。决策树模型的构建过程大致如下:
ID3,C4.5决策树的生成

输入:训练集D,特征集A,阈值eps 输出:决策树T

若D中所有样本属于同一类Ck,则T为单节点树,将类Ck作为该结点的类标记,返回T
若A为空集,即没有特征作为划分依据,则T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T,否则,计算A中各特征对D的信息增益(ID3)/信息增益比(C4.5),选择信息增益最大的特征Ag,若Ag的信息增益(比)小于阈值eps,则置T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T,否则,依照特征Ag将D划分为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由结点及其子节点构成树T,返回T,对第i个子节点,以Di为训练集,以A-{Ag}为特征集,递归地调用1~5,得到子树Ti,返回Ti

4.CART决策树的生成

这里只简单介绍下CART与ID3和C4.5的区别。

CART树是二叉树,而ID3和C4.5可以是多叉树,CART在生成子树时,是选择一个特征一个取值作为切分点,生成两个子树,选择特征和切分点的依据是基尼指数,选择基尼指数最小的特征及切分点生成子树

决策树剪枝
Python实现
参考资料:

https://blog.csdn.net/qq547276542/article/details/78304454
https://blog.csdn.net/google19890102/article/details/28611225
https://blog.csdn.net/google19890102/article/details/32329823
https://www.cnblogs.com/muchen/p/6883263.html
http://www.cnblogs.com/liuwu265/p/4690486.html
https://blog.csdn.net/mao_xiao_feng/article/details/52728164

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值