1、Bootstraping(自助法)
名字来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下:
(1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
(2) 根据抽出的样本计算给定的统计量T。
(3) 重复上述N次(一般大于1000),得到N个统计量T。
(4) 计算上述N个统计量T的样本方差,得到统计量的方差。
应该说Bootstrap是现代统计学较为流行的一种统计方法,在小样本时效果很好。通过方差的估计可以构造置信区间等,其运用范围得到进一步延伸。
2、Bagging (套袋法)
Bagging即bootstrap aggregating(自举汇聚法)的缩写,其算法过程如下:
A).从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本,意思是从原始集合中随机选择一个样本,然后随机选择一个样本来代替这个样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
B).每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
3、Boosting(提升法):
其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。关于Boosting的两个核心问题:
1)在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
4、gradient boosting(梯度提升法):
Boosting是一种思想,Gradient Boosting是一种实现Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。损失函数(loss function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。
5、Bagging,Boosting二者之间的区别:
相同点:
bagging算法和boosting算法都属于集成学习集成学习(Ensemble Learning)。
不同点:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
总结:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
6、Rand forest(随机森林):
(1)随机森林是一种重要的基于Bagging的集成学习方法,可以用来做分类、回归等问题。随机森林就是对决策树的集成,但有两点不同:
1)采样的差异性:从含m个样本的数据集中有放回的采样,得到含m个样本的采样集,用于训练。这样能保证每个决策树的训练样本不完全一样。
2)特征选取的差异性:每个决策树的n个分类特征是在所有特征中随机选择的(n是一个需要我们自己调整的参数)。传统决策树在选择划分特征时在当前节点的特征集合(假定有d个特征)中选择一个最优特征;而在随机森林中,对于决策树的每个节点,先从该节点的特征集合中随机选择一个包含n个特征的子集,然后再从这个子集中选择一个最优特征用于划分。这里的参数n控制了随机性的引入程度:若令n=d,则决策树的构建与传统决策树相同;若令n=1,则是随机选择一个特征进行划分。
(2)随机森林优点:
1)具有极高的准确率
2)随机性的引入,使得随机森林不容易过拟合
3)随机性的引入,使得随机森林有很好的抗噪声能力
4)能处理很高维度的数据,并且不用做特征选择
5)既能处理离散型数据,也能处理连续型数据,数据集无需规范化
6)训练速度快,可以得到变量重要性排序
7)容易实现并行化
(3)随机森林的缺点:
1)当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
2)随机森林模型还有许多不好解释的地方,有点算个黑盒模型
(4)随机森林的构建过程:
1)从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集
2)对于n_tree个训练集,我们分别训练n_tree个决策树模型
3)对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂
4)每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝
5)将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果.
7、随机森林的实现:
随机森林需要调整的参数有:
(1)决策树的个数
(2)每个决策树分类特征的个数
(3)递归次数(即决策树的深度)
#coding=utf-8
# Random Forest