【机器学习】机器学习之集成学习

集成学习思想:

       对于比较复杂的任务,综合许多人的意见来进行决策会比“一家独大”更好。

       适当的方式集成许多“个体模型”所得到的最终模型要比单独的个体模型性能更优。

【机器学习】机器学习之集成学习_第1张图片

 

如何选择生成弱分类器和如何对它们进行集成(提升),三种思路:

       将不同类型的弱分类器进行提升

       将相同类型但参数不同的弱分类器进行提升

              生成方式:

                     期望各个弱分类器之间依赖性不强,可以同时进行生成,称为并行方法

                     代表为Bagging

将相同类型但训练集不同的弱分类器进行提升

       生成方法:

              弱分类器之间具有强依赖性,只能序列生成,串行方法

              代表为:Boosting

 

Bagging与随机森林:

思想根源:

Bootstrap(自举)理论,通过模拟的方法来逼近样本的概率分布函数,通过不断的自采样来模拟随机变量真实分布生成的数据集

 

Bootstrap的方法:

              从数据集X中随机抽出一个样本,将该样本的拷贝放入数据集Xj,将该样本返回X中,重复N次,从而使得Xj中有N个样本,最终得到M个含有N个样本的数据集X1,…,XM。

              该方法理论上具有最优性

事实上,这种模拟的本质和经验分布函数对真实分布函数的模拟几乎一致。

 

Bagging(Bootstrap Aggregating)思想:

       用Bootstrap生成M个数据集

       用M个数据集训练M个弱分类器

       最终模型即为M个弱分类器的简单组合

简单组合:

       对于分类问题使用简单投票表决

       对于回归问题进行简单的取平均

 

对于不稳的的分类器,Bagging能够显著的对其进行提升

 

Bagging的著名拓展应用叫随机森林,它是单个个体模型为决策树时的Bagging算法

 

随机森林算法不仅仅对样本进行Bootstrap采样,对每个node调用生成算法是都会随机挑选一个可选特征空间的子空间作为该决策树的可选特征空间,同时生成好的个体决策树后不进行剪枝,而是保持原始形式

 

随机森林算法流程:

       用Bootstrap生成出M个数据集

       用M个数据集训练出M棵不进行后剪枝的决策树,且每棵树的生成过程中,每次对node进行划分时,都从可选特征中挑选出k个特征,依信息增益的定义从k个特征中选出信息增益最大的特征作为划分标准

       最终模型即为M个弱分类器的简单组合

 

PAC框架和Boosting:

Boosting产生于计算学习理论,无需太多了解。

 

PAC的主要假设:

       要求数据是从某个稳定的概率分布中产生的

       样本在样本空间中的分布状况不能随时间的变化而变化,否则失去学习的意义

 

PAC的可学习性:

       学习的算法是否能够在合理的时间内,以足够大的概率输出一个错误率足够小的模型

 

强可学习和弱可学习:

       强可学习:若存在一个多项式算法可以学习出准确率很高的模型

       弱可学习:若存在一个多项式算法可以学习但准确率紧紧略高于随机猜测

 

Boosting能由弱学习算法生成的弱模型提升为强学习算法生成的强模型性能差不多的模型的方法。

 

Boosting是一族算法,算法的类似框架:

       根据当前的数据训练出一个弱模型

       根据该弱模型的表现跳转数据的样本权重

              让弱模型做错的样本在后续的训练中获得更多关注

              让弱模型做对的样本在后续训练中获得较少的关注

       根据弱模型的表现决定该弱模型的“话语权”,表现越好越有话语权

 

当训练样本有无穷多时,Boosting能让弱模型集成出一个对训练样本集的准确率任意高的模型。但是训练样本不可能无穷多,所以问题转化为如何固定的训练集是的应用Boosting方法。AdaBoost是一个不错的解决方案。

 

 

随机森林算法:

随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。

 

优点:

1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
3) 在训练后,可以给出各个特征对于输出的重要性
4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
6) 对部分特征缺失不敏感。
 

RF的主要缺点有:
1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

 

AdaBoost算法:

 【机器学习】机器学习之集成学习_第2张图片

 

一种迭代算法核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。

算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。

 

Adaboost算法通过组合弱分类器而得到强分类器,同时具有分类错误率上界随着训练增加而稳定下降,不会过拟合等的性质。

 

Adaboost优点:


  1)adaboost是一种有很高精度的分类器
  2)可以使用各种方法构建子分类器,adaboost算法提供的是框架
  3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单
  4)简单,不用做特征筛选
  5)不用担心overfitting!

 

 

算法解决的问题:

       根据弱模型的表现更新训练集的权重

       根据弱模型的表现决定弱模型的话语权

 

AdaBoost是Boosting族算法代表,通过三步提升:

       根据样本权重训练弱分类器

       根据弱分类器的加权错误率为其重新分配话语权

       根据该弱分类器的表现更新样本权重

 

 

 

 

 

 

集成学习具有不错的正则化能力,但该正则化能力并不是必然存在的

 

 

 

经验分布函数、AdaBoost、前向分布加法模型

 

 

你可能感兴趣的:(Machine,Learning,机器学习算法理论与实战)