neuralNet annTrain

Vorhersage der Kundenreaktion auf eine Marketingkampagne

Scénario de test & Cas d'usage

Geschäftskontext

Eine Bank möchte vorhersagen, welche Kunden am wahrscheinlichsten ein neues Anlageprodukt abonnieren werden, basierend auf ihren demografischen Daten und ihrer Bankhistorie. Ziel ist es, die Marketingausgaben zu optimieren, indem nur die empfänglichsten Kunden angesprochen werden. Dies ist ein klassisches binäres Klassifikationsproblem.
Über das Set : neuralNet

Training klassischer künstlicher neuronaler Netze.

Entdecken Sie alle Aktionen von neuralNet
Datenaufbereitung

Erstellung einer simulierten Kundentabelle mit demografischen Daten, Kontoinformationen und einer Zielvariable, die angibt, ob der Kunde das Produkt gekauft hat.

Kopiert!
1DATA 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;
15RUN;

Étapes de réalisation

1
Laden der Kundendaten in den CAS-Server.
Kopiert!
1PROC CASUTIL;
2 load DATA=casuser.KUNDEN_KAMPAGNE casout='KUNDEN_KAMPAGNE' replace;
3RUN;
4QUIT;
2
Partitionierung der Daten in einen Trainings- (70%) und einen Validierungssatz (30%).
Kopiert!
1PROC CAS;
2dataProcessing.partition /
3 TABLE={name='KUNDEN_KAMPAGNE'},
4 partInd=true, fraction=0.7, seed=456,
5 casOut={name='KUNDEN_PARTITIONIERT', replace=true};
6RUN;
7QUIT;
3
Training eines MLP-Netzwerks mit zwei versteckten Schichten und frühzeitigem Stoppen unter Verwendung des Validierungssatzes. Das Modell wird für die Bereitstellung gespeichert.
Kopiert!
1PROC CAS;
2neuralNet.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};
16RUN;
17QUIT;

Erwartetes Ergebnis


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.