Scénario de test & Cas d'usage
Generierung eines großen Datensatzes von Finanztransaktionen (1 Million Datensätze) mit Merkmalen, die auf potenziellen Betrug hindeuten.
| 1 | DATA transaktionen_gross; |
| 2 | call streaminit(789); |
| 3 | DO trans_id = 1 to 1000000; |
| 4 | betrag = 5 + rand('NORMAL', 150, 500); |
| 5 | IF betrag < 0 THEN betrag = 5; |
| 6 | tageszeit = rand('UNIFORM') * 24; |
| 7 | land_match = (rand('UNIFORM') > 0.95); /* 1 if country doesn't match card origin */ |
| 8 | p = 1 / (1 + exp(-( -5 + 0.002*betrag + 0.08*tageszeit + 2*land_match ))); |
| 9 | ist_betrug = rand('BERNOULLI', p); |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=transaktionen_gross casout='transaktionen_gross_cas' replace; |
| 5 | RUN; |
| 6 |
| 1 | PROC CAS; |
| 2 | bart.bartProbit / |
| 3 | TABLE='transaktionen_gross_cas', |
| 4 | model={depVars={{name='ist_betrug'}}, effects={{vars={'betrag', 'tageszeit', 'land_match'}}}}, |
| 5 | nTree=50, /* Weniger Bäume für schnelleres Training */ |
| 6 | nBI=200, |
| 7 | nMC=800, |
| 8 | seed=555, |
| 9 | distributeChains=4, /* Annahme: Mindestens 4 Worker verfügbar */ |
| 10 | maxTrainTime=600, /* Zeitlimit von 10 Minuten */ |
| 11 | trainInMem=TRUE, |
| 12 | store={name='betrugs_modell_volumen', replace=true}; |
| 13 | RUN; |
Die Aktion nutzt den verteilten Modus, um das Training zu beschleunigen, und schließt innerhalb des Zeitlimits von 600 Sekunden ab. Das Protokoll sollte anzeigen, dass die MCMC-Ketten verteilt wurden. Ein Modell-Store 'betrugs_modell_volumen' wird erstellt. Die Leistung wird als akzeptabel für die Verarbeitung großer Datenmengen bewertet.