Scénario de test & Cas d'usage
Training klassischer künstlicher neuronaler Netze.
Entdecken Sie alle Aktionen von neuralNetErstellung einer simulierten Kundentabelle mit demografischen Daten, Kontoinformationen und einer Zielvariable, die angibt, ob der Kunde das Produkt gekauft hat.
| 1 | DATA casuser.KUNDEN_KAMPAGNE; |
| 2 | call streaminit(123); |
| 3 | DO i = 1 to 5000; |
| 4 | ALTER = 20 + int(rand('UNIFORM') * 50); |
| 5 | EINKOMMEN = 30000 + int(rand('UNIFORM') * 70000); |
| 6 | ANZAHL_PRODUKTE = 1 + int(rand('UNIFORM') * 5); |
| 7 | KONTOSTAND = rand('UNIFORM') * 100000; |
| 8 | KUNDENDAUER_MONATE = 6 + int(rand('UNIFORM') * 120); |
| 9 | WOHNORT = rand('TABLE', .2, .3, .5); /* 1=Stadt, 2=Vorort, 3=Land */ |
| 10 | /* Logik zur Erstellung der Zielvariable */ |
| 11 | IF (EINKOMMEN > 60000 and ANZAHL_PRODUKTE < 3 and KONTOSTAND > 20000) THEN HAT_GEKAUFT = rand('BERNOULLI', 0.7); |
| 12 | ELSE HAT_GEKAUFT = rand('BERNOULLI', 0.1); |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | RUN; |
| 1 | PROC CASUTIL; |
| 2 | load DATA=casuser.KUNDEN_KAMPAGNE casout='KUNDEN_KAMPAGNE' replace; |
| 3 | RUN; |
| 4 | QUIT; |
| 1 | PROC CAS; |
| 2 | dataProcessing.partition / |
| 3 | TABLE={name='KUNDEN_KAMPAGNE'}, |
| 4 | partInd=true, fraction=0.7, seed=456, |
| 5 | casOut={name='KUNDEN_PARTITIONIERT', replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
| 1 | PROC CAS; |
| 2 | neuralNet.annTrain / |
| 3 | TABLE={name='KUNDEN_PARTITIONIERT', where='_PartInd_ = 1'}, |
| 4 | validTable={name='KUNDEN_PARTITIONIERT', where='_PartInd_ = 0'}, |
| 5 | inputs={{name='ALTER'}, {name='EINKOMMEN'}, {name='ANZAHL_PRODUKTE'}, {name='KONTOSTAND'}, {name='KUNDENDAUER_MONATE'}}, |
| 6 | nominals={{name='WOHNORT'}, {name='HAT_GEKAUFT'}}, |
| 7 | target='HAT_GEKAUFT', |
| 8 | hiddens={25, 10}, |
| 9 | acts={'RECTIFIER', 'TANH'}, |
| 10 | targetAct='SOFTMAX', |
| 11 | errorFunc='ENTROPY', |
| 12 | std='STD', |
| 13 | nloOpts={algorithm='LBFGS', maxIters=100, validate={earlyStop='STAGNATION', patience=5}}, |
| 14 | seed=789, |
| 15 | saveState={name='MARKETING_MODELL_STATE', replace=true}; |
| 16 | RUN; |
| 17 | QUIT; |
Die Aktion trainiert erfolgreich ein neuronales Netzwerk. Das Trainingsprotokoll zeigt, dass der Fehler sowohl für die Trainings- als auch für die Validierungsdaten abnimmt. Das Training stoppt vor Erreichen der maximalen Iterationen aufgrund der 'earlyStop'-Bedingung, was eine Überanpassung verhindert. Eine Zustandstabelle 'MARKETING_MODELL_STATE' wird erstellt, die das trainierte Modell für zukünftige Scoring-Aufgaben enthält.