Scénario de test & Cas d'usage
Training klassischer künstlicher neuronaler Netze.
Entdecken Sie alle Aktionen von neuralNetErstellung von zwei Datensätzen: einem großen historischen Transaktionsdatensatz und einem kleineren, neueren Datensatz.
| 1 | DATA casuser.TRANSAKTIONEN_HISTORISCH (obs=20000) casuser.TRANSAKTIONEN_NEU (obs=5000); |
| 2 | call streaminit(987); |
| 3 | DO i = 1 to 25000; |
| 4 | BETRAG = rand('LOGNORMAL', 3, 1); |
| 5 | STUNDE_TAG = int(rand('UNIFORM')*24); |
| 6 | TAG_WOCHE = int(rand('UNIFORM')*7); |
| 7 | LAND_CODE = ceil(rand('UNIFORM')*10); |
| 8 | prob_betrug = 0.01; |
| 9 | IF (BETRAG > 500 and (STUNDE_TAG < 6 or STUNDE_TAG > 22)) THEN prob_betrug = 0.4; |
| 10 | IF (LAND_CODE > 8) THEN prob_betrug = prob_betrug * 2; |
| 11 | IST_BETRUG = rand('BERNOULLI', prob_betrug); |
| 12 | IF i <= 20000 THEN OUTPUT casuser.TRANSAKTIONEN_HISTORISCH; |
| 13 | ELSE OUTPUT casuser.TRANSAKTIONEN_NEU; |
| 14 | END; |
| 15 | RUN; |
| 1 | PROC CASUTIL; |
| 2 | load DATA=casuser.TRANSAKTIONEN_HISTORISCH casout='TRANSAKTIONEN_HISTORISCH' replace; |
| 3 | load DATA=casuser.TRANSAKTIONEN_NEU casout='TRANSAKTIONEN_NEU' replace; |
| 4 | RUN; |
| 5 | QUIT; |
| 1 | PROC CAS; |
| 2 | neuralNet.annTrain / |
| 3 | TABLE={name='TRANSAKTIONEN_HISTORISCH'}, |
| 4 | inputs={{name='BETRAG'}, {name='STUNDE_TAG'}, {name='TAG_WOCHE'}}, |
| 5 | target='IST_BETRUG', |
| 6 | nominals={{name='LAND_CODE'}, {name='IST_BETRUG'}}, |
| 7 | hiddens={50, 20}, |
| 8 | nloOpts={maxIters=30, algorithm='LBFGS'}, |
| 9 | seed=321, |
| 10 | modelTable={name='BETRUGSMODELL_GEWICHTE', replace=true}; |
| 11 | RUN; |
| 12 | QUIT; |
| 1 | PROC CAS; |
| 2 | neuralNet.annTrain / |
| 3 | TABLE={name='TRANSAKTIONEN_NEU'}, |
| 4 | inputs={{name='BETRAG'}, {name='STUNDE_TAG'}, {name='TAG_WOCHE'}}, |
| 5 | target='IST_BETRUG', |
| 6 | nominals={{name='LAND_CODE'}, {name='IST_BETRUG'}}, |
| 7 | hiddens={50, 20}, /* Architektur muss übereinstimmen */ |
| 8 | modelTable={name='BETRUGSMODELL_GEWICHTE'}, /* Gewichte laden */ |
| 9 | resume=TRUE, /* Training fortsetzen */ |
| 10 | nloOpts={maxIters=20, algorithm='LBFGS'}, |
| 11 | seed=654, |
| 12 | saveState={name='BETRUGSMODELL_FINAL_STATE', replace=true}; |
| 13 | RUN; |
| 14 | QUIT; |
Der zweite `annTrain`-Lauf beginnt nicht mit zufälligen Gewichten. Der anfängliche Fehler im Protokoll des zweiten Laufs ist deutlich niedriger als der anfängliche Fehler des ersten Laufs, was beweist, dass das Training erfolgreich fortgesetzt wurde. Das Training konvergiert schnell. Eine endgültige Zustandstabelle 'BETRUGSMODELL_FINAL_STATE' wird erstellt, die ein Modell repräsentiert, das aus beiden Datensätzen gelernt hat.