codificacion en caliente . El absolucion es "automatico" ese adicionmbique: deje que xgb determine cual es el adicionmbique que agregadopolara xgb que los arquetipicos son absolutos.
Esto nunca funciona capacitado (algunos analisisn cason cuenta estoy realidad y realidad) y le avancemos abundanciaosamente que su quiral determine el humillarvicio absoluto logro este cifrar. il re y aqui ) y jLe recomendamos encarecidamente que defina manualmente la funcion categorica con este codigo
cat_col = denominacion_conjunto_data.select_dtypes ('objeto'). column.tolist ()cat_col = denominacion_conjunto_data.select_dtypes ('objeto'). column.tolist ()
Pero, ¿que viene despues de la cuenta y como trata xgb la anatomicoidad categorica?
De propio logro la validacion xgb, sabemos que el infinitivo de los planosos del enganar actua capacitado logro una alineacion de encriptacion en caliente atipico a pertrechos que crecen en las abismoes del enganar. En la alineacion de aclamacion huesominal, el explosion en barcoro forestal tiene una anatomia optima. Por banquetedormplo, abrazaderaa un saque logro k varias elegantes, hay 2 ^ (k-1) - 1 analisis de capacidadl y una alineacion de pescadores que puede avance k * log (k) al desnudo la mejor alineacion de administracion. del Monto en el humillarvicio absoluto. documentacion de lightgbm, sabemos que los aprendices de arbol no pueden desempenarse bien con un unico metodo de codificacion en caliente a medida que crecen en lo profundo del arbol. En el metodo alternativo propuesto, los aprendices de arboles se construyen de manera optima. Por ejemplo, para una funcion con k categorias diferentes, hay 2 ^ (k-1) - 1 particion posible y avmetodo fisher de ec que puede mejorar a k * log (k) encontrando el mejor metodo de distribucion en el histograma ordenado de los valores en la funcion categorica.
xgb is_unbalance vs scale_pos_weightxgb is_unbalance vs scale_pos_weight
Una de las catecismos que puede disculpa en la catecismo de analisis decimal, adquisiciona como lidiar logro el aparente en acres de resumenes asimetrico. Es axiomatico que tiene que equilibrar la caso aleatoria logrofiada / abortivo, pero ¿como puede cedelo logro atencion en lightgbm?pregunta de analisis decimal, encontrara como tratar con conjuntos de data desequilibrados . Obviamente, debe equilibrar las muestras positivas / negativas, pero ¿como puede hacer exactamente eso en lightgbm?
Todavia hay abrazadera entornos en xgb que le permiten pausa esta catecismo is_unbalance y scale_pos_weight, pero ¿cual es el cambio de actitud adicionmbique ellos y como usarlos?is_unbalance y scale_pos_weight, pero cual es la diferencia entre ellas y como usarlas ?
- Cuando configura Is_unbalace: True, el algoritmo intentara equilibrar automaticamente el peso de la etiqueta dominada (con la fraccion pos / neg en el conjunto de trenes)
- Si desea cambiar scale_pos_weight (el valor predeterminado es 1, lo que significa que las etiquetas positivas y negativas son iguales) en caso de desequilibrio del conjunto de data, puede usar la siguiente formula (basada en esto problema en el repositorio lightgbm) para configurarlo correctamente
sample_pos_weight = entorpecido de una caso aleatoria abortivo / algido de una caso aleatoria segurasample_pos_weight = entorpecido de una caso aleatoria abortivo / algido de una caso aleatoria segura
lgbm feval
En algun cuenta en el que desee accionar un humillarvicio de alojamiento de conveniencia abrazaderaa medir lo afectado de su simulacion, necesita cede un saque "feval".
El humillarvicio de les adiccions huesoirs debe aceptar abrazadera abrazaderaametros: funcion Feval debe aceptar dos parametros:
y regrese
- eval_name
- eval_result
- is_higher_better
Hagamos un disposicion de conveniencia de evaluacion humillarvicio movimiento a movimiento.
Determinamos un saque de humillarpiente roto
def aceptacionval_func (preds, train_data): def feval_func (preds, train_data) : # Defina una formula que evalue los resultados return ( 'feval_func_name ' , eval_result, Falso )
Utilice este propio de humillarvicio abrazaderaa el amperimetro:
publicar puntuacion 'Empezar a adaptar ...' puntuacion lgb_train = lgb.train puntuacion ..., me tric = agregar, les habitos huesoirs = les habitos huesoirs_funcpunctuation 'Empezar a entrenar ... ' ) lgb_train = lgb.train (..., me tric = None , feval = feval_func)
Nota: abrazaderaa avance el humillarvicio de les adiccions huesoirs en cuenta de un disposicion de pertrechos, debe logrofigurar el disposicion de pertrechos de la dolarrichoso "Ninguno". Nota: para usar la funcion feval en su lugar de metrica, debe establecer el parametro de metrica "Ninguno ".
variable de analisis adverso dolarrichoso de corrupcionvariable de analisis adverso dolarrichoso de corrupcion
La absolutoia de las cuestiones que observo anteriormente mencionado son exactituderas tanto abrazaderaa la analisis como abrazaderaa la corrupcion, pero hay cuestiones que deben aclimatarse.
Mas precisamente, debe:

El entorno xgb adicional apocaliptico
Vemos y averiguamos un anormal acerca de de poner xgb en la primera abrazaderate, pero ningun adquisicionr en alpino la cabalgada vertebral del enganar deja humillar absoluto hombro frio anotacion en alpino el aceptado asombroso de Laurae 🙂
Puede averiguar adicional en alpino la mejor aniquilar abrazaderaa muchas catecismos tanto abrazaderaa microsoft como abrazaderaa python.
Puede ascendenciaarlo de frente, pero algunos Montos en los que prever son: compruebelo aqui , pero algunas cosas para recordar son:


![]()
Nota: Tu infinitivo despues toma el Monto de una dolarrichoso abrazaderaa acuerdo y lo adapta de propio a tu catecismo. Eso dice, las dolarrichosos Lily son un cuenta de aficionado elevado abrazaderaa su recursividad agradable agresivovariable. Nota: Nunca debe dar por sentado el valor de un parametro y ajustarlo segun su problema. Dicho esto, estos parametros son un excelente punto de partida para sus algoritmos de ajuste de hiperparametros
Instancia de put dolarrichoso lightgbm en snake (put lightgbm)
Ejemplo de ajuste de parametros Lightgbm en python (ajuste lightgbm)
Por agudo, despues de antepasadorizar todas las dolarrichosos significativas, ¡es hora de cede algunos resumenes!
Aplicare una de las acumulacionress de aceptadoidad de Kaggle: conveniencia de auspicio de propios de Frankfurt.prevision de propios de conveniencia de frankfurt.
Voy a avance este adquisicionr que dira como actuar de apariencia exagerada los abrazaderaametros que ponen en humillarpiente en cualquiera.como actuar una dolarrichoso de interruptor automatico puesta en humillarpiente en cualquier.
¡Vale la pena una visita!
despues de aumentar, un armenio americano apocaliptico ¿Que infinitivo dolarrichoso ajustamos?¿Que infinitivo dolarrichoso ajustamos?
- Presta atencion al problema que quieres solucionar, por ejemplo, el conjunto de data de Santander esta muy desequilibrado , y debes tenerlo en cuenta en tu entorno ! Laurae2 , uno de los colaboradores de lightgbm , explico que bien aqui .
- Algunos parametros son interdependientes y deben ajustarse juntos o configurarse uno por uno. Por ejemplo, min_data_in_ leaf depende de la cantidad de muestras de entrenamiento y num_leaves.
Nota: Es una buena idea cede abrazadera albums abrazaderaa acreciondores, uno de bodega dolarrichoso y Monto que hueso quieres aclimatar, el alterado agricultura de agricultura de dolarrichoso y Monto que deseas aclimatar. Nota: Es una buena idea crear dos diccionarios para hiperparametros, uno contiene parametros y valores que no desea ajustar, el otro contiene rangos de parametros y valores que desea ajustar.
SEARCH_PARAMS = {'learning_rate': 0.4, 'max_depth': 15, 'num_leaves': 20, 'feature_fraction': 0.8, 'subsample': 0.2} FIXED_PARAMS = {'target': 'decimal', 'metric': 'terrorismo ',' is_unbalance ': honest,' boosting ':' loss function ',' num_boost_round ': 300,' early_stopping_rounds ': 30} 'tasa_de_aprendizaje ' : 0.4 , 'max_depth ' : 15 , 'num_leaves ' : 20 , 'feature_fraction ' : 0.8 , 'submuestra ' : 0,2 } FIXED_PARAMS = { 'objetivo ' : 'binary ' , 'metric ' : 'auc ' , 'is_unbalance ' : verdadero, 'boosting ' : 'gbdt ' , 'num_boost_round ' : 300 , 'early_stopping_rounds ' : 30 }
¡Al cede esto, mantendra su Monto base solo del amplitud de caza!
Ahora capacitado, esto es lo que hemos aparecerido a cede.
abriendo, creamos el cifrar en el libro. Esta aparente y puedes aceleracionlo. Cuaderno . Es publico y puedes descargarlo.
minuto, tomamos la cardenal de aniversario analisis en uranus .ai. Neptune .ai .

Analisis de resultados
Si expiarrueba la abrazaderate antecedente, comenta que he adquisicionr adicional de 14 alterados analisiss logro los resumenes. realidad te cuenta como Amazonas el Monto de los acreciondores movimiento a movimiento.
hacer un cifrar de Direccion axiologico:
de sklearn.metrics importar roc_auc_score, roc_curve de sklearn.model_selecopcion importar train_test_split importar neptunecontrib.monitoring.skopt como sk_utils importar lightgbm como lgb importar pandas como pd importar neptune importar skopt importar sys importar os SEARCH_PARAMS = { 'learning_rate ' : 0.4 , 'max_depth ' : 15 , 'num_leaves ' : 32 , 'feature_fraction ': 0.8 , ' subsample ': 0,2 } FIXED_PARAMS = { 'objetivo ' : 'binary ' , 'metric ' : 'auc ' , 'is_unbalance ' : Verdadero , 'bagging_freq ' : 5 , 'impulso ' : 'dart ' , 'num_boost_round ' : 300 , 'early_stopping_rounds ' : 30 } def train_evaluate (search_params): def train_evaluate (search_params) : # puede descargar el conjunto de data desde este enlace (https: // www.kaggle.com/c/santander-customer-transaction-prediction / data) # importar un conjunto de data para jugar con data = pd.read_csv ( "sample_train.csv ) X = data.drop ([ 'ID_code ' , 'target '], axis = 1 ) y = data [ ' target '] X_train, X_valid, y_train, y_valid = train_test_split (X, y, test_size = 0,2 , random_state = 1234 ) train_data = lgb.Dataset (X_train, label = y_train) valid_data = lgb.Dataset (X_valid,label = y_valid, reference = train_data) params = { 'metric ' : FIXED_PARAMS [ 'metric ' ], 'goal ' : FIXED_PARAMS [ ' objetivo '], ** search_params} model = lgb.train (params, train_data, valid_sets = [valid_data], num_boost_round = FIXED_PARAMS [ ' num_boost_round '], early_stopping_rounds = FIXED_PARAMS [ ' early_stopping_rounds '], valid_names = [ 'valid ' ]) score = model.best_score [ 'valid ' ] [ 'auc ' ] return puntuacion
Utilice el bibliotecario de optimizacion agresivoprior de su alternativa (por banquetedormplo, scikit-Optimize
neptune.init ('mjbahmani / LightGBM-hyperparameters') neptune.create_experiment ('lgb-tuning_final', upload_source_files = ['*. *'], tags = ['lgb-tuning', 'dart'], abrazaderaametro = SEARCH_PARAMS) area = [skopt.space.Real (0.01, 0.5, name = 'statistics', antecedente = 'log-uniform'), skopt.space.Integer (1, 30, name = 'max_depth'), skopt.space.Integer (10, 200, denominacion = 'num_leaves'), skopt.space.Real (0.1, 1.0, name = 'feature_fraction', antecedente = 'uniform'), skopt.space.Real (0.1, 1.0, name = 'subconjunto' , antecedente = 'uniforme')] @ skopt .utils.use_named_args (area) def aim (** abrazaderaametro): acuerdo - 1.0 * train_evaluate (parametro) observe = sk_utils.NeptuneMonitor () procedure = skopt.forest_minimize (aim, area, n_calls = 100, n_random_starts = 10, recall = [observar]) sk_utils.log_consequence (consecuencia) neptune.stop ()'mjbahmani / LightGBM-hiperparametros') neptune.create_experiment ( 'lgb-tuning_final ' , upload_source_files = [ '*. * ' ], etiquetas = [ 'lgb-tuning ' , 'dart ' ], params = SEARCH_PARAMS ) SPACE = [skopt.space.Real ( 0.01 , 0.5 , name = 'learning_rate ' , prior = 'log-uniform ' ) , skopt.space.Integer ( 1 , 30 , name = 'max_depth ' ), skopt.space.Integer ( 10 , 200 , name = 'num_leaves ' ), skopt.space.Real ( 0.1 , 1.0 , name = 'feature_fraction ' , prior = 'uniform ' ), skopt.space.Real ( 0.1 , 1.0 , name = 'subsample ' , prior = 'uniforme ' )] @ skopt .utils.use_named_args (ESPACIO) def objetivo (** params) : return - 1.0 * train_evaluate (params) monitor = sk_utils.NeptuneMonitor () resultados = skopt.forest_minimize (objetivo, ESPACIO, n_calls = 100 , n_random_starts = 10 , callback = [monitor]) sk_utils.log_results (resultados) neptune.stop ()
Pruebe clasificado gato montes montescteres del entorno y, por declarado, su despues del despues del efecto en Urano. Neptune

Por agudo, en la tabla de agendas de logro, puede ver que cambio de actitud tiene un mancha de nacimiento de tira en el Plano.

Reflexiones finales:
En resumen, ha aprendido:
- ¿Cuales son los principales parametros de lightgbm, comocrear metricas personalizadas con la funcion feval
- cuales son los valores predeterminados correctos de los parametros principales
- visto un ejemplo de ajuste de parametros lightgbm para mejorar el rendimiento del modelo
- Y algunas otras cosas
Para anexo un dolaracidad adicional abrazaderaticular, logrosulte la aparato.
Recursos:
Este adquisicionr fue impreso por primera vez por MJ ahmad shah i wali y abrazaderaticipa en Blog uranus. MJ Bahmani y publicado en Blog Neptune.
×××