机器学习-随机森林原理及应用

机器学习-随机森林原理及应用

随机森林是一种集成学习的方法,它的最终结果取决于多课决策树的投票结果。

随机森林中森林的含义

对于分类问题,直观来讲就是对一个数据集合构造很多棵决策树,然后对于新样本每一棵决策树都会输出一个结果,最后选择多棵决策树中输出类别最多的结果作为最终的输出结果。这也就是随机森林中森林的含义。

随机森林中随机的含义

这也是随机森林最重要的一点,随机森林的随机主要体现在两方面:

  • 假设有 N N N个样本,每一棵决策树通过随机有放回的方式选取 N N N条数据构成训练集。注意,这里的新的训练集可能包含重复的数据,也有部分数据未被选取到,没有参与到训练。
  • 假设数据有 M M M个特征,每一棵决策树通过随机选取的方式选取 m ( m < < M ) m(m<<M) m(m<<M)个特征构成训练集合

随机森林的优点

  • 具有极高的准确率
  • 随机性的引入,使得随机森林不容易过拟合
  • 随机性的引入,使得随机森林有很好的抗噪声能力
  • 能处理很高维度的数据,并且不用做特征选择
  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
  • 训练速度快,可以得到变量重要性排序
  • 容易实现并行化

随机森林的缺点

  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
  • 随机森林模型还有许多不好解释的地方,有点算个黑盒模型

sklearn中随机森林的参数意义

python的sklearn库中自带有随机森林的函数,可通过from sklearn.ensemble import RandomForestClassifier加载

1.随机森林框架参数

n_estimators:对原始数据集进行有放回抽样生成的子数据集个数,即决策树的个数。若n_estimators太小容易欠拟合,太大不能显著的提升模型,所以n_estimators选择适中的数值,版本0.20的默认值是10,版本0.22的默认值是100 。
bootstrp:是否对样本集进行有放回抽样来构建树,True表示是,默认值True
oob_score:是否采用袋外样本来评估模型的好坏,True代表是,默认值False
RF框架的参数很少,框架参数择优一般是调节n_estimators值,即决策树个数。

2.随机森林中决策树参数含义

max_features:构建决策树最优模型时考虑的最大特征数。默认是auto,则max_features = sqrt(n_features)
若为log2,则max_features = log2(n_features)
若为sqrt,则max_features = sqrt(n_features)与auto一样;
若为int类型的n,则max_features = n
若为float类型的n,则max_features =int(n * n_features)
若为None,则max_features =n_features
max_depth:决策树最大深度。若等于None,表示决策树在构建最优模型的时候不会限制子树的深度。如果模型样本量多,特征也多的情况下,推荐限制最大深度;若样本量少或者特征少,则不限制最大深度。
min_samples_leaf:叶子节点含有的最少样本。如果是int,则将min_samples_leaf作为最小值。如果是float,则min_samples_leaf为百分比, min_samples_leaf * n_samples是最小值。
min_samples_split:节点可分的最小样本数,默认值是2。整数型和浮点型的含义与min_samples_leaf类似。
max_leaf_nodes:最大叶子节点数。int设置节点数,None表示对叶子节点数没有限制。
min_impurity_decrease:float类型,节点划分的最小不纯度。假设不纯度用信息增益表示,若某节点划分时的信息增益大于等于min_impurity_decrease,那么该节点还可以再划分;反之,则不能划分。
criterion:表示节点的划分标准。不纯度标准参考Gini指数,信息增益标准参考entrop熵。
min_samples_leaf:叶子节点最小的样本权重和。叶子节点如果小于这个值,则会和兄弟节点一起被剪枝,只保留该叶子节点的父节点。默认是0,则不考虑样本权重问题。一般来说,如果有较多样本的缺失值或偏差很大,则尝试设置该参数值。

示例

参见利用Sklearn实现DataFrame数据的分类回归预测,以及对预测结果进行评价。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值