我正在使用 XGBoost 模型來預測攻擊,但我得到了 100% 的準確率,我也嘗試了隨機森林,同樣,我得到了 100%。我該如何處理這個過度改裝問題?我遵循的步驟是: 資料清理 資料拆分 特征縮放 特征選擇 我什至嘗試更改此順序,但仍然得到相同的結果。你知道如何處理這個嗎?謝謝
uj5u.com熱心網友回復:
當您的模型對其任務過于復雜時,就會發生過度擬合。簡單地說,該模型無需學習資料中的模式,而是能夠牢記訓練集中呈現的每個案例。
為避免這種情況,您將不得不選擇一個不太復雜的模型,在您的情況下減少樹的深度。將您的資料拆分為單獨的訓練集、驗證集和測驗集,然后訓練具有不同復雜性的不同模型。當你評估這些模型時,你會注意到它對訓練集的預測能力會隨著復雜度的增加而增加。最初,它在驗證集上的能力將隨之而來,直到達到無法再增加驗證集的點。相反,它可能會超過這個點,因為你開始過度擬合。
使用這些資料找到一個合適的模型,然后使用您一直保留到現在的測驗集來評估您決定使用的模型。
uj5u.com熱心網友回復:
感謝您的澄清,我通過調整超引數 eta 和 max_depth 解決了這個問題。
param = {
'eta': 0.1,
'max_depth': 1,
'objective': 'multi:softprob',
'num_class': 3}
steps = 20 # The number of training iterations
model = xgb.train(param, D_train, steps)
preds = model.predict(D_test)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/519783.html
