mlTools

crossValidate

Beschreibung

Führt eine Kreuzvalidierung für angegebene maschinelle Lernaktionen durch. Diese Aktion teilt die Daten in mehrere 'Folds' (Teilmengen) auf, trainiert das Modell auf einigen Folds und validiert es auf der verbleibenden Fold. Dieser Prozess wird wiederholt, bis jede Fold zur Validierung verwendet wurde, was eine robuste Schätzung der Modellleistung ermöglicht.

mlTools.crossValidate <result=results> <status=rc> / casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, kFolds=integer, logLevel=integer, modelType="BNET" | "DECISIONTREE" | "FACTMAC" | "FOREST" | "GRADBOOST" | "NEURALNET" | "SVM", nSubsessionWorkers=integer, parallelFolds=TRUE | FALSE, seed=integer, targetEvent="string", trainOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>};
Einstellungen
ParameterBeschreibung
casOutGibt den Namen und die Details der Score-Ausgabetabelle an.
kFoldsGibt die Anzahl der Folds an, die für die Kreuzvalidierung verwendet werden sollen.
logLevelGibt die Ebene der zu schreibenden Protokollnachrichten an: keine Protokolle (0), Initialisierungs- und Abschlussprotokolle (1), hinzugefügte Setup-Zusammenfassungsprotokolle (2), hinzugefügte Fold-Beginn- und Abschluss-Protokolle (3).
modelTypeGibt den Modelltyp an, auf den die Kreuzvalidierung angewendet wird (z. B. Entscheidungsbaum, Forest, Gradient Boosting).
nSubsessionWorkersGibt die Anzahl der Worker-Knoten für jede Subsession an, die für die parallele Fold-Auswertung verwendet werden sollen.
parallelFoldsWenn auf True gesetzt, werden die Folds parallel ausgewertet, was die Verarbeitungszeit erheblich verkürzen kann.
seedGibt den Seed für das Fold-Sampling für die Kreuzvalidierung an, um die Reproduzierbarkeit der Ergebnisse zu gewährleisten.
targetEventGibt den Namen des nominalen Zielereignisses an, das für die Modellbewertung verwendet werden soll.
trainOptionsGibt eine Liste von Parametern für die Modelltrainingsaktion an, die im Kreuzvalidierungsprozess verwendet werden sollen. Dies ermöglicht eine feinkörnige Steuerung des Trainings für jeden Modelltyp.
Erstellung von Beispieldaten

Dieser SAS-Code erstellt die Tabelle `HMEQ`, die Informationen über Hypothekenantragsteller enthält. Diese Tabelle wird in den folgenden Beispielen verwendet, um die Kreuzvalidierungsaktion zu demonstrieren. Die Daten werden in die `casuser`-Bibliothek geladen.

Kopiert!
1DATA casuser.hmeq;
2 SET sampsio.hmeq;
3RUN;

Beispiele

Dieses Beispiel führt eine 5-fache Kreuzvalidierung für ein Entscheidungsbaummodell mit der Tabelle `HMEQ` durch. Das Ziel ist es, die Variable `BAD` vorherzusagen. Die Eingabevariablen sind `LOAN`, `MORTDUE`, `VALUE`, `YOJ`, `DEROG`, `DELINQ`, `CLAGE`, `NINQ`, `CLNO` und `DEBTINC`.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 mlTools.crossValidate /
3 TABLE={name='hmeq'},
4 modelType='DECISIONTREE',
5 kFolds=5,
6 trainOptions={
7 target='BAD',
8 inputs={'LOAN', 'MORTDUE', 'VALUE', 'YOJ', 'DEROG', 'DELINQ', 'CLAGE', 'NINQ', 'CLNO', 'DEBTINC'}
9 };
10RUN;
Ergebnis :
Die Aktion gibt Tabellen zurück, die die Kreuzvalidierungsergebnisse zusammenfassen, einschließlich der durchschnittlichen Bewertungsmetriken (wie Fehlklassifizierungsrate, AUC usw.) über alle 5 Folds.

Dieses Beispiel zeigt eine 10-fache Kreuzvalidierung für ein Gradient-Boosting-Modell. Es gibt explizit Trainingsparameter an, wie die Anzahl der Bäume (`nTrees`), die Lernrate (`learningRate`) und die maximale Tiefe der Bäume (`maxLevel`). Es wird auch ein Seed für die Reproduzierbarkeit der Folds gesetzt und die Ergebnisse der Bewertung jeder Fold in der Tabelle `CrossVal_Score` gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 mlTools.crossValidate /
3 TABLE={name='hmeq'},
4 modelType='GRADBOOST',
5 kFolds=10,
6 seed=12345,
7 casOut={name='CrossVal_Score', replace=true},
8 trainOptions={
9 target='BAD',
10 inputs={'LOAN', 'MORTDUE', 'VALUE', 'YOJ', 'DEROG', 'DELINQ', 'CLAGE', 'NINQ', 'CLNO', 'DEBTINC'},
11 nTrees=100,
12 learningRate=0.1,
13 maxLevel=5
14 };
15RUN;
Ergebnis :
Die Ausgabe umfasst eine detaillierte Zusammenfassung der Leistung des Gradient-Boosting-Modells für jede der 10 Folds, eine aggregierte Bewertungstabelle und eine Ausgabetabelle `CrossVal_Score` in der `casuser`-Bibliothek, die die vorhergesagten Werte für jede Beobachtung enthält. Die Verwendung eines Seeds stellt sicher, dass die Folds bei jeder Ausführung identisch sind.

FAQ

Was ist die Aktion `crossValidate`?
Welchen Zweck hat der Parameter `kFolds`?
Welche Modelltypen werden vom Parameter `modelType` unterstützt?
Wie kann man die Folds parallel auswerten?
Was ist der Zweck des `trainOptions`-Parameters?
Wie kann ich die Protokollierungsstufe während der Ausführung der Aktion steuern?

Zugehörige Szenarien

Anwendungsfall
Standard-Validierung eines Kreditrisikomodells (Entscheidungsbaum)

Eine Regionalbank möchte ein neues Kreditbewertungsmodell einführen, um Kreditausfälle vorherzusagen. Bevor das Modell produktiv gesetzt wird, muss die Stabilität des Entscheidu...

Anwendungsfall
Performance-Test: Parallele Validierung für Predictive Maintenance (Random Forest)

Ein Fertigungsunternehmen analysiert Sensordaten von Tausenden von Maschinen, um Ausfälle vorherzusagen. Aufgrund des hohen Datenvolumens und der Komplexität des 'Forest'-Modell...

Anwendungsfall
Robustheitstest: Minimale Folds und detailliertes Logging (SVM)

Ein medizinisches Forschungsinstitut testet ein Support Vector Machine (SVM) Modell an einem sehr kleinen Datensatz seltener Krankheiten. Um die Reproduzierbarkeit für Audits si...