Je ne fixe pas de règles. Je soumets les données aux Rotation Forest et ils les traitent tout seuls.
Je ne fixe pas de règles. Je soumets les données aux Rotation Forest et ils les traitent tout seuls.
L'apprentissage en logique floue peut être réalisé via les systèmes neuro-fuzzy : http://francky.me/doc/FCS2-Report%20...020110204a.pdf page 35 (chap 3.3.4).
Je t'avouerai que je n'ai aucune idée de leurs performances par rapport aux forêts aléatoires pour ton problème.
J'ai utilisé la toolbox Fuzzy Logic de MATLAB, il me semble avoir lu quelque part dans ce thread que tu utilisais aussi MATLAB, cela réduit le temps de développement, mais restreint beaucoup ta liberté d'action car la toolbox Fuzzy Logic ne propose pas beaucoup d'options pour les systèmes neuro-fuzzy :-/
Voilà ce que je vais faire : Je vais synthétiser au mieux ce que j'ai comme données et voir le système neuro-fuzzy. Pour info, je cherche uniquement à représenter tous les arbres de décision obtenus via les Rotation Forest; obtenir en quelques sortes une règle générale. Et là je vais voir comment cette règle générale pourrait impacter le déroulement de mon algorithme
Juste une question sylvestre au passage, quelle est la différence entre random forest et rotation forest ?
Les Rotation Forest sont plus facilement interprétables que les Random Forest (une grosse boîte noire) et de plus les ensembles de variables sont disjoints d'un arbre à l'autre : D'où l'obtention de plusieurs arbres avec leurs propres règles dans mes résultats.
Pour un système neuro-fuzzy, il faut fixer avant l'apprentissage le nombre d'inputs (-> dans ton cas, Compactness, BoundingL, ...) ainsi que le nombre de sous-ensembles flous de chaque input (2 pour du binaire, mais peut-être tu peux essayer d'en mettre plus pour voir ce que cela donne).
Combien de variables tu as en tout ? Je ne sais pas si les systèmes neuro-fuzzy sont efficaces si il y a beaucoup de variables (par beaucoup j'entends > 10 environ). Les arbres de décisions sont justement censées mieux gérer un nombre important de variables que les tables de décision classiques (e.g. comme le tableau http://franck-dernoncourt.developpez...ique-floue/#L1 : le nombre de lignes explose dès lors qu'il y a beaucoup de variable, ou plus exactement dès lors qu'il y a beaucoup de sous-ensembles flous en tout, i.e la somme de tous les sous-ensembles flous de tous les inputs))
Tu m'as donné une idée :
J'ai 20 arbres, et 3 output dans tous les cas de figure (nez sain, soignable et non soignable).
Si je prenais ces arbres un à un, et que je les schématisais, je pense que ce serait bien de "regrouper" les règles concernant chaque classe.
Exemple :
0.678Var1 et 0.984Var2 => nez sain
0.978Var1 et 0.789Var3 => nez sain
J'aurai donc (Var2 Ou Var3) et [0.678 0.978]Var1 => nez sain
Bref, ce n'est forcément pas la bonne formulation, mais l'idée est de regrouper le tout en 3 règles distinctes (ou trois arbres why not) :
XX ET YY OU ZZ ==> nez sain
AA OU BB ET ZZ ==> nez soignable
XX ET YY OU WW ET TT==> nez non soignable
Cela me permettrait d'appliquer plus facilement la logique floue non?
Les variables par contre sont au nombre de 13.
Qu'en penses-tu?
En fin de compte ce n'est pas aussi simple que prévu
J'ai besoin de vos lumières sur deux points :
1)
Voilà les deux règles du premier arbre :
0.737ExtentR+0.571ExtentL+0.361PerimeterR <= 0.590614: sain (52.0)
0.737ExtentR+0.571ExtentL+0.361PerimeterR > 0.590614: soignable (45.0)
Si j'ai bien compris, cela est traduisible par :
Si (ExtentR<0.737 et ExtentL<0.571 et PerimeterR<0.361) Alors Nez sain
Pour la deuxième règle est-ce que j'inverse pour avoir
Si (ExtentR>0.737 et ExtentL>0.571 et PerimeterR>0.361) Alors Nez soignable
Ou bien y-a-t-il une autre interprétation?
2)
Si j'ai une règle avec des variables négatives
-0.855SolidityR-0.398BoundingR+0.334PerimeterR <= -0.691496: soignable
Cela donnerait-il
Si (SolidityR>0.8555 et BoundingR >0.398 et PerimeterR>0.334) Alors Nez soignable
?
Merci!
Aleph69 pour ne pas trop t'embêter tu n'aurais pas à un lien "valable" qui me permette de comprendre si mon interprétation d'un arbre est bonne ou pas? C'est ce que j'ai pu avoir comme infos à partir du forum même de Weka.
Thanks
Bonjour,
ton interprétation est bonne; c'est ce que fait Weka qui me dérange. Dans les forêts aléatoires, on ne fait jamais d'élagage (pruning) d'arbre. Cela complique les choses et n'améliore pas forcément les performances. J'imagine que ce devrait être pareil pour les rotation forests.
Bref, ce n'est pas normal que les règles de tes arbres de décision soient formalisées par des combinaisons linéaires de variables. C'est pour ça que tu as du mal à fusionner tes arbres. Il y a sûrement moyen de désactiver certaines options d'apprentissage pour avoir des règles de décision simples.
En fait Les Rotation Forest sont basées sur l'analyse en composantes principales comme filtre de projection. C'est pour cela que j'obtiens ces représentations bizarres. Je suis entrain de creuser. Je vous tiens au courant.
Bonsoir,
effectivement, c'est sûrement dû à l'ACP qui extrait de nouvelles variables pour chaque arbre (en formant des combinaisons linéaires des tiennes). Finalement, la fusion est aussi difficile qu'avec les forêts aléatoires.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager