來源:https://catboost.ai/docs/concepts/parameter-tuning.html
https://effectiveml.com/using-grid-search-to-optimise-catboost-parameters.html
CatBoost提供了一個靈活的參數(shù)調(diào)優(yōu)接口,可以根據(jù)不同的任務進行配置。
本節(jié)包含一些關(guān)于可能的參數(shù)設置的技巧。
一、One-hot encoding
當分類特性沒有很多值時,one-hot編碼就可以很好地工作。
通常one-hot編碼并沒有顯著提高模型的質(zhì)量。但是如果需要,使用內(nèi)置參數(shù)而不是預處理數(shù)據(jù)集。
參數(shù):one_hot_max_size
二、Number of trees
在調(diào)整任何其他參數(shù)之前,建議檢查是否存在明顯的欠擬合或過擬合。為此,需要分析驗證數(shù)據(jù)集上的度量值并選擇適當?shù)牡螖?shù)。
這可以通過將迭代次數(shù)設置為一個較大的值、使用過擬合檢測器參數(shù)并打開use best model選項來實現(xiàn)。在這種情況下,得到的模型只包含前k個最佳迭代,其中k是驗證數(shù)據(jù)集中損失值最大的迭代。
此外,選擇最佳模型的度量方法可能與優(yōu)化目標值的度量方法不同。例如,可以將優(yōu)化后的函數(shù)設置為Logloss,并使用AUC函數(shù)進行過擬合檢測器。為此,使用評估度量參數(shù)。
參數(shù):iterations
三、Learning rate
此設置用于減小梯度步長。它影響整個訓練時間:值越小,訓練所需的迭代次數(shù)越多。根據(jù)性能期望選擇價值。
默認情況下,學習率是根據(jù)dataset屬性和迭代次數(shù)自動定義的。自動定義的值應該接近最優(yōu)值。
根據(jù)過擬合結(jié)果調(diào)整學習率的可能方法:
在最后的訓練迭代中沒有過度擬合(訓練不收斂)——提高學習率。
檢測到過擬合——降低學習速度。
參數(shù):learning_rate
四、Tree depth
在大多數(shù)情況下,最佳深度范圍從4到10。建議使用6到10之間的值。
參數(shù):depth
五、L2正規(guī)化
嘗試不同的值為正則化,以找到最好的可能。
參數(shù):l2_leaf_reg
六、Random strength
嘗試為random_strength參數(shù)設置不同的值。
參數(shù):random_strength
七、Bagging temperature
嘗試為bagging_temperature參數(shù)設置不同的值。
參數(shù):bagging_temperature
八、Border count
數(shù)值特征的分裂數(shù)。
默認情況下,它被設置為254(如果在CPU上執(zhí)行訓練)或128(如果在GPU上執(zhí)行訓練)。
該參數(shù)的取值對GPU的訓練速度有顯著影響。值越小,訓練執(zhí)行得越快(詳細信息請參考數(shù)值特征部分的分割數(shù))。
128個分割對于許多數(shù)據(jù)集來說已經(jīng)足夠了。但是,如果需要最好的質(zhì)量,請在GPU上進行訓練時將該參數(shù)的值設置為254。
該參數(shù)的值對CPU的訓練速度沒有顯著影響。試著將它設置為254以獲得最好的質(zhì)量。
參數(shù):border_count