1.集成学习概念
集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的"弱学习器"。
2.个体学习器概念
组成集成学习的单个同质“弱学习器”,称为个体学习器。
3.boosting bagging
Bagging:
Bagging即套袋法,其算法过程如下:
从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
Boosting:
AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
4.随机森林思想
随机森林利用随机的方式将许多决策树组合成一个森林,每个决策树在分类的时候投票决定测试样本的最终类别。
随机森林的组成元素为n棵决策树,每棵树的判断原理与单棵决策树决策并无较大差别,但是每棵树之间并不是完全相同。
随机森林背后的思想是:每棵树的预测可能都相对较好,但可能对部分数据过拟合。如果构造很多树,并且每棵树的预测都很好,但都以不同的方式过拟合,那么我们可以对这些树的结果取平均值来降低过拟合,这样既能减少过拟合又能保持树的预测能力。
5.优缺点
优点:
(1)它能够处理很高维度(feature很多)的数据,并且不用做特征选择
原因:特征子集是随机选择的,子集大小可以控制。
(2)在训练完后,它能够给出feature重要大小
(3)训练速度快,容易做成并行化方法
原因:训练时树与树之间是相互独立的
(4)如果有很大一部分的特征遗失,仍可以维持准确度。
缺点:
(1)随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟
(2)对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,(以信息增益划分数据集的特征,都有这个问题,可以用信息增益比校正)所以随机森林在这种数据上产出的属性权值是不可信的。
6.sklearn参数
class sklearn.ensemble.RandomForestClassifier(
n_estimators=10, criterion=‘gini’, max_depth=None,
min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features=‘auto’, max_leaf_nodes=None, min_impurity_decrease=0.0,
min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1,
random_state=None, verbose=0, warm_start=False, class_weight=None)
因随机森林中的树是决策树,所以关于决策树的大部分参数与前面决策树模型中的参数意思一致,这里就不再赘述,可查看:Sklearn参数详解–决策树
n_estimators:随机森林中树的棵树,默认是10棵。
criterion:样本集切分策略,默认是gini指数,此时树模型为CART模型,当值选为信息增益的时候,模型就成了ID3模型,默认为CART模型。
bootstrap:是统计学中的一种重采样技术,可以简单理解成是有放回地抽样,默认是True,即采取有放回抽样这种策略,这不就是bagging的思想么。
oob_score:袋外估计(out-of-bag),这个外是针对于bagging这个袋子而言的,我们知道,bagging采取的随机抽样的方式去建立树模型,那么那些未被抽取到的样本集,也就是未参与建立树模型的数据集就是袋外数据集,我们就可以用这部分数据集去验证模型效果,默认值为False。
参考:https://blog.csdn.net/geduo_feng/article/details/79558572
https://www.itcodemonkey.com/article/5181.html