在天池或者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