随机森林做特征选择在sklearn中的实现

随机森林构建步骤如下

  1. 原始数据集S,此时树的深度depth=0。

  2. 针对集合S,遍历每一个feature的每一个value,用该value将原数据集S分裂成2个集合:左集合S_left(<=value的样本)、右集合S_right(>value的样本),每一个集合也叫做一个结点。分别计算这2个集合的mse,找到使得(left_mse+right_mse)最小的那个value,记录下此时的feature名称和value,这个就是最佳分割特征以及最佳分割值;
    每一个集合/结点mse的计算方法如下:

    • mean = sum(该集合内每一个样本的目标值) / 该集合内样本总数。(ps:这个mean就是该结点的值,也就是落在该结点内的样本的预测值,同一个结点中的样本具有同一个预测值。)
    • mse = sum((该集合内每一个样本的目标值 - mean)^2 )

    为什么要用均方差mse来作为分裂的依据呢?
    只要是能衡量预测值和真实值/目标值之间的差距的数学公式,都可以用,例如信息增益、信息增益比、基尼系数等等。但是均方差有更好的好处:一阶导数和二阶导数可求并好求。

  3. 找到最佳分割feature以及最佳分割value之后,用该value将集合S分裂成2个集合:左集合S_left、右集合S_right,每一个集合也叫做一个结点。此时树的深度depth += 1。

  4. 针对集合S_left、S_right分别重复步骤2,3,直到达到终止条件。

    终止条件有:
    1、特征已经用完了:没有可供使用的特征再进行分裂了,则树停止分裂;
    2、子结点中的样本已经都是同一类:此时,样本已经全部被划分出来了,不用再进行区分,该结点停止分裂(不过一般很难达到,达到的话,该树肯定过拟合);
    3、子节点中没有样本了:此时该结点已经没有样本可供划分,该结点停止分裂;
    很多算法中还有以下终止条件,为了防止过拟合:
    1、树达到了最大深度:depth >= max_depth,树停止分裂。
    2、结点的样本数量达到了阈值:如果一个集合(结点)的样本数量 < min_samples_leaf,则树停止分裂;
    其中,max_depth和min_samples_leaf都是人为制定的超参数。

后续再来补充在sklearn中的位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值