IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Question sur les forêts aléatoires


Sujet :

Méthodes prédictives

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut Question sur les forêts aléatoires
    Bonsoir,
    j'ai un problème de classification à trois classes (A, B et C). Mes tests ont montré que le meilleur algorithme adapté était les forêts aléatoires de Breiman. Je cherche à améliorer cet algorithme et surtout mieux l'adapter à mon problème.

    J'ai 6 variables représentatives, et j'ai une des classes (A) qui est toujours reconnue à une précision de 100%.

    Ma question est :
    Puis-je effectuer une quelconque amélioration en ce sens, par exemple en affectant un poids plus faible à cette classe lors de la construction de l'arbre ou bien peut-être en manipulant les variables de manière à accentuer le processus aléatoires sur les classes B et C ?
    Merci de vos retours !

  2. #2
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    une première approche simple consiste à suivre une stratégie "un contre tous". Dans ton cas, on construit trois classifieurs, un spécifique à chaque classe. Le classifieur spécifique à A est obtenu en utilisant les forêts aléatoires après avoir réétiqueter les classes B et C en une seule et même classe, disons D. Le classifieur va donc apprendre à discerner les individus de classes A et D. Le deuxième classifieur est obtenu de la même manière, sauf que cette fois-ci on cherche à reconnaître la classe B en fusionnant les classes A et C en une seule et même classe, disons E. Le dernier classifieur est spécifique à C et obtenu en fusionnant A et B en une une classe, disons F.

    Pour un individu x dont on souhaite prédire la classes, les trois forêts aléatoires générées disent respectivement :
    1. si x est de classe A ou pas
    2. si x est de classe B ou pas
    3. si x est de classe C ou pas
    L'intérêt est d'avoir appris trois modèles simples (binaire) plutôt qu'un modèle plus complexe à 3 classes. On peut donc s'attendre à obtenir de meilleurs résultats pour les prédictions de B et C (A sera toujours reconnu à 100%). Pour le classement final, on adopte généralement un vote majoritaire : on attribue à x la classe qui a obtenu le meilleur score parmi les trois réponses données par les classifieurs.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut
    Bonsoir Aleph69,
    Merci d'être toujours là Si je récapitule, je construis trois forêts aléatoires qui constitueront les entrées à un autre forêt aléatoire, un méta algorithme en quelques sortes, qui traitera les résultats des 3?

  4. #4
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Encore là mais plus pour longtemps, il est tard!

    Il n'y a pas de "super-forêt aléatoire". Il y a seulement les trois que je t'ai décrites. Le méta-apprenant est trivial : il s'agit du vote majoritaire. En gros, tu dois avoir un algorithme qui ressemble à ça :
    IN : donnees, classes {A,B,C}
    1. modelA = apprendreForetAleatoire(donnees,{A,union(B,C)})
    2. modelB = apprendreForetAleatoire(donnees,{B,union(A,C)})
    3. modelC = apprendreForetAleatoire(donnees,{B,union(A,C)})
    4. Pour chaque nouvel individu x
    a. scoreA = appliquerForetAleatoire(modelA,x)
    b. scoreB = appliquerForetAleatoire(modelB,x)
    c. scoreC = appliquerForetAleatoire(modelB,x)
    d. classe(x) = argmax{scoreA,scoreB,scoreC}
    5. Fin pour

    Je pense que les notations sont claires mais si tu as un doute n'hésite pas.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut
    Ok.
    Juste une petite question : Je n'ai pas un grand nombre d'échantillons. Quand tu parles de "score", cela veut-il dire que ce que j'ai à disposition servira d'échantillons d'apprentissage (après étiquetage) pour modelA, modelB et modelC, et ensuite j'applique une validation croisée à mon méta-apprenant ? (super-forêt aléatoire sonne bien du reste )

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut
    Si j'ai bien compris, il faut que j'entraîne 3 forêts aléatoires séparément sur 3 échantillons différents. Ensuite je les combine ensemble sur un autre échantillon (le vrai). C'est cela?

  7. #7
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    les scores sont des nombres qui doivent être d'autant plus élevé que la confiance qu'on peut attribuer au classement est grande. Typiquement, le score pour la classe A pourrait être la proba p(A|x), x étant donné. Similairement pour les classes B et C.

    Il n'y a pas de traitement particulier à faire avec la validation croisée (stratifiée). La combinaison 3 forets + vote majoritaire constitue un classifieur et doit être validé de la même manière que n'importe quel autre algorithme de classement.

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut
    J'ai obtenu un résultat mitigé avec la stratégie One against All. Mes forêts aléatoires avaient un taux de 93%, avec le One againt All c'est 92.4%. Par contre, j'ai essayé le One Against One, et là j'ai obtenu 94.5%
    Aurais-tu une explication "logique"?

  9. #9
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    pour tenter de donner une explication il faut fournir pour chaque classe :
    1. les taux de classement (vrais et faux positifs)
    2. les variances associées
    3. si possible, la spécificité, la précision et le rappel.

    Il faut également savoir ce que font les algorithmes 1vs1 et 1vsAll si tu ne les as pas codé toi-même.

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164

  11. #11
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    je ne pourrai pas expliquer totalement ce qui ce passe car je ne connais pas la manière dont est codée la stratégie 1vs1 dans Weka. Il est logique que 1vs1 conduise au meilleur taux de classement puisqu'on résout des problèmes plus simples que dans les stratégies 1vsAll et AllvsAll. Dans ton cas, il y a une de tes classes qui est mieux reconnue que dans le cas du 1vs1. En revanche, il n'est pas logique que 1vsAll soit moins bon que AllvsAll mais je n'ai pas d'explication.

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 164
    Par défaut
    Ce n'est pas grave, l'essentiel c'est que le taux soit amélioré Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 14h49
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 03h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 09h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo