boolRule

brTrain

##set_boolrule

Description

L'action brTrain est le cerveau de l'ensemble boolRuleAction de filtrage ou de classification basée sur une expression logique (ET, OU, NON). Elle permet de valider des conditions spécifiques pour segmenter des données ou déclencher des événements. . Elle permet d'extraire des règles logiques (booléennes) à partir de données textuelles préalablement segmentées. Contrairement aux modèles de type 'boîte noire', cette action génère des règles lisibles par l'humain (ex: si 'promotion' et 'gratuit' sont présents, alors classer en 'Spam'). C'est l'outil idéal pour les data scientistsExperts extrayant des connaissances via des méthodes statistiques, algorithmes et IA. Ils transforment les données brutes en insights stratégiques pour résoudre des problèmes métier complexes. qui aiment comprendre pourquoi leur 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). prend une décision, ou pour ceux qui veulent automatiser des décisions métier complexes sans perdre le contrôle. Un peu comme un détective qui traduirait des indices vagues en preuves irréfutables.

Syntaxe Officielle
proc cas;
boolRule.brTrain /
table={caslib="nom_caslib", name="nom_table"},
docId="nom_variable_id_doc",
termId="nom_variable_id_terme",
docInfo={table={name="table_doc"}, id="id_doc", targets={"cible"}},
termInfo={table={name="table_termes"}, id="id_terme", label="texte_terme"},
casOuts={rules={name="table_regles"}, ruleTerms={name="table_regles_termes"}}
;
run;

Paramètres Clés

Nom du paramètre Description
table Table CAS d'entrée contenant la relation terme-document (généralement issue d'un parsing textuel).
docId Spécifie la variable contenant l'identifiant unique des documents dans la table principale.
termId Spécifie la variable contenant l'identifiant unique des termes (mots).
docInfo Sous-ensemble de paramètres définissant la table des documents, la colonne ID et surtout la ou les variables cibles à prédire.
termInfo Permet de lier les IDs de termes à leurs libellés textuels pour rendre les règles générées compréhensibles.
casOuts Définit les noms des tables de sortie qui stockeront les règles découvertes et les termes associés.
gPositive Le score G minimum pour qu'une règle positive soit conservée. Plus le chiffre est élevé, plus on cherche la pureté au détriment du volume.

Préparation des données

Préparation des données pour l'extraction de règles

Pour entraîner un modèle de règles booléennes, nous avons besoin d'une table de documents étiquetés et d'une table de termes (indexation).

1DATA casuser.docs; LENGTH text $100 label 8; INPUT text$ label docId; DATALINES; 'bonjour cadeau gratuit' 1 1
2'offre exceptionnelle cadeau' 1 2
3'rapport reunion projet' 0 3
4'compte rendu travail' 0 4
5'gratuit pour vous' 1 5
6; RUN;
7PROC CAS;
8 textMining.tpParse / TABLE={name='docs'} docId='docId' text='text'
9 casOut={name='parent', replace=true}
10 offset={name='offset', replace=true};
11 textMining.tpAccumulate / TABLE={name='parent'}
12 child={name='child', replace=true}
13 parent={name='parent_out', replace=true}
14 terms={name='terms', replace=true};
15RUN;

Exemples d'utilisation

Extraction de règles de base

Un exemple minimaliste pour extraire des règles binaires à partir des tables générées précédemment.

1PROC CAS; boolRule.brTrain / TABLE={name='child'}, docId='_document_', termId='_termnum_', docInfo={TABLE={name='docs'}, id='docId', targets={'label'}}, termInfo={TABLE={name='terms'}, id='_termnum_', label='_term_'}, casOuts={rules={name='rules_out', replace=true}, ruleTerms={name='rule_terms_out', replace=true}}; RUN;
Résultat Attendu :
Les tables rules_out et rule_terms_out sont créées dans la bibliothèque active, contenant les expressions logiques identifiées.
Entraînement avec réglages de précision et multiclasse

Ici, on ajuste les paramètres de score G et on demande explicitement un traitement binaire sur une cible spécifique pour être plus sélectif.

1PROC CAS; boolRule.brTrain / TABLE={name='child'}, docId='_document_', termId='_termnum_', gPositive=10, gNegative=10, mPositive=2, docInfo={TABLE={name='docs'}, id='docId', targets={'label'}, targetType='BINARY', events={'1'}}, termInfo={TABLE={name='terms'}, id='_termnum_', label='_term_'}, casOuts={rules={name='rules_hard', replace=true}, ruleTerms={name='rule_terms_hard', replace=true}, candidateTerms={name='candidates', replace=true}}; RUN;
Résultat Attendu :
Extraction de règles plus strictes (G-score de 10) et création d'une table supplémentaire listant les termes candidats avant filtrage final.