neuralNet annCode

Grenzfall: Umgang mit fehlenden Werten bei der Marketing-Kampagnen-Optimierung

Scénario de test & Cas d'usage

Geschäftskontext

Ein Marketingunternehmen verwendet ein neuronales Netzwerk, um die Wahrscheinlichkeit vorherzusagen, mit der ein Kunde auf eine Kampagne reagiert. Die Eingabedaten sind oft unvollständig (z.B. fehlendes Alter oder Einkommen). Es muss sichergestellt werden, dass der generierte Scoring-Code robust ist und bei Vorhandensein fehlender Werte nicht fehlschlägt, sondern eine gültige Vorhersage liefert.
Über das Set : neuralNet

Training klassischer künstlicher neuronaler Netze.

Entdecken Sie alle Aktionen von neuralNet
Datenaufbereitung

Erstellung einer Modell-Tabelle, die für den Umgang mit fehlenden Werten konfiguriert ist (Imputation), und einer Scoring-Tabelle mit verschiedenen Arten von fehlenden Werten.

Kopiert!
1DATA casuser.marketing_modell (promote=yes);
2 INFORMAT _state_ $256. _layerType_ $32. _layerAct_ $32.;
3 LENGTH _state_ $256 _layerType_ $32 _layerAct_ $32;
4 INPUT _layerId_ _layerType_ $ _neuronId_ _weight_ _bias_ _layerAct_ $ _state_ $;
5 DATALINES;
61 INPUT . . . . \"{\"impute\":\"MEAN\"}\"
72 HIDDEN 1 0.8 0.2 RELU .
83 OUTPUT 1 1.5 -0.3 SIGMOID .
9;
10RUN;
11DATA casuser.kunden_scoring_unvollstaendig (promote=yes);
12 INPUT KundeID Alter Einkommen;
13 DATALINES;
14101 34 55000
15102 . 75000
16103 45 .
17104 . .
18;
19RUN;

Étapes de réalisation

1
Generierung des Scoring-Codes. Wir verwenden den Parameter `listNode='HIDDEN'`, um die Werte der versteckten Neuronen auszugeben. Dies hilft zu überprüfen, wie die Imputation die Aktivierungen beeinflusst.
Kopiert!
1PROC CAS;
2 ACTION neuralNet.annCode /
3 modelTable={name='marketing_modell', caslib='casuser'}
4 listNode='HIDDEN'
5 code={casOut={name='marketing_score_code', caslib='casuser', replace=true}};
6RUN;
7QUIT;
2
Anwendung des generierten Codes auf die unvollständigen Daten. Dies wird simuliert, indem der Code in einem nachfolgenden `datastep.runCode`-Aufruf verwendet wird, um die Robustheit zu testen.
Kopiert!
1PROC CAS;
2 /* Schritt 2a: Code aus der Tabelle in eine Makrovariable laden */
3 SESSION casauto;
4 DATA _null_;
5 SET casuser.marketing_score_code;
6 call symputx('scoringCode', ScoringCode);
7 RUN;
8 
9 /* Schritt 2b: Code ausführen */
10 ACTION datastep.runCode /
11 code = resolve('%bquote(&scoringCode)')
12 casOut={name='scored_customers', caslib='casuser', replace=true}
13 TABLE={name='kunden_scoring_unvollstaendig', caslib='casuser'};
14RUN;
15QUIT;
3
Überprüfung der Ergebnisse. Alle Zeilen, auch die mit fehlenden Werten, sollten eine Score-Ausgabe haben.
Kopiert!
1PROC CAS;
2 TABLE.fetch /
3 TABLE={name='scored_customers', caslib='casuser'};
4RUN;
5QUIT;

Erwartetes Ergebnis


Die Aktion generiert erfolgreich einen Scoring-Code, der die Imputationslogik enthält. Die Anwendung dieses Codes auf die Tabelle `kunden_scoring_unvollstaendig` schlägt nicht fehl. Die Ausgabetabelle `scored_customers` enthält für jede Eingabezeile eine Vorhersage, was beweist, dass die fehlenden Werte korrekt behandelt wurden. Die Werte der versteckten Neuronen (z.B. `H_1_1`) sind ebenfalls in der Ausgabe vorhanden.