Prediga el rendimiento de su modelo (sin esperar al grupo de control)

May 10 2022
Un algoritmo novedoso de NannyML permite estimar el rendimiento de un modelo de ML antes de que la verdad del terreno esté disponible. Así es como funciona.
Entonces, su modelo predictivo está en funcionamiento. Lo ha desarrollado, probado y finalmente implementado.
[Imagen del autor]

Entonces, su modelo predictivo está en funcionamiento. Lo ha desarrollado, probado y finalmente implementado. Al presentarlo a sus partes interesadas, menciona que el modelo logró un 75 % de precisión y un 25 % de recuperación en los datos de backtesting. Y dicen: “ Pero, ¿cuál es el rendimiento de los clientes actualmente activos? ”. El caso es que:

A nadie le interesa cómo se comporta su modelo con datos antiguos. Lo único que importa es cómo funcionará el modelo con los datos nuevos .

Pero, para saber eso, tendrá que esperar a observar la variable objetivo, lo que puede llevar mucho tiempo. Podríamos llamar a esto la “ maldición del rendimiento retrasado ”: ​​necesitas tomar decisiones ahora mismo, pero solo tendrás información completa en el futuro.

Pensé que este problema no tenía solución hasta que leí recientemente este artículo de NannyML (una biblioteca de código abierto centrada en la ciencia de datos posterior a la implementación). Proponen un algoritmo llamado “ Estimación del rendimiento basado en la confianza ” (CBPE). Este método permite estimar de forma fiable el rendimiento de un modelo, utilizando las probabilidades predichas como única entrada (es decir, cuando no se dispone de una realidad básica) .

Como creo que su idea es bastante brillante, en este artículo describiré cómo funciona su algoritmo bajo el capó.

La necesidad de predecir actuaciones

Supongamos que su empresa le pide que pronostique la probabilidad de abandono de cada cliente en el próximo mes. Por lo tanto, desarrolla una canalización de aprendizaje automático y, después de validarla en los datos reservados, la implementa.

El resultado de su canalización es una tabla como esta:

Salida de una canalización de ML. [Imagen del autor]

Por lo general, se separa un pequeño grupo de clientes (elegidos al azar). La idea es dejar este grupo intacto para que dentro de un mes sepas qué pasaría si no hicieras nada con tu base de clientes. Al igual que en los ensayos clínicos, este grupo se denomina “ grupo de control ”.

Selección aleatoria de un grupo de control. [Imagen del autor]

Un mes después, finalmente sabe qué clientes del grupo de control se han ido. Por lo tanto, puede calcular cualquier métrica de rendimiento para su modelo en el grupo de control: área bajo la curva ROC, precisión promedio, puntaje F1, etc.

Desempeño retrasado (observado) del modelo. [Imagen del autor]

Para hacer eso, había que esperar un mes.

Por el contrario, el algoritmo propuesto por NannyML permite obtener una estimación fiable del rendimiento del modelo en este momento, sin tener que esperar al grupo de control . Además, estas métricas esperadas se calculan sobre toda la base de clientes (no solo sobre el grupo de control).

El algoritmo de NannyML permite obtener el rendimiento esperado del modelo en el momento del servicio. [Imagen del autor]

Hay muchos beneficios:

  • Tomar mejores decisiones ahora mismo, lo que permite hacer análisis hipotéticos (por ejemplo: ¿cuál es la precisión/recuperación esperada si configuro el umbral de probabilidad en 50 %? ¿Qué sucede si configuro el umbral en 80 %?).
  • Tener una alerta temprana sobre su modelo, para que pueda solucionarlo antes de que sea demasiado tarde. Por ejemplo, si su modelo de calificación crediticia falla sistemáticamente, no necesita esperar un año (y perder millones) antes de darse cuenta.
  • Tener un resultado realista sobre el rendimiento de su modelo en los datos actuales, ya que a veces esperar al grupo de control es simplemente inviable , como en la predicción a largo plazo (p. ej., impagos de hipotecas de casas) o cuando obtener etiquetas es costoso.
Rendimiento del modelo esperado frente al rendimiento del modelo observado. [Imagen del autor]

Ahora que sabemos por qué esto es útil, intentemos comprender la magia detrás del algoritmo.

¡Advertencia, manipular con cuidado!

Para que el algoritmo produzca resultados fiables, se deben cumplir dos condiciones previas:

  • Las probabilidades que produce el modelo deben estar debidamente calibradas.
  • No debe haber desviación de conceptos (sin embargo, la desviación de datos no es un problema).

En cuanto a la deriva de concepto, es cuando la relación entre sus características y la variable de destino cambia con el tiempo. Es una de las cosas más temibles que pueden suceder en el aprendizaje automático. Y, si sucede, por supuesto que no puede esperar predecir de forma fiable el rendimiento de su modelo.

Dicho esto, sigamos con la parte divertida.

De las probabilidades a la matriz de confusión

Para fijar ideas, tomemos como ejemplo 5 individuos, con diferentes probabilidades previstas: 10%, 25%, 40%, 70% y 85%.

Probabilidades pronosticadas de 5 individuos. [Imagen del autor]

Pero, por lo general, las probabilidades no se usan como son. De hecho, al final, lo que nos interesa es saber qué individuos serán positivos y cuáles negativos. Para hacer eso, necesitamos establecer un umbral: las observaciones por encima de ese umbral se clasificarán como positivas, y las que estén por debajo del umbral se clasificarán como negativas.

Por ejemplo, si fijamos el umbral en el 50 %, los 3 primeros individuos se clasificarán como negativos (etiqueta 0), mientras que los 2 últimos se clasificarán como positivos (etiqueta 1).

Desde probabilidades pronosticadas hasta etiquetas pronosticadas, en función del valor de umbral. [Imagen del autor]

Ahora consideremos al último individuo, cuya probabilidad predicha es del 85%. Dado que el punto está por encima del umbral, este individuo se clasifica como positivo. Sin embargo, dado que nuestras probabilidades están calibradas, podemos esperar razonablemente que:

  • El 85% de las veces, este individuo resultará ser positivo ( "verdadero positivo" );
  • El 15% de las veces, este individuo resultará negativo ( "falso positivo" ).
  • El 90% de las veces, este individuo en realidad resultará ser negativo ( "verdadero negativo" );
  • El 10% de las veces, este individuo resultará ser positivo ( "falso negativo" ).
Estimación de la matriz de confusión basada en probabilidades predichas y un umbral. [Imagen del autor]

Cada segmento coloreado representa la probabilidad de que un individuo sea un verdadero/falso positivo o un verdadero/falso negativo .

Así, si sumamos la longitud de todos los segmentos de cada color, obtenemos respectivamente el número esperado de verdaderos positivos, falsos positivos, falsos negativos y verdaderos negativos .

Además, está claro a partir de la figura que TP + FP + FN + TN = n, donde nes el número de individuos. Tenga en cuenta que esta propiedad se comparte con las matrices de confusión "regulares".

La única diferencia es que, en nuestro caso, los valores de TP, FP, FN y TN no son valores enteros. Y esto tiene sentido, ya que son valores esperados. De hecho, en este ejemplo, esto es lo que obtenemos:

Matriz de confusión esperada. [Imagen del autor]

Tenga en cuenta que, para obtener esta matriz de confusión esperada, solo necesitamos conocer las probabilidades predichas (calibradas) y un umbral. El código de Python correspondiente a todo lo que hemos visto hasta ahora es:

pred = proba >= thres
    
tp = np.sum((pred == 1) * proba)
fp = np.sum((pred == 1) * (1 - proba))
fn = np.sum((pred == 0) * proba)
tn = np.sum((pred == 0) * (1 - proba))

Obtener la curva ROC esperada

Por ejemplo, concentrémonos en el área bajo la curva ROC. Los dos ingredientes de la curva ROC son la tasa de verdaderos positivos y la tasa de falsos positivos. Gráficamente, TPR y FPR son:

Interpretación gráfica de Tasa de verdaderos positivos y Tasa de falsos positivos. [Imagen del autor]

Sin embargo, la elección del umbral es arbitraria. Entonces, para tener una idea global del rendimiento del modelo, la curva ROC se define como el conjunto de todos los TPR/FPR para todos los umbrales posibles. En este caso, al tener 5 valores distintos, hay 6 umbrales posibles.

Tasa de falsos positivos y tasa de verdaderos positivos para diferentes umbrales. [Imagen del autor]

Entonces, en este punto, tenemos 6 pares de índices de falsos positivos/verdaderos positivos: un par para cada umbral. Luego, la curva ROC se obtiene trazando todos los pares, con la tasa de falsos positivos en el eje x y la tasa de verdaderos positivos en el eje y .

Curva ROC obtenida a partir de los 6 pares de FPR/TPR. [Imagen del autor]

Ahora, roc_auc_scorees simplemente el área subyacente a esta curva, que se puede calcular fácilmente: Scikit-learn también proporciona una función para calcular directamente el área bajo cualquier curva. En nuestro caso, las coordenadas x vienen dadas por Tasas de falsos positivos y las coordenadas y vienen dadas por Tasas de verdaderos positivos, por lo que:

from sklearn.metrics import auc
fpr = [0.0, 0.06, 0.17, 0.39, 0.67, 1.0]
tpr = [0.0, 0.37, 0.67, 0.85, 0.96, 1.0]
roc_auc = auc(x=fpr, y=tpr)

Eso es todo. ¡Acabamos de calcular el área esperada bajo la curva ROC con base en las probabilidades predichas, sin conocer la verdad del terreno!

Resumiendo

En este artículo, hemos visto cómo predecir de forma fiable el rendimiento esperado (p. ej., el área bajo ROC) de un modelo de aprendizaje automático, cuando la realidad básica no está disponible .

Este algoritmo, llamado " Estimación de rendimiento basada en la confianza " (CBPE), fue propuesto por primera vez en este artículo por NannyML (una biblioteca de código abierto centrada en la ciencia de datos posterior a la implementación). Acaban de convertirse en código abierto, puede echar un vistazo a su código y documentación en su página de Github:https://github.com/NannyML.

¡Gracias por leer! Espero que hayas disfrutado este artículo. Si quieres agrégame en Linkedin !

© Copyright 2021 - 2022 | unogogo.com | All Rights Reserved