集成算法与随机森林
集成算法
集成算法一般就用树模型做的。
Bagging就是训练多个树模型,每个树模型预测一个结果,对所有树模型的结果进行求和后求均值,一个典型的例子就是随机森林,稍后讲到。
Boosting(提升算法),是每次加入一棵树,最后并不求均值
随机森林
简介
- 随机:数据随机采样,比如建立每一棵树随机选择80%的样本;特征随机采样:每个树随机选择80%的样本特征(随即比列可以指定);
- 森林:多个树,对每个树结果求和后求均值。
随机森林优点和
给出Negev特征重要可以通过下图过程判断。先求出原始特征建模的错误率,将想要判断的特征的特征值进行修改(打乱或者改值)然后其他特征不变再建模计算错误率;两次结果近似说明此特征不重要,第二次结果远大于第一次结果说明此特征很重要。也可以通过特征在树的位置判断重要性,越靠近根节点越重要(是直接通过算法得出的)。
树模型也不是越多越好,达到一定数量后准确率差不多上下浮动了。
提升算法(Boosting)概述
算法简介
假如第一个树预测950(标签为1000),那么B就提升A的,B预测的就不是1000了,是做弥补A没做好的,B的目标就是1000-950=50,假设B预测了30,轮到C时,C树把前面当成整体,预测结果希望得到1000-950-30=20,假设C预测18,D也是,预测标签为2。
提升算法公式
前面部分是之前的树的预测结果,后面部分是当前这一个树模型,之前结果Fm-1(xi)加上当前树的结果h(xi)与原来结果yi比较,如果改进了就加上,如果没改进就不加。保证了加入一棵树,一定会比原来强。
模型代表
- AdaBoost:如果第一次划分是图一结果,有一个三角形划分错了,那么下一轮就会把这个三角形的权重加大
- Xgboost算法就是之前提到的ABCD树如何提升的。
堆叠模型(stacking)
模型概述
使用多个分类器,比如LR(逻辑回归),DT(决策树),RF(随机森林),进行分别预测结果,然后将结果作为输入再用一种模型进行运算。