机器学习-随机森林 RandomForest

机器学习是一类算法的总称,这些算法企图从大量历史数据中挖掘出其中隐含的规律,并用于预测或者分类,更具体的说,机器学习可以看作是寻找一个函数,输入是样本数据,输出是期望的结果,只是这个函数过于复杂,以至于不太方便形式化表达。
需要注意的是,机器学习的目标是使学到的函数很好地适用于“新样本”,而不仅仅是在训练样本上表现很好。学到的函数适用于新样本的能力,称为泛化(Generalization)能力。

随机森林

随机森林是最流行和最强大的机器学习算法之一。它是 Bootstrap Aggregation(又称 bagging)集成机器学习算法的一种。
bootstrap 是从数据样本中估算数量的一种强大的统计方法。例如平均数。你从数据中抽取大量样本,计算平均值,然后平均所有的平均值以便更好的估计真实的平均值。

bagging 使用相同的方法,但是它估计整个统计模型,最常见的是决策树。在训练数据中抽取多个样本,然后对每个数据样本建模。当你需要对新数据进行预测时,每个模型都进行预测,并将所有的预测值平均以便更好的估计真实的输出值。
随机森林是对这种方法的一种调整,在随机森林的方法中决策树被创建以便于通过引入随机性来进行次优分割,而不是选择最佳分割点。
因此,针对每个数据样本创建的模型将会与其他方式得到的有所不同,不过虽然方法独特且不同,它们仍然是准确的。结合它们的预测可以更好的估计真实的输出值。
如果用方差较高的算法(如决策树)得到了很好的结果,那么通常可以通过 bagging 该算法来获得更好的结果。
算法思想: 训练数据集–> 随机数据采样 (第一重随机)AND 随机特征采样(第二重随机) –>训练数据集–> 建立决策树模型–>综合(平均/投票/多数结果法)–>最终结果

Random-Forest

随机森林模型调参方法

随机森林学习器的默认参数配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. bootstrap=True
# 2. criterion='mse'
# 3. max_depth=None
# 4. max_features='auto'
# 5. max_leaf_nodes=None
# 6. min_impurity_decrease=0.0
# 7. min_impurity_split=None
# 8. min_samples_leaf=1
# 9. min_samples_split=2
# 10. min_weight_fraction_leaf=0.0
# 11. n_estimators=10
# 12. n_jobs=1
# 13. oob_score=False
# 14. random_state=None
# 15. verbose=0
# 16. warm_start=False

1、系统参数
(1)random_state(随机发生器种子数)
如果是int,random_state是随机数发生器使用的种子; 如果是RandomState实例,random_state是随机数生成器; 如果为None,则随机数生成器是np.random使用的RandomState实例。

2、决策树参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(1)max_features(最大特征数)
划分特征时的最多特征数,可以是多种类型的值。默认为“None”,即划分时考虑所有特征数。

其他值:“log2”——最多考虑log2N个特征;“sqrt”/“auto”——最多考虑sqrt(N)个特征;int(n)——可填任意大于1且不大于特征数量的整数。

一般而言,当样本特征数较少(<50)时,使用默认配置即可。

(2)max_depth(决策树最大深度)
默认为“None”,即决策树建立子树时不限制子树的深度。在样本量较少或特征数较少的情况下可以使用默认配置。否则,推荐取值10-100之间。

(3)min_samples_split(内部结点再划分所需最小样本数)
当某节点的样本数少于min_samples_split时,不会继续再尝试选择最优特征来进行划分。 默认为2,如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大该值。

(4)min_samples_leaf(叶结点最少样本数)
当某叶结点数目小于样本数,则和兄弟结点一起被剪枝。默认为1。当样本量不大时,可以使用默认配置。否则推荐增大该值。

5)min_weight_fraction_leaf(叶结点最小样本权重和)
该值限制了叶结点所有样本权重和的最小值,如果小于该值,则会和兄弟节点一起被剪枝。 默认为0,即不考虑权重问题。当样本存在较多缺失值,或分类树样本的分布类别偏差很大时,将引入样本权重,此时需要考虑该值。

(6)max_leaf_nodes(最大叶结点数)
该值能够防止过拟合,默认为“None”,即不限制最大叶结点数。但特征不多时,使用默认配置即可。否则需要设置该值,具体数值通过交叉验证获得。

(7)min_impurity_split(结点划分最小不纯度)
该值限制了决策树的增长,当某结点的不纯度小于阈值,则该结点不再生成子结点,一般推荐使用默认值1e-7。

3、Bagging框架参数
Bagging框架中各弱学习器之间没有依赖,因此随机森林的调参难度低于梯度提升树。

1
2
3
4
5
6
7
8
(1)n_estimators(弱学习器最大迭代次数)
即弱学习器的个数。一般而言,该值太小易发生欠拟合,太大则成本增加且效果不明显。一般选取适中的数值,默认为10。

(2)oob_score (是否采用袋外样本评价模型)
默认为False。推荐使用True,因为这样可以反映模型拟合后的泛化能力。

(3)criterion(特征评价标准)
分类和回归模型的损失函数不同:分类模型默认为基尼指数,也可选择信息增益;回归模型默认为均方差(mse),也可选择绝对值差(mae)。一般而言选择默认配置即可。

参考链接: https://blog.csdn.net/Caesar1993_Wang/article/details/80337103

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2024 HELLO WORLD All Rights Reserved.

UV : | PV :