AdaBoost
首先明确一个大方向:强可学习和弱可学习是等价的。所以,弱可学习方法可以提升为强可学习方法。AdaBoost最具代表性。
对于提升方法,有两个问题需要回答:
- 每一轮如何改变训练数据的权值或概率分布?
- 如何将弱分类器组合成一个强分类器?
AdaBoost的做法:
- 提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
- 加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用,这就是AdaBoost的一个特点。总的来说,AdaBoost算法的步骤为:更新训练数据权值->在此权值上训练弱分类器(策略为最小化分类误差率)->计算分类误差率(误分类样本的权值之和)->计算分类器系数(要用到上一步的分类误差率)->更新训练权值->构建基本分类器的线性组合,一直循环,直到基本分类器的线性组合没有误分类点。
缺点:可理解性差。
推广:提升树
提升树是以分类树或回归树为基本分类器的提升方法。提升树被认为是统计学习中性能最好的方法之一。
提升树利用加法模型与前向分布算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步的优化是很简单的。但对一般损失函数而言,往往每一步优化并不那么容易。针对这一问题,有人提出了梯度提升算法。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值作为回归问题提升算法中的残差的近似值,拟合一个回归树。梯度提升决策树简称GBDT。
随机森林
我先自己瞎说一次。
森林,顾名思义,好多棵树。这里的树是决策树。那么,树多了能够干啥呢?表决啊。每一颗树都对测试样本进行决策,最后算法的结果是所有树的结果的众数。
那么,“随机”是干啥的?随机森林的随机有两层意思。
- 训练样本选取随机。虽然每一棵树的训练样本个数都是样本总数N,但是每一个样本的随机选取都是有放回的选取。这样,每一颗树的训练样本几乎都不相同。
- 特征选取随机。假设训练数据有M个特征,随机森林的每一颗树只选取m(m< M)个特征用于构建决策树。每一颗树选取的特征可能都不完全相同。
强调:随机森林不进行剪枝。决策树剪枝是因为防止过拟合,而随机森林的“随机”已经防止了过拟合,因此不需要剪枝。可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域 的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数 据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。
补充:随机森林有2个参数需要人为控制,一个是森林中树的数量,一般建议取很大。另一个是m的大小,推荐m的值为M的均方根。
最后说一下随机森林的优缺点:
- 不用做特征选择
- 在训练完后,它能够给出哪些feature比较重要