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 :

Interpréter des résultats sur R


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 14
    Par défaut Interpréter des résultats sur R
    Bonjour,

    Je voudrais savoir si l'on peut m'aider à interpréter les résultats générés par RStudio sur la prédiction de la défaillance des entreprises en comparant les réseaux de neurones et la régression linéaire.



    Comment interpréter les points qui forment deux lignes verticales dans chaque graphique.

    Merci,

  2. #2
    Membre émérite

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Je préfère le modèle de régression que le modèle de réseaux de neurones. Il semble mieux catégoriser les données. Mais la difficulté sur tes données c'est que tu compares des données discrètes avec des données continues ce qui rend l'interprétation un peu scabreuse. Je te conseillerai de mettre un seuil et de faire une matrice de confusion pour voir dans les deux cas combien de bien classé et de mal classé par type de modèle ?

    Au plaisir de te lire

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 14
    Par défaut
    Merci beaucoup pour votre réponse mais honnêtement je n'ai rien compris et je ne sais pas comment mettre ça en place.

    Si je comprends bien, quand vous dites que la régression linéaire semble mieux catégoriser les données c'est parce qu'on retrouve des données des deux cotés de la ligne de régression?

  4. #4
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    La comparaison d'un classifieur entre deux classes se fait par courbes ROC, en utilisant par exemple le package pROC.
    1) calculer les intervalles de confiance des AUC ; si 0.5 est dans l'intervalle de confiance, cela signifie que le classifieur tire au hasard les classes ;
    2) comparer les AUC entre les 2 classifieurs.

    Mais cette analyse n'aura de sens que si les ensembles d'apprentissage et de test sont différents. Et comme on n'est que rarement dans cette configuration, il faut se baser sur des résultats obtenus par validation croisée (pour les 'Nuls', voir par exemple la page Wikipedia concernant la validation croisée, c'est un bon point de départ pour comprendre ce que c'est).

    N.B. : les résultats sont données par les procédures codées en R et non par RStudio qui n'est qu'un environnement de travail. On peut obtenir les mêmes résultats et graphiques à partir de la console R (RGui).

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 14
    Par défaut
    Merci pour votre explication.

    Voici mon code:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    set.seed (500)
    library(MASS)
    require(Rmixmod)
    require(ManlyMix)
     
    data(finance)
    data <- finance
     
    data$Health <- as.numeric(as.factor(data$Health))
    #data$Year <- as.numeric(as.factor(data$Year))
    data$Year <- NULL
     
    #apply(data,2,function(x) sum(is.na(x)))
     
    index <- sample(1:nrow(data),round(0.75*nrow(data)))
    train <- data[index,]
    test <- data[-index,]
     
    lm.fit <- glm(Health~., data=train)
     
    summary(lm.fit) # Tableau du modèle
    pr.lm <- predict(lm.fit,test)
    MSE.lm <- sum((pr.lm - test$Health)^2)/nrow(test)
     
    # Préparation Données NN 
    maxs <- apply(data, 2, max)
    mins <- apply(data, 2, min)
    scaled <- as.data.frame(scale(data, center = mins, scale = maxs - mins))
    train_ <- scaled[index,]
    test_ <- scaled[-index,]
     
    library(neuralnet)
     
    n <- names(train_)
    f <- as.formula(paste("Health ~", paste(n[!n %in% "Health"], collapse = " + ")))
     
    nn <- neuralnet(f,data=train_,hidden=c(3,1),linear.output=T)
    plot(nn)
     
    pr.nn <- compute(nn,test_[,2:5])
     
    pr.nn_ <- pr.nn$net.result*(max(data$Health)-min(data$Health))+min(data$Health)
     
    test.r <- (test_$Health)*(max(data$Health)-min(data$Health))+min(data$Health)
    MSE.nn <- sum((test.r - pr.nn_)^2)/nrow(test_)
     
    print(paste(MSE.lm,MSE.nn))
    par(mfrow=c(1,2))
    plot(test$Health,pr.nn_,col='red',main='Real vs predicted NN',pch=18,cex=0.7)
    abline(0,1,lwd=2)
    legend('bottomright',legend='NN',pch=18,col='red', bty='n')
    plot(test$Health,pr.lm,col='blue',main='Real vs predicted lm',pch=18, cex=0.7)
    abline(0,1,lwd=2)
    legend('bottomright',legend='LM',pch=18,col='blue', bty='n', cex=.95)
    plot(test$Health,pr.nn_,col='red',main='Real vs predicted NN',pch=18,cex=0.7)
    points(test$Health,pr.lm,col='blue',pch=18,cex=0.7)
    abline(0,1,lwd=2)
    legend('bottomright',legend=c('NN','LM'),pch=18,col=c('red','blue'))
     
    library(boot)
    set.seed(200)
    lm.fit <- glm(Health~.,data=data)
    cv.glm(data,lm.fit,K=20)$delta[1]
    set.seed(450)
    cv.error <- NULL
    k <- 20
     
    library(plyr)
    pbar <- create_progress_bar('text')
    pbar$init(k)
    for(i in 1:k){
      index <- sample(1:nrow(data),round(0.9*nrow(data)))
      train.cv <- scaled[index,]
      test.cv <- scaled[-index,]
      nn <- neuralnet(f,data=train.cv,hidden=c(3,1),linear.output=T)
      pr.nn <- compute(nn,test.cv[,2:5])
      pr.nn <- pr.nn$net.result*(max(data$Health)-min(data$Health))+min(data$Health)
      test.cv.r <- (test.cv$Health)*(max(data$Health)-min(data$Health))+min(data$Health)
      cv.error[i] <- sum((test.cv.r - pr.nn)^2)/nrow(test.cv)
      pbar$step()
    }
    mean(cv.error)
    cv.error
    boxplot(cv.error,xlab='MSE CV',col='cyan',
            border='blue',names='CV error (MSE)',
            main='CV error (MSE) for NN',horizontal=TRUE)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 14
    Par défaut
    J'ai du modifier mon code avec l'aide d'un ami qui m'a expliqué certaines choses. Je voudrais confirmer que la comparaison aurait du se faire avec une régression logistique et non pas avec une régression linéaire. Pour comparer les deux modèles, j'ai utilisé la courbe ROC et une matrice de confusion mais j'ai du mal à comprendre comment interpréter les résultats de la courbe et de la matrice et j'aurais voulu savoir si ces deux outils sont nécessaires et/ou complémentaires.

  7. #7
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Juste quelques infos en vrac :

    • Régression logistique : si la variable à expliquer est binaire
    • Régression linéaire : si la variable à expliquer est numérique / continue
    • Matrice de confusion : permet notamment d'évaluer le taux de bon classement d'un modèle (exactitude)


    Bonne continuation !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/01/2016, 18h23
  2. Réponses: 4
    Dernier message: 26/05/2008, 02h26
  3. SQLIO - Interprétation des résultats
    Par Ptit_Dje dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/04/2008, 09h54
  4. [Order by] classer des résultats sur des nombres
    Par vampiloup dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/01/2006, 14h58
  5. DBCC SQLPERF ( LOGSPACE ) Interprétation des résultats
    Par Labienus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2004, 15h50

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