activeLearn

iterate

##set_activelearn

Description

L'action activeLearn.iterate effectue un apprentissage actif () de manière itérative et évalue les performances du modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). à chaque étape. Cette action interroge stratégiquement l'utilisateur (ou une table de vérité terrain) pour étiqueter les données les plus incertaines ou pertinentes, minimisant ainsi l'effort d'annotation global. Parfait pour faire apprendre votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). de ses propres lacunes de façon autonome, un peu comme nous après une petite erreur un lundi matin !

Syntaxe Officielle
proc cas;
activeLearn.iterate <result=results> <status=rc> /
annotatedTable={name="table-name", caslib="string", ...}
event="string"
groundTruthTable={name="table-name", caslib="string", ...}
id="variable-name"
inputs={"var1", "var2", ...}
modelProgram="string"
nBins=integer
nIterations=integer
nominals={"var1", ...}
outIterationHistory={name="table-name", replace=true}
outQueryHistory={name="table-name", replace=true}
selectQuery={method="RANDOM" | "RELEVANCE" | "UNCERTAINTY", ...}
table={name="table-name", caslib="string", ...}
target="variable-name"
testTable={name="table-name", caslib="string", ...}
topK=integer;
run;
quit;

Paramètres Clés

Nom du paramètre Description
annotatedTable Spécifie la table qui contient les étiquettes initiales pour commencer l'entraînement du modèle.
event Spécifie le niveau d'événement de prédiction pour l'évaluation du modèle. Si la cible a un format, vous devez spécifier la valeur formatée.
groundTruthTable Spécifie la table qui contient toutes les véritables étiquettes de référence (ground truth) pour simuler les réponses de l'oracle de manière automatisée.
id Spécifie la variable ID (identifiant unique et non manquant) à utiliser pour fusionner les étiquettes de la table annotée.
inputs Spécifie les variables explicatives à utiliser pour l'analyse.
modelProgram Spécifie le code CASL de modélisation () défini par l'utilisateur à appliquer à chaque itération d'apprentissage.
nBins Spécifie le nombre de groupes (bins) à utiliser pour l'évaluation du modèle (valeur par défaut : 20).
nIterations Spécifie le nombre maximum d'itérations de boucle d'apprentissage actif à effectuer (valeur par défaut : 20).
nominals Spécifie quelles variables de l'analyse doivent être traitées comme des variables nominales (catégorielles).
outIterationHistory Crée une table de sortie contenant l'évaluation des performances du modèle pour chaque itération complétée.
outQueryHistory Crée une table de sortie contenant l'historique détaillé des requêtes (données nouvellement étiquetées) au fil des itérations.
selectQuery Spécifie la stratégie de requête () à utiliser : méthode aléatoire (RANDOM), pertinence (RELEVANCE) ou incertitude (UNCERTAINTY, la méthode par défaut).
table Spécifie la table d'entrée principale qui contient toutes les données non étiquetées.
target Spécifie la variable cible binaire utilisée pour l'analyse et la prédiction.
testTable Spécifie une table de test distincte utilisée de façon indépendante pour évaluer les performances du modèle.
topK Spécifie le nombre d'observations (le top K) à interroger et à ajouter à l'entraînement lors de chaque itération (valeur par défaut : 50).

Préparation des données

Création des données simulées pour l'apprentissage actif

Génération de tables de base comprenant des données non étiquetées, quelques annotations initiales, une table de vérité terrain (simulant un humain) et un ensemble de test indépendant.

1/* Chargement de l'action set */
2PROC CAS;
3 SESSION casauto;
4 BUILTINS.LOADACTIONSET / actionSet="activeLearn";
5QUIT;
6/* Création des données via une étape DATA */
7DATA mycas.unlabeled;
8 DO id = 1 to 1000;
9 x1 = rand("normal");
10 x2 = rand("normal");
11 OUTPUT;
12 END;
13RUN;
14DATA mycas.annotated;
15 id = 1; target = 1; OUTPUT;
16 id = 2; target = 0; OUTPUT;
17RUN;
18DATA mycas.groundtruth;
19 DO id = 1 to 1000;
20 IF (x1 + x2 > 0) THEN target = 1; ELSE target = 0;
21 OUTPUT;
22 END;
23RUN;
24DATA mycas.test;
25 DO id = 1001 to 1200;
26 x1 = rand("normal");
27 x2 = rand("normal");
28 IF (x1 + x2 > 0) THEN target = 1; ELSE target = 0;
29 OUTPUT;
30 END;
31RUN;

Exemples d'utilisation

Itération d'Active Learning avec stratégie d'incertitude

Cet exemple exécute l'action d'apprentissage actif pour 5 itérations en utilisant la méthode d'incertitude (par défaut) pour interroger 10 nouvelles observations à chaque fois.

1PROC CAS;
2 activeLearn.iterate /
3 TABLE={name="unlabeled"}
4 annotatedTable={name="annotated"}
5 groundTruthTable={name="groundtruth"}
6 testTable={name="test"}
7 id="id"
8 target="target"
9 inputs={"x1", "x2"}
10 event="1"
11 nIterations=5
12 topK=10
13 selectQuery={method="UNCERTAINTY", probVar="P_target1"}
14 modelProgram="decisionTree.dtreeTrain / table=AL_TRAIN_TABLE, target='target', inputs={'x1','x2'}; decisionTree.dtreeScore / table=AL_SCORE_TABLE, modelTable='dt_model', casout=AL_SCORE_CASOUT;"
15 outIterationHistory={name="iter_history", replace=true}
16 outQueryHistory={name="query_history", replace=true};
17RUN;
18QUIT;
Résultat Attendu :
Le processus itère 5 fois. À chaque étape, le modèle est entraîné via le 'modelProgram', les scores d'incertitude sont calculés, et 10 observations les plus incertaines de la table groundTruthTable sont envoyées dans la table d'entraînement. L'historique des itérations et des requêtes est documenté dans 'iter_history' et 'query_history'.
Apprentissage Actif en utilisant la sélection par pertinence et des variables nominales

Dans cet exemple avancé, la méthode de sélection est définie sur 'RELEVANCE' avec le paramètre gamma ajusté. De plus, nous indiquons explicitement que la variable cible est nominale.

1PROC CAS;
2 activeLearn.iterate /
3 TABLE={name="unlabeled"}
4 annotatedTable={name="annotated"}
5 groundTruthTable={name="groundtruth"}
6 testTable={name="test"}
7 id="id"
8 target="target"
9 inputs={"x1", "x2"}
10 nominals={"target"}
11 event="1"
12 nIterations=10
13 topK=5
14 selectQuery={method="RELEVANCE", gamma=20, minNObs=1000}
15 modelProgram="svm.svmTrain / table=AL_TRAIN_TABLE, target='target', inputs={'x1','x2'}, nominals={'target'}; svm.svmScore / table=AL_SCORE_TABLE, modelTable='svm_model', casout=AL_SCORE_CASOUT;"
16 outIterationHistory={name="iter_history_rel", replace=true}
17 outQueryHistory={name="query_history_rel", replace=true};
18RUN;
19QUIT;
Résultat Attendu :
Un modèle SVM binaire est entraîné de manière itérative. À chaque boucle (jusqu'à 10), les 5 observations les plus 'pertinentes' selon les noyaux gaussiens (gamma=20) sont extraites pour annotation et enrichissent la table d'entraînement.