Tengo una clase de datos desequilibrados y quiero ajustar los hiperparámetros del trenzado reforzado usando xgboost.
Preguntas
- ¿Hay un equivalente de gridsearchcv o randomsearchcv para xgboost?
- Si no, ¿cuál es el enfoque recomendado para ajustar los parámetros de xgboost?
machine-learning
cross-validation
xgboost
boosting
GeorgeOfTheRF
fuente
fuente
xgboost(max.depth)
oxgb.train(max_depth)
? ¿Xgboost usa inconsistentemente punto vs guión bajo para el parámetro en diferentes lugares? ¿O están convertidos?Respuestas:
Dado que la interfaz de
xgboost
incaret
ha cambiado recientemente, aquí hay un script que proporciona un tutorial completamente comentado sobre el usocaret
para ajustarxgboost
hiperparámetros.Para esto, utilizaré los datos de entrenamiento de la competencia de Kaggle "Give Me Some Credit" .
1. Ajustar un
xgboost
modeloEn esta sección, nosotros:
xgboost
modelo con hiperparámetros arbitrariosxgb.cv
)Aquí hay un código para hacer esto.
Así es como se ve el AUC de prueba versus entrenamiento:
2. Búsqueda de hiperparámetros usando
train
Para la búsqueda de hiperparámetros, realizamos los siguientes pasos:
data.frame
con combinaciones únicas de parámetros para los que queremos modelos entrenados.Aquí hay un código que muestra cómo hacer esto.
Por último, puede crear un diagrama de burbujas para el AUC sobre las variaciones de
eta
ymax_depth
:fuente
xgboost
parámetros ahora existe, en particular el soporte paragamma
es nuevo. Aquí hay una lista completa de los parámetros admitidos.scale_pose_weight
para clasificación desequilibrada. ¿Puede proporcionar detalles sobre cómo hacerlo? ¡Gracias!scale_pos_weight
ahora está documentado en la documentación del parámetro .scale_pos_weight
no es un parámetro de ajuste de intercalación, pero puede compararlo manualmente. En mi caso, usar el peso tuvo poco efecto (clasificación binaria,> 20% de resultados positivos)El paquete Caret ha incorporado xgboost.
Salida de muestra
Un inconveniente que veo es que otros parámetros de xgboost como la submuestra, etc., no son compatibles con caret actualmente.
Editar
Gamma, colsample_bytree, min_child_weight y subsample, etc. ahora se pueden ajustar directamente (junio de 2017) utilizando Caret. Simplemente agréguelos en la parte de la cuadrícula del código anterior para que funcione. Gracias usεr11852 por resaltarlo en el comentario.
fuente
caret
ahora (-2017 febrero) soporta parámetros adicionales paragamma
,colsample_bytree
,min_child_weight
ysubsample
. (Así que efectivamente puede sintonizar casi todo - tiempo dado)Sé que esta es una vieja pregunta, pero uso un método diferente de los anteriores. Utilizo la función BayesianOptimization del paquete Bayesian Optimization para encontrar parámetros óptimos. Para hacer esto, primero cree pliegues de validación cruzada, luego cree una función
xgb.cv.bayes
que tenga como parámetros los hiperparámetros de impulso que desea cambiar. En este ejemplo estoy sintonizandomax.depth, min_child_weight, subsample, colsample_bytree, gamma
. Luego llamaxgb.cv
a esa función con los hiperparámetros establecidos en los parámetros de entrada dexgb.cv.bayes
. Luego llamaBayesianOptimization
con losxgb.cv.bayes
rangos deseados de los hiperparámetros de refuerzo.init_points
es el número de modelos iniciales con hiperparámetros tomados al azar de los rangos especificados, yn_iter
es el número de rondas de modelos después de los puntos iniciales. La función genera todos los parámetros de refuerzo y el AUC de prueba.fuente
Esta es una pregunta anterior, pero pensé que compartiría cómo ajusto los parámetros de xgboost. Originalmente pensé que usaría caret para esto, pero recientemente encontré un problema para manejar todos los parámetros, así como los valores faltantes. También estaba considerando escribir un ciclo iterativo a través de diferentes combinaciones de parámetros, pero quería que se ejecutara en paralelo y requeriría demasiado tiempo. El uso de gridSearch del paquete NMOF proporcionó lo mejor de ambos mundos (todos los parámetros, así como el procesamiento paralelo). Aquí hay un código de ejemplo para la clasificación binaria (funciona en Windows y Linux):
fuente