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

R Discussion :

[R-Studio 3.5.1] Fusion de deux modèles RandomForest et optimisation de temps


Sujet :

R

  1. #1
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut [R-Studio 3.5.1] Fusion de deux modèles RandomForest et optimisation de temps
    Salut la commu,

    J'ai conçu un outil de prédiction se basant sur les concepts du Machine Learning et notamment avec les méthodes RandomForest.
    Tout roule comme je veux, sauf que dans un soucis d'amélioration et pérennité du modèle je cherche à pouvoir augmenter la taille de mon jeu d'entrainement (ajouter des individus) sans avoir à recharger entièrement le modèle. (Temps de traitement trop long !)

    J'ai donc deux questions qui permettrai de résoudre mon problème:
    1. Comment ajouter des individus au modèle sans le recharger entièrement ?
    2. Y a t-il un moyen d'améliorer les temps de création de modèles ?


    Création du modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fit_bagging <- randomForest(pred~ ., data = train, ntree=200, na.action=na.roughfix)
    Je suis sur des jeux de 2000 individus et 15000 variables.
    Problème de classification.

    Si quelqu'un pouvait m'aiguiller sur des solutions possibles je prends tous conseils !
    Bonne Journée.

    Mano

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    Comment ajouter des individus au modèle sans le recharger entièrement ?
    Je ne pense pas que ce soit possible. En effet si tu ajoutes des données, les seuils que tu définis pour chaque arbre et chaque variable vont changer.
    Je ne suis donc pas convaincu que tu puisses ajouter comme ça des données sans tout ré-estimer.

    Y a t-il un moyen d'améliorer les temps de création de modèles ?
    Je n'en sais rien, par contre il existe des librairies qui font les calculs des arbres en parallèle ce qui permet d'utiliser plusieurs cœurs de ta machine pour faire les calculs et infine ça réduit le temps de calcul.
    Je ne l'ai pas testé mais il existe le package ParallelForest par exemple. Il doit surement en exister d'autres.
    Si tu peux accéder à un serveur de calculs ...
    Le temps de calcul sera de toute manière conséquent vu le nombre de variables dont tu disposes.

    cdlt

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Merci, je m'en doutais un peu pour l'augmentation de la base d'entrainement. Je vais creuser du côté de la package ParallelForest.

    Mano

  4. #4
    Membre expérimenté
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Par défaut
    Bonjour,

    Voilà une façon pour parallélisé le calcul parmi d'autres plus optimale peut être.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    library (snowfall) #N'oublie pas de télécharger le package
    sfInit( parallel=TRUE, cpus=4 ) # on parallélise sur 4 cœurs/  
    sfLibrary(randomForest) # on charge la librairie  RF sur les 4 coeurs. 
     
    fit_bagging <- randomForest(pred~ ., data = train, ntree=200, na.action=na.roughfix)
     
    sfStop()

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Merci pour ta réponse j'ai effectivement choisie cette librairie finalement !

  6. #6
    Membre expérimenté
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Par défaut
    Une autre façon de faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    library(doParallel)
    library(foreach)
    library(randomForest)
     
    cores = detectCores()
    cl = makeCluster(cores)
    registerDoParallel(cl)
     
    startparallel <- Sys.time()
    fit_bagging<- foreach(ntree=rep(200, cores), .combine=combine, .multicombine=TRUE,
                           .packages='randomForest') %dopar% {
                            randomForest(pred~ ., data = train, ntree=200, na.action=na.roughfix)
                           }
    endparallel <- Sys.time()
    stopCluster(cl)
    endparallel - startparallel  #Calculer le temps de traitement pour comparer.

  7. #7
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    Bonjour,

    Si l'option calcul en // ne se révèle pas assez rapide, une solution alternative pourrait être l'utilisation de méthode type xgboost (gradient boosting) qui conviennent bien à de grands ensembles de données !

    cdt

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

Discussions similaires

  1. [c#, MS STUDIO 2005, SQL-SERVER 2K] Accès à deux bases simultanées
    Par Filippo dans le forum Accès aux données
    Réponses: 2
    Dernier message: 08/12/2006, 12h11
  2. Fusion de deux feuilles Excel
    Par pascal913 dans le forum Access
    Réponses: 20
    Dernier message: 20/07/2006, 13h28
  3. Probleme de fusion de deux librairie
    Par glycerine dans le forum MFC
    Réponses: 8
    Dernier message: 20/04/2006, 09h35
  4. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15
  5. Fusion de deux états
    Par nancy54 dans le forum QuickReport
    Réponses: 2
    Dernier message: 07/06/2005, 19h07

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