Bagging
- 集成学习的两个流派,一个是boosting派系,各个弱学习器之间有依赖关系。另一个是bagging流派,各个弱学习器之间没有依赖关系,可以并行拟合。随机森林是bagging流派可以和boosting派系梯度提升树GBDT分庭抗礼的算法。
- 随机采样(bootsrap)从训练集里面采集固定个数的样本,每采集一个样本后,都将样本放回,之前采集到的样本在放回后有可能继续被采集到。一般会随机采集和训练集样本数m一样个数的样本,这样得到的采样集和训练集样本的个数相同,但是样本内容不同。(GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。)
- 对于一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是 1 m \frac{1}{m} m1。不被采集到的概率为 1 − 1 m 1-\frac{1}{m} 1−m1。如果m次采样都没有被采集中的概率是 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1−m1)m。当 m → ∞ m→∞ m→∞时, ( 1 − 1 m ) m → 1 e ≃ 0.368 (1-\frac{1}{m})^m→\frac{1}{e}≃0.368 (1−m1)m→e1≃0.368。也就是说,在bagging的每轮随机采样中,训练集中约有36.8%的数据没有被采样集采中过。
- 对于这部分约36.8%的没有被采样到的数据,常常称之为袋外数据(Out Of Bag,简称OOB)。这些数据没有参与训练集模型的拟合,因此可以做测试集来检测模型的泛化能力。
- bagging对弱学习器没有限制,这和Adaboost一样,但最常用的一般也是决策树和神经网络。
- bagging的集合策略也:对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
bagging算法流程
输入为样本集
D
=
{
(
x
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
m
,
y
m
)
}
D=\{(x_,y_1),(x_2,y_2), ...(x_m,y_m)\}
D={(x,y1),(x2,y2),...(xm,ym)},弱分类器迭代次数 T。
输出为最终的强分类器
f
(
x
)
f(x)
f(x)
- 对于t = 1,2…,T:
对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集 D t D_t Dt
用采样集 D t D_t Dt训练第t个弱学习器 G t ( x ) G_t(x) Gt(x) - 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
随机森林(Random Forest)
- RF使用了CART决策树作为弱学习器。
- 在使用决策树的基础上,RF对决策树的建立做了改进,普通的决策树会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,而RF随机选择节点上的一部分样本特征(小于n,假设为 n s u b n_{sub} nsub),然后在这些随机选择的 n s u b n_{sub} nsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
- 如果如果 n s u b = n n_{sub}=n nsub=n,则此时RF的CART决策树和普通的CART决策树没有区别。𝑛𝑠𝑢𝑏越小,模型越健壮,当然此时对于训练集的拟合程度会变差( n s u b n_{sub} nsub越小,模型的方差会减小,但是误差会增大。一般会通过交叉验证调参获取一个合适的 n s u b n_{sub} nsub的值)。
RF算法流程
输入为样本集
D
=
{
(
x
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
m
,
y
m
)
}
D=\{(x_,y_1),(x_2,y_2), ...(x_m,y_m)\}
D={(x,y1),(x2,y2),...(xm,ym)},迭代次数 T。
输出为最终的强分类器
f
(
x
)
f(x)
f(x)
- 对于t = 1,2…,T:
- 对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集 D t D_t Dt
- 用采样集 D t D_t Dt训练第t个决策树模型 G t ( x ) G_t(x) Gt(x),在划分决策树模型节点的时候, 在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分。
- 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
随机森林的推广
extra trees
- 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
- 在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点。而extra trees会随机选择一个特征值来划分决策树。
模型的方差相对于RF减少,但是偏差相对于RF进一步增大。
Totally Random Trees Embedding
- Totally Random Trees Embedding(TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。
- TRTE,建立T个决策树来拟合数据。当决策树建立完毕以后,新数据特征即数据集里的每个数据在T个决策树中叶子节点的位置。比如3颗决策树,每个决策树有5个叶子节点,某个数据特征𝑥划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 成为15维的高维特征。
Isolation Forest
- Isolation Forest(以下简称IForest)是一种异常点检测的方法。
- IForest也会对训练集进行随机采样。对于RF,采样集样本个数等于训练集个数。但IForest采样个数要远远小于训练集个数,因为异常点检测只需要部分样本一般就可以将异常点区别出来。
- 对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。
- IForest一般会选择一个比较小的最大决策树深度max_depth,少量的异常点检测一般不需要很大规模的决策树。
- 对于异常点的判断:将测试样本拟合到T颗决策树,计算在每颗决策树上样本点x所在叶子节点深度 h t ( x ) h_t(x) ht(x),从而计算出平均深度 h ( x ) h(x) h(x)。此时样本点𝑥的异常概率: s ( x , m ) = 2 − h ( x ) c ( m ) s(x,m) = 2^{-\frac{h(x)}{c(m)}} s(x,m)=2−c(m)h(x) c ( m ) = 2 ln ( m − 1 ) + ξ − 2 m − 1 m , ξ 为 欧 拉 常 数 , m 为 样 本 个 数 c(m) =2\ln(m-1) + \xi - 2\frac{m-1}{m}, \; \xi为欧拉常数,m为样本个数 c(m)=2ln(m−1)+ξ−2mm−1,ξ为欧拉常数,m为样本个数
- s(x,m)的取值范围是[0,1],取值越接近1,则是异常点的概率也越大。
随机森林小结
RF的主要优点
- 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。
- 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高时,仍然能高效的训练模型。
- 在训练后,可以给出各个特征对于输出的重要性。
- 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
- 对部分特征缺失不敏感。
- 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
RF的主要缺点
- 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
- 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合模型的效果。