机器学习-随机森林原理及应用
随机森林是一种集成学习的方法,它的最终结果取决于多课决策树的投票结果。
随机森林中森林的含义
对于分类问题,直观来讲就是对一个数据集合构造很多棵决策树,然后对于新样本每一棵决策树都会输出一个结果,最后选择多棵决策树中输出类别最多的结果作为最终的输出结果。这也就是随机森林中森林的含义。
随机森林中随机的含义
这也是随机森林最重要的一点,随机森林的随机主要体现在两方面:
- 假设有 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,则不考虑样本权重问题。一般来说,如果有较多样本的缺失值或偏差很大,则尝试设置该参数值。