bootstrap
一批数据有m个样本,有放回的抽取m次,形成一个新的数据集,这种方法就是bootstrap。
新的数据集肯定是包含一些重复的数据,假设一条数据没有被抽中的概率为
1
−
1
m
1-\frac{1}{m}
1−m1,
m
m
m次抽取均未抽到的概率为
(
1
−
1
m
)
m
(1-\frac{1}{m})^m
(1−m1)m,当
m
m
m趋近与无穷大的时候,值为
1
e
\frac{1}{e}
e1,即36.8%。也就是说会有36.8%的数据没有被抽中,这些数据被称之为oob(out of bag),可以用作交叉验证。
bagging
全称bootstrap aggregating,采用bootstrap的方法获取k个新的数据集,使用这些新的数据集来建立k个模型,然后集成k个模型的输出结果。回归问题使用k个输出结果的均值作为最终的输出结果,分类问题采取投票方法作为最终的输出结果
随机森林
随机森林是一种特殊的bagging方法,它以CART决策树作为基模型,使用bootstrap方法形成k个新的数据集,再使用这k个新的数据集来训练CART决策树,在训练CART决策树的过程中不会使用全部的特征来训练,而是随机选择若干个特征来训练,随机选择的特征数越小,模型越健壮,可以通过交叉验证来选取合适的特征数,假如总特征数为
x
x
x,一般选取的特征数为
x
\sqrt{x}
x。由于bootstrap选择样本的随机性以及这里选择特征的随机性,大大降低了随机森林模型过拟合的风险,降低了随机森林模型的方差。对于回归问题而言,主模型的输出是若干个CART基模型输出的均值;对于分类问题而言,主模型的输出是若干个CART基模型输出的投票结果。
随机森林的CART基模型严格来讲并不是一个弱模型,这一点与boosting算法不同。算法的误差来自于偏差+方差,模型越复杂,偏差越小,方差越大,反之亦然。在随机森林中,由于样本选择的随机性以及特征选择的随机性,导致了每一个模型的偏差很大,所以需要适当的加深树的深度,即增强基模型,来减少基模型的偏差,从而减少总体误差。
优点
- 可以并行训练,在数据量大的时候优势比较大
- 很大程度上防止过拟合
- 对于部分缺失特征不敏感(单独作为一类)
- 训练之后可以得到特征的重要性
- 可以处理高维数据,且不需要做特征选择,不需要对数据进行规范化,既能处理连续数据,也能处理类别数据
- 由于本身不是线性模型,因此可以拟合非线性数据
- 由于有oob,不需要划分验证集
缺点
1.对于某些噪音比较大的数据容易过拟合
2.取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果