Vous êtes sur la page 1sur 6

ALGORITHME 1R

Appelé 1R pour One Rule ou Une Règle.


Une façon facile de trouver des règles de classifications à partir d’Instances.
1R est une méthode simple et facile qui souvent donne de bonnes règles pour caractériser la
structure de données.
La particularité de 1R est que l’ensemble des règles à la sortie du processus testent UN SEUL
ATTRIBUT.
Tout algorithme est bon dans des conditions particulières qui lui conviennent et mauvais
dans tous les autres.
C’est pour ça qu’on doit étudier et utiliser des centaines d’algorithmes ou lieu d’un seul.
Pour l’instant, l’algorithme universel, parfait n’existe pas.
Revenons à 1R, il prétend prendre (souvent) de bonnes décisions sur la base de règles sur un
seul attribut, Cela ne peut être vrai qu’à la condition que………
Dans beaucoup de situations malgré la présence d’une multitude d’attributs dans les
données du problème à traiter, il y a un seul attribut (majoritairement) décideur pour
déterminer la classe de l’instance de manière assez précise.
L’idée est simple : Nous faisons des règles qui testent un seul attributs et assigne la classe en
accordance.
Chaque règle correspond à une valeur différente de l’attribut, dans la partie condition de la
règle.
Evidemment, pour donner la meilleure classification, pour chaque règle, nous prendrons la
classe qui apparait le plus souvent, pour cette condition, dans la base d’apprentissage (le
tableau).
Le taux d’erreur est facilement déterminé. Il suffit de compter le nombre d’instance qui
n’ont la classe majoritaire (bien que la condition soit vérifiée).
Donc, chaque attribut génère un ensemble de règles différentes, une règle pour chaque
valeur de l’attribut.
Evaluer le taux d’erreur pour l’ensemble de règles d’un attribut, et choisir le meilleur.
Voici, le pseudocode de l’algorithme 1R :

Prenons l’exemple du dataset « data weather », je vous avais promis qu’il n’allait pas nous
quitté de tout le semestre :

Voici, ce que donne l’application de l’algorithme sur ce dataset :


Pour bien comprendre, essayez de retrouver tous ces valeurs.
Pour tous les attributs : Pas de problème, nous avons 4 attributs (Outlook, Temperature,
Humidity, Windy)
Faire des règles pour chaque valeur de l’attribut :
Si Outlook = sunny Alors…
Si Outlook = overcast alors…
Si Outlook = rainy Alors…
Prendre la classe la plus fréquente :
Outlook = sunny, je reviens (toujours) à la base d’apprentissage (pour tous les algorithmes,
c’est pour ça qu’on l’appelle base d’apprentissage, et on est en apprentissage automatique)
Je compte combien de fois pour Outlook = sunny, la classe = yes, et combien de fois la classe
= no.
Je trouve 3 no et 2 yes, si j’ai bien compté. La classe no est plus fréquente, donc :
Si Outlook = sunny Alors Play = no.
Quelle est l’erreur de cette affirmation (règle) : elle se trompe 2 fois sur 5.
Et je continue.
En cas d’égalité, il y a des méthodes qui permettent de trancher, mais pour votre niveau et
pour l’instant, on prendra une aléatoirement. Le * qui apparait dans le tableau, mentionnait
un choix aléatoire.
Tous ces calculs correspondent à ce que doit faire l’algorithme pour produire en sortie un
seul ensemble de règles correspondants à 1 seul attribut avec le taux d’erreur minimum.
Dans notre exemple, nous avons le choix les Outlook et Humidity. Pourquoi ?
Leur taux d’erreur est le plus bas 4/14.
Nous prendrons aléatoirement celui de Outlook.
Donc, en sortie de l’algorithme 1R, nous aurons :
Si Outlook = sunny Alors Play = no
Si Outlook = overcast Alors Play = yes
Si outlook = rainy Alors Play = Yes
Vous auriez opté pour Humidity ça aurait été juste.
Mais pas les deux. Rappelez-vous du principe du 1R : Un ensemble de règles sur 1 seul
attribut.
Une fois les règles trouvées, on va les utiliser pour classifier maintenant n’importe quelle
exemple non classé.
D’après le modele trouvé, quelle est la classe de l’exemple :
Outlook = rainy ; Temperature = hot ; Humidity = normal ; Windy = false ?
On pose la question à notre modèle :
Si Outlook = sunny Alors Play = no
Si Outlook = overcast Alors Play = yes
Si outlook = rainy Alors Play = Yes
Et la réponse est…….. Play = yes
Attribut de type numérique
Nous devons convertir les attributs de types numériques en nominales (symbolique), en
effectuant une discrétisation simple.
On va diviser l’ensemble des valeurs possibles d’un attribut numérique en intervalle. La
valeur numérique sera remplacée par la valeur symbolique de l’intervalle.
Expliquons sur un exemple : l’attribut Temperature du tableau suivant :

Première étape, trier les exemples d’apprentissage en accord avec la valeur de l’attribut.
Mentionner la classe correspondante à chaque exemple.

Rappelez vous, on veut discrétiser, diviser en intervalle.


C’est-à-dire partitionner en plaçant des points de ruptures.

Nous placerons des points de rupture là où la classe change.


Cependant, nous remarquons que nous avons un problème avec la valeur 72. Deux classes
différentes pour la même valeur. no et yes.
Nous enlevons ce point de rupture

Nous avons donc les points de ruptures suivants : 64,5 ; 66,5 ; 70,5 ; 77,5 ; 80,5 ; 84
Jusqu’à maintenant nous avons appliqué deux conditions pour un point de rupture :
La classe change et la valeur change.
Cette façon de procéder va surement générer un taux d’erreur minimum bas.
La règle Temperature qui va la discrétisation plus haut, a un taux d’erreur de……2/14.
C’est bien, vous allez dire, FAUX. Pourquoi : OVERFITTING !
Pour cela nous introduisons une 3ème condition.
Pour éviter l’overfitting 1R exige quand on discrétise un attribut numérique qu’il y est un
nombre minimum d’exemple de la classe majoritaire dans chaque partition.
Supposons que ce minimum soit 3. Comprendre puisqu’il y a que 2 classes no et yes, qu’une
partition doit obligatoirement contenir 3 yes ou 3 no.
Qu’arrivent-ils à nos points de ruptures précédents ?
64,5 : disparait. Pourquoi ? il y a seulement un yes.
66,5 : disparait. Il un yes et un no.
70,5 : reste. Pourquoi ? il y a un no et 4 yes.
77,5 : reste. 2 no et 3 yes
80 : disparait.
84 disparait.
On se retrouve avec :
Chaque partition contient au moins 3 instances de la classe majoritaire, excepter la dernière,
qui a généralement moins (force majeur).
La classe majoritaire de la 1ère partition est yes (avec erreur = 1/5)
La classe majoritaire de la deuxième partition est yes (avec erreur = 2/5)
Pour la troisième partition, nous choisirons aléatoirement la classe no (pour qu’il y est une
règle !) (avec erreur = 2/4).
Bien sûr, avec deux yes qui se suivent, nous allons les fusionner, sans problème.

Nous aurons donc l’ensemble règles pour Température :


Si température ≤ 77,5 Alors Play = yes erreur = 3/10
Si Temperature > 77,5 Alors Play = no erreur = 2/4
Ce qui donne un taux d’erreur 5/14 au total pour les règles Temperature.
Rappelez-vous, on est en train d’exécuter l’algorithme 1 R sur le tableau « data weather »
‘numérique’ .
On est à la recherche de l’attribut avec l’ensemble règles taux d’erreur minimum.
On a déjà travaillé sur les attributs Outlook et Windy de l’exemple précédent. Ils n’ont pas
changé. On vient de faire Température.
Il reste à faire…. Humidity
Faites le.
Il sera inclus dans le prochain TD.
Ne vous trompez pas, l’algorithme 1 R est plus facile des algorithmes et vous allez souhaiter
(une fois compris) l’avoir pendant l’examen.
Relisez le cours deux ou trois fois, et vous allez tout comprendre.

Vous aimerez peut-être aussi