1 votos

Calibración de unos cuantos clasificadores binarios no es perfecta - ¿por qué?

Estoy trabajando en un clasificador binario utilizando LightGBM. Intento ver los resultados de los clasificadores al cambiar los costos de falsos positivos y falsos negativos, aún trabajando en los mismos conjuntos de datos de entrenamiento y validación. La función objetivo se define de la siguiente manera:

def my_scorer(y_true, y_pred):
    tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

    model_gain = loss * tp - gain * fp
    max_gain = loss * (fn + tp)

    return model_gain / max_gain

def lgbm_scorer(labels, preds):
    return 'lgbm_scorer', scorer_collection(labels, (preds > 0.5)), True

Como quiero tener probabilidades como resultado de mi modelado, utilizo regresión isotónica como parte final del proceso.

# Versión de sklearn, por la calibración
bst_ = LGBMClassifier(**search_params, **static_params, n_estimators = 1500)

bst_.fit(X = X_train, y = y_train, sample_weight = TRAIN_WEIGHTS,
         eval_set = (X_test, y_test), eval_sample_weight = [TEST_WEIGHTS],
         eval_metric = lgbm_scorer,
         early_stopping_rounds = 150, 
         callbacks = [lgb.reset_parameter(learning_rate = lambda current_round: learning_rate_decay(current_round, 
                                                                                                    base_learning_rate = learning_rate,
                                                                                                    decay_power = decay_power))],
         categorical_feature = cat_vars)

# Calibrar 
calibrated_clf = CalibratedClassifierCV(
    base_estimator=bst_,
    method = 'isotonic',
    cv="prefit"
)
calibrated_clf.fit(X_train, y_train)

search_params son hiperparámetros definidos individualmente (un conjunto por modelo) utilizando Optuna para que la puntuación de ROC-AUC sea aproximadamente la misma para todos los modelos, de modo que sean comparables.

Solo cambiando variables de la función objetivo personalizada (loss y gain), puedo ver que la mayoría de los clasificadores están perfectamente calibrados, pero solo unos pocos no lo están - todos esos pocos están por debajo de la línea 'perfectamente calibrada'.

¿Por qué ha sucedido eso? ¿Cómo es que la calibración no puede ser perfecta - en general y en este escenario?

3voto

Rob Van Dam Puntos 5073

Probablemente esos modelos clasifican mal las muestras; dado que la regresión isotónica transforma las puntuaciones de forma monótona, no puede arreglar el problema de que los contenedores de puntuaciones tengan tasas reales desordenadas. Para verificar eso, compara el área bajo sus curvas ROC (ya que solo depende del orden de clasificación).

3voto

dan90266 Puntos 609

El enfoque que estás utilizando es inconsistente con la toma de decisiones óptima. No uses un "clasificador" sino que estima la probabilidad del resultado como una función de los predictores. Luego, al tomar la decisión final, aplica utilidades/costos/pérdidas a las consecuencias de todas las decisiones posibles para tomar la decisión que maximice la utilidad esperada. Ten en cuenta que en la decisión de Bayes óptima, las utilidades se aplican al final y no son parte del proceso de estimación. Consulta el Capítulo 19 de BBR para obtener más información.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X