Bonjour,
J'essaye de réaliser un programme en Java qui construit un ensemble de règles par l'algorithme de couverture itérative (Foil propositionnel).
Ci-joint le pseudo code que j'ai implémenté : "FoilP_Pseudo_Code.pdf".
Malheureusement pour avoir un ensemble de règles couvrant tous les positifs et ne couvrant aucun négatif, mon algorithme produit beaucoup de règles dont certaines sont très spécialisées et couvrent peu d’exemples. Je souhaite donc relâcher cette condition afin que l’algorithme fournisse une solution plus réaliste et simplifie l’ensemble de règles obtenues.
Auriez-vous des idées pour le faire ?
Pour ma part j'ai pensé à faire de l'élagage comme pour les arbres de décisions, mais appliqué ici aux règles. En quelques sorte faire de "l'élagage" sur les règles obtenues.
Le seul document que j'ai trouvé et pouvant répondre à ma problématique ce trouve ci-joint : "PruningAlgorithmsForRuleLearni.pdf"
A la page 3 Figure 2 : "A separate-and-conquer rule learning algorithm", c'est le pseudo algo que j'ai implémenté.
Ce qui m'intéresse ici c'est implémenté le pseudo algo de la page 5, Figure 3 : "A rule learning algorithm using pre-pruning", dont notamment les fonctions :
- "LiteralStoppingCriterion(Theory,NewClause,Cover)", le critère pouvant arrêter d'ajouter des conditions dans la règle en cours.
- "ClauseStoppingCriterion(Theory,Clause,Cover)", le critère pouvant arrêter d'ajouter des regles.
Malheureusement le document ne détail pas en détail le pseudo algo de ces deux fonctions. Et je suis totalement bloqué.
Merci d'avance pour vos réponses
Partager