集成学习总结

集成算法总结:
1.思想:将若干个弱学习器组合之后产生一个新学习器,弱学习器的准确率需在0.5以上。
2.算法分类:1.Bagging.2.Boosting.3.Stacking
3.算法简介:
Bagging: 通过随机采样,从训练集中采集固定个数的样本,没采集一次都将样本放回,也就是说之前采集到的样本有可能被继续采集到。然后选择出T个数据集分别训练T个模型的集成技术。
随机森林(RF):(随机森林在构建过程中各个树是相互独立的)
    1.从原始样本集(n个样本)中用Bootstrap采样(有放回重采样)选出n个样本;真正用于模型训练的是这抽取出来的样本去重之后的数据集,也就是一般情况用户模型训练的样本数目实际不等于n,应该是小于n
    2.使用抽取出来的子数据集(去重后)来训练决策树;从所有属性中随机选择K个属性,从K个属性中选择出最佳分隔属性作为节点来迭代的创建决策树。
    3.重复以上两步m次,建立m棵决策树
    4.这m个决策树属于随机森林,通过投票选择决定数据属于哪一类
RF应用:分类、回归、特征转换、异常点检测等
RF的变种算法:
Extra Tree:原理基本和RF一样,区别如下:
    1.Rf会随机重采样来作为子决策树的训练集,而Extra Tree每个决策树采用原始数据集训练。
    2.RF选择划分特征点的时候会和传统决策树一样,会基于信息增益、信息增益率、基尼系数、均方差等原则来选择最优特征值;而ExtraTree会随机选择一个特征值来划分决策树。
    3.Extra Tree因为是随机选择特征值的划分点,这样会导致决策树的规模一般大于RF所生成的决策树。也就是说Extra Tree模型的方差相对于RF进一步间减少。在某些情况下,ExtraTree的泛化能力比RF的强。
Totally Random Trees Embedding(TRTE):
    1.TRTE是一种非监督的数据转换方式。将低维数据集映射到高维,从而让映射的高维的数据更好的应用于分类回归模型。
    2.TRTE算法的转换过程类似RF+KDTree算法的方法,建立T个决策树来拟合数据。当T个决策树构建完成后,数据集里的每个数据在T个决策树中叶子节点的位置就确定下来了,将位置信息转换成向量就完成了特征转换操作。
Isolation Forest(IForest):是一种异常点检测算法,使用类似的RF方式来检测异常点。与RF算法的区别:
    1.在随机采样过程中,一般只需要少量数据即可。
    2.在进行决策树构建过程中,IForest算法会随机选择一个划分特征,并对划分特征随机一个划分阈值。
    3.构建的决策树深度较小。
    区别的原因:IForest只要能够区分异常数据即可,并不需要大量数据,在异常点检测过程中一般不需要太大规模的决策树。
    异常点判断:将测试样本拟合到T棵决策树上边。计算每棵树上边该叶子结点的深度,从而计算出平均深度,然后使用公式计算样本的异常概率值。(若是落在正常样本的叶子节点上,则不考虑当前决策树)

    
随机森林RF的主要优点:
    1.训练可以并行化,对于大规模样本的训练具有速度的优势。
    2.由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能。
    3.可以给出各个特征的重要性列表。
    4.由于存在随机抽样,训练出来的模型方差小,泛化能力强。
    5.RF实现简单。
    6.对于部分特征的缺失不敏感。
缺点:
    1.在某些异常数据的特征上,RF容易陷入过拟合。
    2.取值比较多的划分特征对RF的决策会产生更大影响,从而影响模型的效果。

Boosting:
    1.Boosting是一种机器学习技术,可以用于回归和分类的问题,它每一步产生若预测模型,并‘加权累加’到总模型中;如果没一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升。
    2.提升技术意义:如果一个模型存在弱预测模型,那么可以通过梯度提升得到一个强预测模型
    3.常见模型为:1.Adaboost.2.Gradient Boosting(GBDT)

Adaboost算法:Adaboost是一种迭代算法。每轮迭代会在训练集上产生一个新的学习器,然后使用该学习器对所有样本进行预测,以评估每个样本的重要性,如果某个样本被预测的越正确,则对应权重降低,否则提高样本的权重。也就是说越难区分的样本在训练过程中会变得越重要。整个迭代过程中知道错误率足够小,或达到一定的迭代次数。
    优点:1.可以处理连续值和离散值。2.模型的鲁棒性比较强。3.解释强,结构简单
    缺点:对异常样本敏感,异常样本可能会在迭代过程中获得较高的权重值,最终影响模型效果。

GBDT算法:由三部分构成:1.回归树。2.Boosting.3.Shrinkage(衰减)。由多棵决策树组成,所有树的结果累加起来就是最终结果。也就是说 在迭代决策树构建子树的时候,使用之前子树构建结果后形成的残差来作为输入数据构建一个子树;然后最终预测的时候按照子树构建的顺序进行预测,并将预测结果相加。
GBDT和Adaboost的区别:
    1.AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮迭代。
    2.GBDT也是迭代,但是GBDT要求若学习器必须是CART模型,而且GBDT在模型训练的时候,要求模型预测的样本的损失尽可能的小。
    3.所有GBDT算法中底层都是回归树
GBDT分类算法和回归算法的区别:回归算法中损失函数一般是均方差(最小二乘)或则绝对值误差,分类算法中损失函数一般会用对数函数表示。

GBDT优点:1.可以处理连续值和离散值。2.在相对少的调参下模型的预测效果不会差。3.模型的鲁棒性比较强
缺点:由于弱学习器间存在关联关系,难以并行训练模型。也就是训练模型的速度慢。

Bagging和Boosting的比较:
1.样本选择:Bagging算法是有放回的随机采样;Boosting算法是每一轮训练集不变,只是训练集中每个样列在分类器中权重发生变化或者目标属性y发生变化,而权重或y都是根据上一轮的预测结果进行调整。
2.样列权重:Bagging使用随机抽样,样列是等权重;Boosting根据错误率不断调整样本的权重值,错误率越大则权重越大(Adaboost)。
3.预测函数:Bagging所有预测模型的权重相等;Boosting对于误差小的分类器具有更大的权重(Adaboost)
4.并行计算:Bagging算法可以并行生成各个基模型;Boosting理论上只能顺序生产,因为后一个模型需要前一个模型的结果。
5.Bagging是减小模型的方差;Boosting是减少模型的偏度。
6.Bagging里每个分类器都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;Boosting里边每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合。

Stacking:(用的少,用深度学习取代)是指训练出多个不同的模型,然后再根据多个不同的模型作为输入来训练一个新的模型,从而得到最终模型。一般情况使用单层的logistic回归作为组合模型

你可能感兴趣的:(机器学习)