【机器学习】集成学习(四)----随机森林
从前面的提升树,到
GBDT
G
B
D
T
,再到
RF
R
F
,我们可以发现在集成学习中,基分类器选择决策树往往能有很不错的效果,这是因为它们通常具有较低的偏差和较高的方差(分类误差小,但容易过拟合),这样的特性使其在平均过程中更有利。这一篇我们就来了解一下随机森林这个算法的方法。
随机森林(
RandomForest
R
a
n
d
o
m
F
o
r
e
s
t
),是在以决策树为基分类器构建
Bagging
B
a
g
g
i
n
g
集成的基础上进一步在
cart
c
a
r
t
决策树的训练过程引入了随机属性选择。关于随机森林这一算法,书上对其的描述都比较少,因此去看了一些论文和文章。
【算法思想】
总的来看,其实就是用
bootstrap
b
o
o
t
s
t
r
a
p
自助采样得到的
T
T
个数据集,以分类决策树作为基分类器进行学习,得到棵分类决策树,用投票法的方式将它们结合起来变为森林(将测试样本输入,每棵决策树会给出相应的分类,森林的最终分类,选择这些分类中出现最多的类别作为输出)。
随机体现在哪?
那么,随机森林的“随机”是体现在哪呢?其实就是体现在,对自助采样得到的数据集学习分类器这一学习过程中。
回忆前面的决策树生成算法,我们通常会根据每个节点上的所有特征,选择最优划分特征来进行划分节点。而在随机森林的每棵决策树生成中,我们对最优划分特征的选取集合并不是每个节点上的所有特征,而是会通过对所有特征这一集合随机选取一个子集来作为我们的选取范围,然后再在这个子集集合内选择最优划分特征。
算法过程:
输入:原始训练数据集
D
D
(个样本),特征集
A
A
(有个特征),参数
k
k
输出:最终分类器(随机森林)
(1)对原始训练数据集采用
bootstrap
b
o
o
t
s
t
r
a
p
方法,得到
T
T
个样本集(每个样本集有个样本);
由于自助采样只使用了原始训练数据集的约63.2%的样本,剩下的36.8%的未抽
由
于
自
助
采
样
只
使
用
了
原
始
训
练
数
据
集
的
约
63.2
%
的
样
本
,
剩
下
的
36.8
%
的
未
抽
到样本可用于包外错误估计(The out-of-bag(oob) error estimate)
到
样
本
可
用
于
包
外
错
误
估
计
(The out-of-bag(oob) error estimate)
因此在随机森林中,不需要交叉验证或单独的测试集来做错误估计
因
此
在
随
机
森
林
中
,
不
需
要
交
叉
验
证
或
单
独
的
测
试
集
来
做
错
误
估
计
(2)
t=1,2,...,T
t
=
1
,
2
,
.
.
.
,
T
,对样本集
t
t
进行学习,得到基分类器(基决策树
t
t
);
①对基决策树t的每个节点,先从该节点的所有特征集合中随机选择k个特征作为子集,
①
对
基
决
策
树
t
的
每
个
节
点
,
先
从
该
节
点
的
所
有
特
征
集
合
中
随
机
选
择
k
个
特
征
作
为
子
集
,
然后再从这个子集中选择最优属性进行划分。
然
后
再
从
这
个
子
集
中
选
择
最
优
属
性
进
行
划
分
。
②对基决策树t进行完全划分,即决策树的某一叶节点要么无法继续划分,要么里
②
对
基
决
策
树
t
进
行
完
全
划
分
,
即
决
策
树
的
某
一
叶
节
点
要
么
无
法
继
续
划
分
,
要
么
里
面的所有样本都是同一个分类
面
的
所
有
样
本
都
是
同
一
个
分
类
(3)用这
T
T
棵基决策树(基分类器)组成随机森林(最终分类器)。
作为结合策略,票数最多的为最终结果)
作
为
结
合
策
略
,
票
数
最
多
的
为
最
终
结
果
)
从上面的算法我们可以看出,随机森林中只有决策树的生成,并没有剪枝,回忆
从
上
面
的
算
法
我
们
可
以
看
出
,
随
机
森
林
中
只
有
决
策
树
的
生
成
,
并
没
有
剪
枝
,
回
忆
决策树剪枝的意义,实际上是为了减小过拟合,由于随机森林生成决策树过程中
决
策
树
剪
枝
的
意
义
,
实
际
上
是
为
了
减
小
过
拟
合
,
由
于
随
机
森
林
生
成
决
策
树
过
程
中
样本集随机,特征集也随机,因此很难出现过拟合现象,但是对于每一棵决策树
样
本
集
随
机
,
特
征
集
也
随
机
,
因
此
很
难
出
现
过
拟
合
现
象
,
但
是
对
于
每
一
棵
决
策
树
而言,它们的性能其实是很弱的,但通过结合策略集成为森林后,性能得到了很
而
言
,
它
们
的
性
能
其
实
是
很
弱
的
,
但
通
过
结
合
策
略
集
成
为
森
林
后
,
性
能
得
到
了
很
大的提升,这可能就是所谓的集思广益、众志成城吧(笑)
大
的
提
升
,
这
可
能
就
是
所
谓
的
集
思
广
益
、
众
志
成
城
吧
(
笑
)
算法中重要参数:
1.决策树的数量
T
T
树的数量越多,则过拟合越难出现,预测的效果会越好,但是这样会导致模型很大
2.每个节点上特征子集中的特征数
当
k=1
k
=
1
时,则是随机选择一个特征用于划分,当
k=
k
=
当前节点中所有特征值数量
K′
K
′
时,则与传统的决策树无异。一般情况下,推荐
k=log2K′
k
=
l
o
g
2
K
′
【算法优缺点】
优点:
1、在当前的很多数据集上表现都很不错,相对于其他算法有着很大的优势;
比如超参数数量不多,且这些超参数易理解
比
如
超
参
数
数
量
不
多
,
且
这
些
超
参
数
易
理
解
比如相较于Boosting系列的AdaBoost和GBDT来说,RF实现比较简单
比
如
相
较
于
B
o
o
s
t
i
n
g
系
列
的
A
d
a
B
o
o
s
t
和
G
B
D
T
来
说
,
R
F
实
现
比
较
简
单
2、训练速度很快,能够高度并行化;
Bagging算法的特点,即各个模型之间相互独立,因此对于RF而言同理,
B
a
g
g
i
n
g
算
法
的
特
点
,
即
各
个
模
型
之
间
相
互
独
立
,
因
此
对
于
R
F
而
言
同
理
,
训练时树与树之间是相互独立的
训
练
时
树
与
树
之
间
是
相
互
独
立
的
3、它可以估计出每个特征的重要性,并且检测到特征间的关系;
---It gives estimates of what variables are important in the classification.
---It gives estimates of what variables are important in the classification.
---Prototypes are computed that give information about the relation
---Prototypes are computed that give information about the relation
between the variables and the classification.
between the variables and the classification.
4、由于随机选择节点的特征子集,因此它能够高效的训练样本特征很多(高维度)的模型;
5、它有一个有效的方法来估计丢失的数据,并在大部分数据丢失时保持准确性;
---It has an effective method for estimating missing data and maintains
---It has an effective method for estimating missing data and maintains
accuracy when a large proportion of the data are missing.
accuracy when a large proportion of the data are missing.
6、对于不平衡的数据集来说,它可以平衡误差;
---It has methods for balancing error in class population unbalanced data
---It has methods for balancing error in class population unbalanced data
sets.
sets.
7、模型的方差小,抗过拟合能力强,由于对泛化误差使用的是无偏估计模型,因此泛化能力强;
8、不仅可以做分类、回归问题,还可以推广到无标签数据,进而将功能扩展到无监督聚类,数据视图,异常点检测等。还有很多基于
RF
R
F
的变种算法,如
extra trees
extra trees
、
Totally Random Trees Embedding
Totally Random Trees Embedding
、
Isolation Forest
Isolation Forest
,应用相当广泛(这些算法的大概内容,可以去下面贴出的博客中看一看)。
---The capabilities of the above can be extended to unlabeled data,
---The capabilities of the above can be extended to unlabeled data,
leading to unsupervised clustering, data views and outlier detection.
leading to unsupervised clustering, data views and outlier detection.
缺点:
1、对于特征较少的样本(低维度),分类效果可能并不理想;
2、在做回归问题时,它的效果并不如在分类问题上的效果,因为它不能给出一个连续的输出(即预测值不会超出训练数据集的范围),现在已有证明表示,在某些噪音较大的数据集上,随机森林会出现过拟合现象。
3、和神经网络相同,随机森林也像一个黑盒子一般。我们难以控制与解释其模型内部的运行,只能通过改变参数和随机种子来不断调试。
【总结】
从上述的特点来看,我们可以发现,随机森林对高维数据,不平衡数据,缺失数据有着很好地训练效果。
对于随机森林的学习暂且没有深入下去了,集成学习也准备告一段落,后面要准备开始进行实践和提升代码能力了。有时间会补充学习EM算法、隐马尔科夫和条件随机场,然后再看看K均值和数据挖掘中其他一些聚类算法。
参考文献:
1.《机器学习》 周志华
2.随机森林 Leo Breiman 、Adele Cutler
https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#ooberr
3.Bagging与随机森林算法原理小结 刘建平Pinard
https://www.cnblogs.com/pinard/p/6156009.html