iterate
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 !
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 */ |
| 2 | PROC CAS; |
| 3 | SESSION casauto; |
| 4 | BUILTINS.LOADACTIONSET / actionSet="activeLearn"; |
| 5 | QUIT; |
| 6 | /* Création des données via une étape DATA */ |
| 7 | DATA mycas.unlabeled; |
| 8 | DO id = 1 to 1000; |
| 9 | x1 = rand("normal"); |
| 10 | x2 = rand("normal"); |
| 11 | OUTPUT; |
| 12 | END; |
| 13 | RUN; |
| 14 | DATA mycas.annotated; |
| 15 | id = 1; target = 1; OUTPUT; |
| 16 | id = 2; target = 0; OUTPUT; |
| 17 | RUN; |
| 18 | DATA mycas.groundtruth; |
| 19 | DO id = 1 to 1000; |
| 20 | IF (x1 + x2 > 0) THEN target = 1; ELSE target = 0; |
| 21 | OUTPUT; |
| 22 | END; |
| 23 | RUN; |
| 24 | DATA 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; |
| 31 | RUN; |
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.
| 1 | PROC 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}; |
| 17 | RUN; |
| 18 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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}; |
| 18 | RUN; |
| 19 | QUIT; |