2017-08-26 39 views
0

我正在閱讀文章here,但沒有完全理解xgboost中有關函數CV和參數「樹數」的詳細信息。xgboost CV和樹數

假設我們從功能和目標值的數據幀開始。 CV每輪都做什麼?如果CV結果有500行(即有500個決策樹),每棵樹如何構建? 500棵樹如何合併產生單一的對數損失?如果我們可以從CV函數中得到一個單獨的預測,爲什麼我們需要XGBClassifier.fit,它也會產生一個模型(從而產生一個損失數)??????????????????????

謝謝。

回答

1

Xgboost是一種漸變增強方法,因此它在每次迭代中都添加樹來提高預測的準確性。請參閱本文中的介紹,以瞭解梯度提升的工作原理:https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/。這應該解釋樹是如何構建的。

當您添加越來越多的樹,直到您開始過度使用時,預測準確度會增加,此時預測準確度會降低。所以你需要找到最佳數量的樹。

基本上不可能從一開始就猜出這個數字。這就是xgboost.cv的用途。它將您的訓練數據分成兩個子集。第一個子集用於訓練xgboost,第二個用作驗證集。每次迭代之後(添加一個額外的樹)xgboost計算新的驗證錯誤。有了這個xgboost能夠檢測到它開始過度使用時(當驗證錯誤開始增加時)。這將爲給定的超參數集提供最佳樹數。

請注意,xgboost.cv返回評估歷史記錄(列表),而xgboost.train返回一個助推器。

另請注意,xgboost.fit是sklearn包裝的一部分(所以最好不要將其與xgboost.cv進行比較,它是xgboost學習api的一部分)。

最後說明:您不需要xgboost.cv來查找最佳樹數。您還可以運行帶有「early_stopping_rounds」集的xgboost.train。

如果您有任何問題,請在評論中告知我。

+0

我仍然困惑'xgb.cv'用於什麼?只是列出歷史? –