在天池或者kaggle的比赛中,xgboost算法算是一大杀器,但在学习xgboost前先对gbdt和rf得有一个了解:
GBDT思想:先用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之后的残差,然后后面的决策树就要基于前面决策树的残差来学习,直到预测值和真实值的残差为零。最后对于测试样本的预测值,就是前面许多棵决策树预测值的累加。
GBDT主要的优点有:
1) 可以灵活处理各种类型的数据,包括连续值和离散值。
2) 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
GBDT的主要缺点有:
1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
RF思想:利用随机组合的方式构建出决策树,形成森林,在决策的时候森林中的每棵树都进行投票,共同决定。
优点:
1.很多的数据集上表现良好;
2.能处理高维度数据,并且不用做特征选择;
3.训练完后,能够给出那些feature比较重要;
4.训练速度快,容易并行化计算。
缺点:
1.在噪音较大的分类或回归问题上会出现过拟合现象;
2.对于不同级别属性的数据,级别划分较多的属性会对随机森林有较大影响,则RF在这种数据上产出的数值是不可信的。
GBDT算法:
http://blog.csdn.net/puqutogether/article/details/41957089
http://www.cnblogs.com/pinard/p/6140514.html