percentile assess

Comparación de Métodos de Cálculo de Percentiles en un Gran Volumen de Datos de Fraude

Scénario de test & Cas d'usage

Contexto empresarial

Una entidad financiera necesita evaluar diariamente un modelo de detección de fraude sobre millones de transacciones. La velocidad del cálculo es crítica. Este escenario busca comparar la precisión y el tiempo de ejecución de los métodos 'ITERATIVE' y 'EXACT' para el cálculo de percentiles en la evaluación del modelo.
Sobre el conjunto : percentile

Cálculo preciso de percentiles y cuantiles.

Descubrir todas las acciones de percentile
Preparación de datos

Crea una tabla muy grande (2 millones de transacciones) simulando transacciones fraudulentas y legítimas, junto con la probabilidad de fraude asignada por un modelo.

¡Copiado!
1DATA casuser.transacciones_fraude;
2 call streaminit(456);
3 DO id_transaccion = 1 to 2000000;
4 monto = 5 + rand('uniform') * 5000;
5 /* El fraude es más probable en montos altos */
6 prob_fraude_real = ifn(monto > 4500, 0.6, 0.02);
7 es_fraude = rand('binomial', prob_fraude_real, 1);
8 /* La puntuación del modelo es una aproximación de la probabilidad real con ruido */
9 prob_modelo_fraude = prob_fraude_real + rand('normal', 0, 0.1);
10 IF prob_modelo_fraude < 0 THEN prob_modelo_fraude = 0;
11 IF prob_modelo_fraude > 1 THEN prob_modelo_fraude = 1;
12 OUTPUT;
13 END;
14RUN;

Étapes de réalisation

1
Carga de la tabla de transacciones en memoria CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=casuser.transacciones_fraude casout='transacciones_fraude' replace;
5QUIT;
6 
2
Ejecución de la evaluación usando el método 'ITERATIVE' (predeterminado y rápido). Se mide el tiempo de ejecución.
¡Copiado!
1PROC CAS;
2 percentile.assess
3 TABLE='transacciones_fraude',
4 response='es_fraude',
5 event='1',
6 pVar={'prob_modelo_fraude'},
7 pEvent={'1'},
8 method='ITERATIVE',
9 includeCutoffOne=true,
10 fitStatOut={name='fitstat_iterative', replace=true};
11RUN;
12QUIT;
3
Ejecución de la evaluación usando el método 'EXACT' (preciso pero más lento). Se mide el tiempo de ejecución para comparar.
¡Copiado!
1PROC CAS;
2 percentile.assess
3 TABLE='transacciones_fraude',
4 response='es_fraude',
5 event='1',
6 pVar={'prob_modelo_fraude'},
7 pEvent={'1'},
8 method='EXACT',
9 includeCutoffOne=true,
10 fitStatOut={name='fitstat_exact', replace=true};
11RUN;
12QUIT;

Resultado esperado


Se espera que la ejecución con `method='ITERATIVE'` sea significativamente más rápida que con `method='EXACT'`. Las estadísticas de ajuste (C-statistic/AUC) en las tablas `fitstat_iterative` y `fitstat_exact` deberían ser muy similares, pero no necesariamente idénticas. Este resultado permitiría al banco justificar el uso del método iterativo para sus evaluaciones diarias, logrando un equilibrio aceptable entre velocidad y precisión.