随机森林
若干决策树组成,每一个决策树很小,只有问题属性中的一小个子集,然后将所以小的决策树组合起来,用投票法决定分类。
* 在数据集上表现良好
* 在当前的很多数据集上,相对其他算法有着很大的优势
* 它能够处理很高维度(feature很多)的数据,并且不用做特征选择(WHY?)
* 在训练完后,它能够给出哪些feature比较重要
* 在创建随机森林的时候,对generlization error使用的是无偏估计(WHY?)
* 训练速度快
* 在训练过程中,能够检测到feature间的互相影响(怎样给出?待研究)
* 容易做成并行化方法
* 实现比较简单
Boost
最初为每个样例赋予相同的权重,通过迭代的方式,对每一次分类错误的样例给予更高的权重。进行N次迭代,得到N个分类器,再将它们组合起来(加权或投票),最终得到结果
GBDT(Gradient Boost Decision Tree)
Boost的意思表示GBDT也需要迭代,每一次的计算是为了减少上一次的残差(residual),而为了消除残差,我们可以在残差减少的梯度(Gradient)方向上建立一个新的模型。所以说,在Gradient Boost中,每个新的模型的简历是为了使得之前模型的残差往梯度方向减少,与传统Boost对正确、错误的样本进行加权有着很大的区别。
注:GBDT中的树,都是回归树,不是分类树。
(转)
GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。这就是Gradient Boosting在GBDT中的意义。
残差向量就是全局最优方向,就是Gradient