Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Entraînez un modèle prédictif linéaire

    Team OC 2 août 2018 à 10:55:26

    Bonjour, et bienvenue dans la discussion dédiée au cours Entraînez un modèle prédictif linéaire

    N'hésitez pas à poser vos questions ici et à échanger les uns avec les autres !

    Si vous avez une question concernant le fonctionnement du cours (accès aux exercices, envoi des exercices, inscription au cours…), contactez directement OpenClassrooms à hello@openclassrooms.com

    Bon courage et à bientôt !

    Luc.

    • Partager sur Facebook
    • Partager sur Twitter
      3 août 2018 à 3:55:09

      Chrys38 a écrit:

      Le fait que lors de la description de la régression Ridge et lasso, il n'y est pas de distinction, entre Beta pré et poste régularisation.

      Il faudrait signifiais que les coefficients Beta poste Régu sont des coefficients dit : biaisé. 

      De plus l'explication mathématique à propos de la relation qui lie Alpha à Beta biaisé, n'est pas forcément  clair avec les matrice.

      Sans cela, il demeurait, dans mon cas, une impossibilité de comprendre pourquoi quand Alpha est grand faisait tendre vers 0, et quand Alpha tend vers 0 on se retrouve dans la solution de la régression linéaire. 

      J'ai trouvé à cette adresse , une relation entre Alpha , Beta non biaisé, et Beta biaisé: 

      https://onlinecourses.science.psu.edu/stat857/node/155/

      ce qui rend les chose beaucoup plus clair : 

      βridge=(n/n+λ)β.

      par contre je désirerais avoir un précision supplémentairement, si on prend un Alpha grand , en quoi cela rend négligeable le terme de la mean squad error , puisque même si Beta biaisé négligeable, ça n'influence pas les yi dans l'expression :

      (yixijβj)²

      -
      Edité par Chrys38 il y a moins de 5s



      -
      Edité par Chrys38 10 août 2018 à 12:36:13

      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2019 à 10:46:26

        J'ai beaucoup de questions sur le quiz de ce cours.

        Question 3 (calculer un bêta optimal à partir de 4 points donnés) :

        1° pour moi, sauf précision contraire, un "vecteur de paramètreS" optimal a deux dimensions : l'ordonnée à l'origine et le coefficient directeur de la droite de régression. Sauf si on suppose que les données sont centrées, ce qui n'est pas dit ici. Mais je suppose qu'il faut le comprendre comme une donnée implicite puisque le QCM ne propose que des réponses à 1 dimension ?

        2° Que je fasse le calcul à la main ou que je le fasse faire à scikit-learn ou à Excel, je trouve toujours 26. Si on ne considère pas a priori que les données sont centrées, je trouve 24. Or les réponses proposées sont 52, 13, 29 et 32. La correction ne m'aide pas beaucoup. Est-ce une erreur ou est-ce que j'ai mal compris ?

        Question 5 : Comment choisir au mieux l'hyperparamètre lambda (une seule réponse possible) ?
        Le cours donne un principe général, et le TP propose une autre méthode à titre pédagogique. Mais les deux approches permettent de choisir lambda "au mieux". Dès lors, comment choisir une réponse plutôt qu'une autre ?
        La question serait plutôt de savoir quelle est la méthode "usuelle".

        Question 9 : Le lasso est-il plus stable ou moins stable que Ridge ?
        Je me demande : plus stable ou moins stable par rapport à quoi ?
        - Le lasso est plus stable que Ridge par rapport aux données d'entraînement dans le sens où si elles changent un peu, les coefficients changent moins souvent (puisqu'on ignore certaines features).
        - Il est aussi plus stable que Ridge par rapport aux données de test dans le sens où si elles changent un peu, les prédictions changent aussi moins souvent (toujours pour la même raison).
        - Il est moins stable par rapport à l'hyperparamètre dans le sens où si l'hyperparamètre change un peu, certaines features peuvent disparaître au profit d'autres, et changer considérablement le modèle.
        Il ne m'a pas paru évident de savoir laquelle de ces 3 interprétations de la question était la bonne.

        -
        Edité par Zachee54 15 mai 2019 à 10:57:16

        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2019 à 10:16:58

          Dans le TP de la partie 2 ("Entraînez une régression logistique et une SVM linéaire"), je bute sur la courbe ROC de LinearSVC.

          1°) Dans la vidéo, on utilise

          y_pred = gsvm.predict(X_test)
          fpr, tpr, _ = roc_curve(y_test, y_pred)

          Bien que la vidéo utilise "y_prob" comme nom de variable, il s'agit bien de prédictions {0;1} et non d'une probabilité dans [0;1].
          Partant de ça, les valeurs transmises à roc_curve n'ont qu'un seul seuil. Il est donc normal que la courbe ROC ressemble à deux segments de droite.
          Mais du coup, la notion d'aire sous la courbe n'a plus de sens : à supposer que la régression logistique serait globalement moins performante (càd plus éloignée du coin supérieur gauche), comme on a plus de seuils on a de toute façon une courbe ROC plus arrondie que les deux segments de droite de LinearSVC, et donc on peut avoir une aire plus grande. Dans ces conditions, ce n'est pas du tout une bonne idée de mesurer la pertinence du modèle avec AUC !

          2°) Dans le code du TP (hors vidéo), on calcule cette fois la courbe ROC avec une variable y_prob qui n'a pas été calculée pour LinearSVC. Et on obtient une courbe ROC arrondie, qui n'a rien à voir avec celle de la vidéo mais qui ressemble furieusement à celle de la régression logistique après optimisation des hyperparamètres...
          De deux choses l'une :
          - ou bien le calcul de y_prob a été oublié dans le code du TP, et la courbe ROC présentée comme étant celle de LinearSVC est en fait celle de LinearRegression optimisé ;
          - ou bien y_prob a été calculé mais le code n'est pas retranscrit dans la page. Et dans ce cas, on n'a pas utilisé la fonction predict comme dans la vidéo puisqu'on a une courbe très différente.

          Mon avis (mais j'aimerais qu'on me le confirme) est que la courbe ROC n'a de sens qu'avec des probabilités dans [0;1], et non avec des prédictions dans {0;1}. Et pour obtenir des probabilités avec LinearSVC, il faut utiliser la fonction de décision non évoquée dans le cours :

          y_prob = gs_svm.decision_function(X_test)

          Il y a aussi plusieurs erreurs dans le code du TP, que je signale pour tout le monde :
          - "data" au lieu de "raw_data",
          - on définit à deux reprises y_pred pour LogisticRegression alors qu'on ne s'en sert pas,
          - import inutile de cross_val_score.

          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2019 à 16:59:42

            On va dire que je fais mon difficile, mais à nouveau je ne comprends pas l'activité de fin de cours sur la classification des feuilles d'arbres.
            En effet, le test set ne contient pas les étiquettes. Comment peut-on tester des différents modèles si on ne peut pas les comparer aux étiquettes réelles ??

            Ce dataset est extrait d'un défi Kaggle. Je comprends que s'agissant d'une compétition, les participants n'ont pas les réponses et le défi consiste justement à les deviner.
            J'ai l'impression que le défi Kaggle a été proposé en activité sur OpenClassrooms.com tel quel sans que l'auteur du cours ait réalisé qu'on avait besoin des réponses pour pouvoir s'auto-évaluer, et corriger les pairs.

            Il ne reste plus qu'à laisser tomber le test set d'origine et faire un train_test_split sur les données d'entraînement.

            Très franchement, ou bien je suis passé à côté de beaucoup de choses dans ce cours, ou bien il a été conçu à l'arrache et ce n'est vraiment pas sérieux. Si quelqu'un a des éclairages utiles suite à mes précédents posts, ça me serait très appréciable !

            • Partager sur Facebook
            • Partager sur Twitter
              29 mai 2019 à 16:21:21

              Il faut effectivement que tu entraînes ton modèle et sélectionne les paramètres sur le jeu de données d'entraînement uniquement, en splittant ce jeu en deux. Une fois que c'est terminé, tu pourras - tout à la fin - ré-entraîner ton modèle optimisé sur l'ensemble des données étiquetées et faire une prédiction des étiquettes des données de test (mais tu n'auras aucune façon de vérifier leur exactitude).

              • Partager sur Facebook
              • Partager sur Twitter

              [Cours] Entraînez un modèle prédictif linéaire

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown