Xgboost原介面訓練時,為什麼必須要傳乙個evals驗證集?

時間 2021-05-11 20:53:01

1樓:希爾貝殼

驗證集的作用是同步檢測模型是否過擬合,原理上可以選擇不用,也可以從train裡面隨機抽取出來,目前很多程式就寫死了需要提供evals,如TF

2樓:starays

訓練過程中引入 eval set 是為了做 early stopping。理論上 xgboost 模型中樹的棵樹可以無限增長下去,直到最後損失函式在訓練集上為0。但這時候模型複雜度非常高,很容易過擬合。

所以訓練過程中加入 eval set,如果出現 loss 在訓練集上下降但在驗證集上上公升,說明出現過擬合跡象了,可以提前終止模型訓練。

另外 eval set 引數不是必填的,可以自行指定樹最多有多少棵來強制終止訓練。

至於為什麼有些模型訓練時不用 eval set,這類模型複雜度不會隨訓練過程增長,比如線性回歸之類的。這時一般訓練過程中發生的現象是,訓練集上的 loss 會先降再公升,這時候一般用訓練集上 loss 極小化作為終止條件,可以不引入 eval set。

3樓:汪宇

首先,你的問題就錯了。Xgboost 在train的時候,evals是可選的,不是必須的。

當然,我們看到的大部分例子都傳進去乙個evals,是為了看可以early stop 的點。

讀讀官方文件: https://

xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.train

4樓:噼里啪啦

其實類似訓練集是練習題,驗證集是考卷,你沒有驗證集做評估的話,你也不知道自己學的怎麼樣了。練習題做到最好一般就等於背答案,可能考卷裡面會出現沒有練習題的情況~

xgboost模型訓練時需要對型別特徵進行one hot編碼嗎?

馬屁哥哥 XGBoost作者陳天奇本人回答過這個問題 One hot encoding could be helpful when the number of categories are small in level of 10 to 100 In such case one hot encodi...

setState用箭頭函式設定狀態時,為什麼形參可以代替this state使用。

因為這個箭頭函式是乙個引數,a是引數函式裡的引數,在setState裡面完成可以讓a指向當前例項,所以你可以通過a拿到state裡面的內容。還有既然用電腦,截圖幹嗎用手機拍照,害怕大家看的太清楚還是怕不知道你用的MI 9? 張強 這是箭頭函式,也是一種匿名函式 js一般函式的寫法是 function...

漂浮時浮力等於重力,懸浮時浮力等於重力,為什麼漂浮時浮力比懸浮時浮力小?

成易 如果你研究的是同乙個物體,那麼兩次重力相等,除非你換了個地方。如果還是同地,那有可能是非穩定狀態。那樣剛入水時完全浸沒,處於懸浮,若液體密度大於物體密度,浮力大於重力,開始上浮 之後當到達平衡狀態時,浮力等於重力。此時才會有漂浮浮力小於懸浮浮力。如果你研究的還是同時同地的平衡狀態,那很抱歉,漂...