Partage
  • Partager sur Facebook
  • Partager sur Twitter

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

    16 mars 2020 à 18:11:58

    De toute façon ce n'est pas très grave : ça veut dire que ton modèle n'a pas convergé avec certains hyperparamètres. Mais ces hyperparamètres auront de mauvais scores, donc il ne seront pas choisis par ta validation croisée.

    Ce serait gênant si tu avais ça sur tous les choix d'hyperparamètres. Ça se voit au nombre de warnings affichés.

    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2020 à 11:45:40

      Bonjour,

      Sur le TP "Entraînez-vous à classer automatiquement des feuilles d’arbres", je ne trouve pas les labels dans le fichier test.csv. J'ai donc splitté les données du fichier Dataset_feuilles_1.csv pour avoir une partie entrainement et une partie test.

      Est-ce correct?

      Merci d'avance,

      -
      Edité par Faduf 17 mars 2020 à 12:11:11

      • Partager sur Facebook
      • Partager sur Twitter
        17 mars 2020 à 16:29:02

        Bonjour,

        @Faduf : C'est normal que les labels ne soient pas présent dans le fichier test.

        Sur Kaggle, le principe c'est de construire son modèle à partir des données train. Puis de faire ses prédictions sur les données test. Ensuite il faut soumettre ces prédictions sur le site de Kaggle et on obtient son résultat et un classement dans le leaderboard.

         Pour ce faire vous devez créer un compte sur Kaggle. Vous pouvez soumettre via cette page : 

        https://www.kaggle.com/c/leaf-classification/submit

        Vous avez un exemple de fichier de submission (sample_submission.csv) sur cette page : https://www.kaggle.com/c/leaf-classification/data

        C'est vraiment dommage que l'auteur du cours ne donne pas ces infos...

        -
        Edité par Jeanval78 18 mars 2020 à 11:05:57

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2020 à 9:36:34

          @Faduf : oui, l'activité fait comme si on pouvait utiliser le fichier de test alors qu'on est obligés de faire un split.

          Tu as bien fait, c'est pareil pour tout le monde.

          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2020 à 18:34:09

            c'est bon c'est réglé, merci.

            -
            Edité par AliBENBIHI1 30 avril 2020 à 18:14:59

            • Partager sur Facebook
            • Partager sur Twitter
              1 mai 2020 à 13:51:49

              Bonjour,

              Ma préoccupation est comment effectuer une classification supervisée avec les images satellitaires?

              • Partager sur Facebook
              • Partager sur Twitter
                14 juin 2020 à 1:08:48

                J'ai trouvé cette vidéo du MIT qui complète magnifiquement le cours sur les SVM: https://www.youtube.com/watch?v=_PwhiWxHK8o. Enjoy :-)

                -
                Edité par Cyril_Baudrillart 17 juin 2020 à 17:17:09

                • Partager sur Facebook
                • Partager sur Twitter
                  24 juillet 2020 à 18:42:16

                  lvdesign a écrit:

                  bonjour,

                  Dans le tp 

                  TP - Entraînez une régression logistique et une SVM linéaire

                  j'ai cette erreur à cette étape: 

                  lr_gs.fit(X_train, y_train)

                  /Users/totoopt/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
                    "the number of iterations.", ConvergenceWarning)
                   merci pour un conseil


                  J'ai le même problème et j'ai beau augmenter le nombre d'itérations (jusqu'à 10 000), j'ai toujours ce message qui s'affiche de nombreuses fois.

                  Pourtant j'ai exactement le même code que dans la vidéo. Quelqu'un a-t-il trouvé comment régler cette erreur ? Merci :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 juillet 2020 à 12:21:03

                    N'oublie pas que tu fais une validation croisée : le modèle est entraîné autant de fois qu'il y a de combinaisons d'hyperparamètres à tester.

                    Le message signifie qu'une combinaison d'hyperparamètres ne permet pas de converger. Ça veut simplement dire que ces hyperparamètres sont trop mauvais pour permettre d'entraîner le modèle.
                    Du moment que l'une au moins des combinaisons d'hyperparamètres permet de converger, peu importe l'avertissement : ce que tu recherches, c'est seulement les meilleurs hyperparamètres ! Les mauvais n'auront pas d'incidence sur les bons.

                    Donc si le message n'apparaît qu'une fois, pas de panique. Tu as réussi.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 novembre 2020 à 14:12:38

                      Bonjour,

                      sachant que la régression linéaire minimise l'erreur quadratique moyenne, comment est-ce que les régressions ridge et lasso peuvent faire mieux ?

                      Merci

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 novembre 2020 à 17:17:13

                        En effet, ils ne font pas mieux en termes d'erreur quadratique.

                        Leur intérêt est surtout de limiter le poids des coefficients, ce qui permet :

                        - de se limiter à seulement quelques variables qui représentent bien l'ensemble de la variance (Ridge), ce qui est un gain important de mémoire et de temps de calcul puisque la plupart des variables auront un coefficient nul et ne seront donc pas utilisées ;

                        - d'éviter un surapprentissage par l'affectation d'un coefficient excessivement important à quelques variables au détriment des autres (LASSO). Cela évite que le modèle soit trop dépendant de certaines variables pas forcément représentatives de la variance.

                        Évidemment, il n'y a pas une des trois méthodes qui est meilleure que les autres. Ça dépend des données et du temps de calcul et de la marge d'erreur que tu t'autorises.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 mars 2021 à 16:02:16

                          Bonjour

                          Pour la question 3 du quiz partie 1, serait-ce possible d'avoir le détail du calcul matriciel ?

                          Je n'arrive pas à retrouver le même résultat après calcul du paramètre B.

                          Merci.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 avril 2021 à 17:41:17

                            message supprimé

                            -
                            Edité par AxelTurpin 1 juillet 2021 à 10:29:41

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 avril 2021 à 14:24:36

                              Zachee54 a écrit:

                              - de se limiter à seulement quelques variables qui représentent bien l'ensemble de la variance (Ridge), ce qui est un gain important de mémoire et de temps de calcul puisque la plupart des variables auront un coefficient nul et ne seront donc pas utilisées ;

                              - d'éviter un surapprentissage par l'affectation d'un coefficient excessivement important à quelques variables au détriment des autres (LASSO). Cela évite que le modèle soit trop dépendant de certaines variables pas forcément représentatives de la variance.

                              Bonjour @Zachee54, je crois que tu as confondu Ridge et Lasso. Ridge restreint "l'amplitude des poids." (je cite le cours), alors que Lasso "peut directement supprimer les variables et mettre leur poids à zéro".



                              • Partager sur Facebook
                              • Partager sur Twitter

                              Дорогу осилит идущий

                                23 avril 2021 à 16:25:57

                                Bonjour,

                                lorsque je lance le code du TP2 "Entraînez une régression logistique et une SVM linéaire" pour entrainer la régression logistique, j'ai un warning (comme tout le monde ici, j'ai l'impression) "

                                C:\ProgramData\Anaconda3\lib\site-packages\sklearn\svm\_base.py:976: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
                                  warnings.warn("Liblinear failed to converge, increase "

                                Ce warning se répète 13 fois sur les 10 itérations de la crosse-validation. En plus, les meilleurs paramètres qui en résultent sont
                                {'C': 100.0, 'penalty': 'l1'} alors que dans le cours le résultat est le suivant : {'penalty': 'l2', 'C': 1000.0}. J'ai supposé que cela est dû au pas défini pour la recherche de meilleur C. Dans la vidéo, c'est : np.logspace(-3, 3, 10), alors que dans le text de tp c'est np.logspace(-3, 3, 7). J'ai aussi testé avec 10 est le résultat est

                                {'C': 215.44346900318823, 'penalty': 'l1'}

                                Les résultats, sont-ils complètement aléatoires ?

                                -
                                Edité par IrinaMaslowski 23 avril 2021 à 16:27:27

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Дорогу осилит идущий

                                  9 juin 2021 à 13:56:02

                                  Oui, les résultats sont aléatoires puisque train_test_split et GridSearchCV utilisent tous les deux de l'aléatoire.

                                  Cela dit, 13 avertissements ça fait quand même beaucoup...

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 juin 2021 à 20:10:55

                                    Bonjour, 

                                    Je vois que je ne suis pas le seul à avoir eu quelques problèmes sur le TP "Entraînez une régression logistique et une SVM linéaire". Je ne reviens pas donc sur la courbe roc finale. Je propose juste une solution qui m'a paru bonne pour récupérer un vecteur de probabilité (y_proba) de sorte que la courbe ait plus de sens en utilisant  le module CalibratedClassifierCV (importer depuis sklearn.calibration) en complément de LinearSVC.

                                    c'est expliqué ici: https://stackoverflow.com/questions/26478000/converting-linearsvcs-decision-function-to-probabilities-scikit-learn-python

                                    et ça m'a permis de sortir une courbe ROC comparable à celles des régressions logistiques précédentes.

                                    Je ne sais pas si c'est une bonne procédure dans notre cas. De ce que j'ai compris le "Platt scaling" utilise une régression logistique comme postprocessing de nos résultats de classification par svm linéaire. Si ça peut aider quelqu'un.

                                    -
                                    Edité par adneneguessoum1 22 juin 2021 à 13:14:41

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 juin 2021 à 15:08:15

                                      message supprimé

                                      -
                                      Edité par AxelTurpin 1 juillet 2021 à 10:29:59

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        1 juillet 2021 à 10:35:22

                                        Bonjour, voici une methode plus simple: Au rang 2, il faut réduire les variables, cela permet de toujours avoir une solution sauf si Cov(X1, X2) =1 ou-1.  Pour les rangs supérieurs il n'y a pas toujours de solution mais presque. Sinon on peut étidier les Cov(Xi²,Y) plutot que les Cov(Xi,Y) i allant de 1 a n voire avec Xi au cube ou... On fini toujours par trouver une solution.

                                        -
                                        Edité par AxelTurpin 6 juillet 2021 à 14:22:50

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          2 juillet 2021 à 15:43:17

                                          CyrilBibi a écrit:

                                          J'ai trouvé cette vidéo du MIT qui complète magnifiquement le cours sur les SVM: https://www.youtube.com/watch?v=_PwhiWxHK8o. Enjoy :-)

                                          -
                                          Edité par CyrilBibi 17 juin 2020 à 17:17:09


                                          Merci @ CyrilBibi! Ce cours est top! Il explique très clairement le concept et les calculs.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 juillet 2021 à 10:30:46

                                            CyrilBibi a écrit:

                                            J'ai trouvé cette vidéo du MIT qui complète magnifiquement le cours sur les SVM: https://www.youtube.com/watch?v=_PwhiWxHK8o. Enjoy :-)

                                            -
                                            Edité par CyrilBibi 17 juin 2020 à 17:17:09


                                            Merci beaucoup pour ce cours.
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Apprendre, apprendre et apprendre encore

                                              29 juillet 2021 à 14:03:07

                                              toujours pas de correction pour l'éval, des incohérence entre les vidéos et le texte du cours, pas de mise a jour par rapport au lib donc du code qui génère masse de warning. Tout a refaire sur ce cours totalement indigeste.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 septembre 2022 à 19:27:32

                                                Bonjour,

                                                Ce cours est très formel, ce que je rejette pas, bien au contraire, car c'est ce qui permet une compréhension en profondeur des principes sous-jacents des algorithmes essentiels à maîtriser.

                                                Les explications contiennent l'implicite constant de la maîtrise de notions formelles pointues, comme la convexité, les formes quadratiques, etc.

                                                Or, aucun renvoi vers une sélection de ressources permettant de s'actualiser (cela fait partie du travail d'ingénierie pédagogique).

                                                J'avoue être déçu de la qualité pédagogique de ce cours, et me reporter de plus en plus sur des ressources externes à OC.

                                                A bons entendeurs.
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Dr Pepper

                                                  30 septembre 2022 à 14:50:23

                                                  Bonjour

                                                  une question simple :

                                                  Est-ce qu'il est possible de télécharger le notebook des exemples de classification ?

                                                  C'est difficile à suivre sinon sur les vidéos.

                                                  Merci d'avance

                                                  Jean-Christophe

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    31 octobre 2022 à 9:51:23

                                                    bonjour comment telecharger notebok jupiter

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 novembre 2022 à 11:48:59

                                                      Bonjour, il faut installer Anaconda. Les notebooks jupiter viennent avec. Sinon, vous pouvez utiliser les notebooks en ligne, tels que Kaggle ou Google Colab.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Дорогу осилит идущий

                                                        25 février 2023 à 11:57:41

                                                        Bonjour, 

                                                        Dans le TP "Comparez le comportement du lasso et de la régression Ridge", j'obtiens des  Mean Squared Error (MSE) pour les Lasso et Ridge qui sont toujours moins bon que ceux de la régression linéaire simple.

                                                        Cela me pose deux questions :

                                                        a) Dans un commentaire plus haut sur ce fil, quelqu'un a fait la remarque que la régression linéaire simple optimisait déjà la MSE, donc comment est-ce possible que les Lasso et Ridge présentent des MSE inférieures (comme montré dans les graphiques "erreurs en fonction de alpha" dans le cours).

                                                        b) À quoi servent ces régressions dans ce cas ? Ou, pour être plus précis, s'ils ne réduisent pas l'erreur de prédiction, comment quantifier l'intérêt des régressions Lasso et Ridge ?

                                                        Merci d'avance !

                                                        -
                                                        Edité par DavianThule95 25 février 2023 à 11:58:31

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Je dis ça, je dis rien, mais j'le dis quand même.
                                                          1 mars 2023 à 10:55:27

                                                          Bonjour DavianThule95,

                                                          Ridge a pour effet d'uniformiser les coefficients, en prenant en compte la norme euclidienne du vecteur \(\beta\) (en fait le carré de sa norme, \(\left|\left|\beta\right|\right|^{2}\)). Si un coefficient \(\beta_{i}\) devient très grand par rapport aux autres, \(\left|\left|\beta\right|\right|^{2}\) évolue en \(O(\beta_{i}^{2})\) et pénalise fortement le modèle. Par conséquent, Ridge empêche qu'un ou deux coefficients ne prennent le pas sur tous les autres.

                                                          De ce fait, Ridge limite les effets de sur-apprentissage. Il produit des modèles moins précis mais qui, en théorie, s'adapteront mieux à de nouvelles données.

                                                          Le lasso sert à éliminer complètement les variables les moins représentatives. Il utilise la norme 1 du vecteur \(\beta\), c'est-à-dire la somme des valeurs absolues des coefficients \(\beta_{i}\). Cela pousse le modèle à affecter un maximum de valeurs \(0\) dans le vecteur \(\beta\). Encore une fois, c'est moins précis que la régression linéaire mais c'est un avantage pour éviter le fléau de la dimension.

                                                          Le fléau de la dimension vient du fait que les variables inutiles polluent les calculs de distance entre les vecteurs, et polluent les résultats. Prends l'exemple d'un problème à 1 dimension, c'est-à-dire des vecteurs qui contiennent une seule valeur (une abscisse). \(A=(0.2)\) et \(B=(-0.1)\) sont des points très proches l'un de l'autre : \(||\vec{AB}||=0,3\). Mais si tu introduis une deuxième variable (une ordonnée) et que tes points ont alors comme coordonnées \(A=\begin{pmatrix}0.2 \\ -0.8\end{pmatrix}\) et \(B=\begin{pmatrix}-0.1 \\ 0.9\end{pmatrix}\), tout à coup tes points A et B sont beaucoup plus éloignés : \(||\vec{AB}||=1,72\). Si la dimension des ordonnées ne sert à rien pour ton modèle mais que tu la gardes dans tes calculs, tu passes à côté du fait que A et B sont très proches, si on les regarde dans la dimension des abscisses. Dans un cas comme celui-ci, le lasso pourrait choisir des coefficients \(\beta=\begin{pmatrix}1 \\ 0\end{pmatrix}\), ce qui revient à projeter les points sur l'axe des abscisses et à travailler seulement avec la dimension la plus pertinente pour ton modèle.

                                                          Visuellement, je me représente la régression linéaire à deux dimensions comme un problème dans un plan : trouver une droite passant par l'origine et passant le plus près possible d'un nuage de points.

                                                          Ridge consisterait à se donner un peu de souplesse en acceptant que la droite ne passe pas forcément par l'origine, mais qu'elle touche un disque dont le centre est l'origine. Il suffit qu'elle soit tangente au cercle. Le point de contact entre la droite et le cercle a des coordonnées dont la norme euclidienne correspond au rayon du cercle. Le rayon du cercle est une métaphore du \(\lambda\) de Ridge : s'il est très élevé, les droites tangentes qu'on va trouver vont avoir tendance à se rapprocher excessivement de la verticale ou de l'horizontale, et vont de moins en moins correspondre au nuage de points ; algébriquement, cela correspond au fait que Ridge uniformise excessivement tous les coefficients si \(\lambda\rightarrow +\infty\). Si au contraire \(\lambda=0\), le cercle est réduit au point origine et cela nous ramène à la régression linéaire.

                                                          Le lasso consisterait, dans le même ordre d'idée, à trouver une droite touchant le carré (la forme géométrique) formé par les points \(x\) tels que \(||x||_{1}<\lambda\). C'est un carré "penché", dont les sommets sont les points \((0,\lambda)\), \((\lambda,0)\), \((0,-\lambda)\),\((-\lambda,0)\). S'il suffit de trouver une droite qui touche ce carré, alors on va souvent trouver une droite qui touche l'un des sommets : si tu "tords" la droite de la régression linéaire pour lui faire toucher ce carré, intuitivement elle touchera en premier un des sommets. Sur ce sommet, une des deux coordonnées est nulle. C'est un peu le même phénomène qui se passe avec les coefficients \(\beta_{i}\).

                                                          Ce sont des métaphores géométriques qui ont leurs limites, mais cela m'a aidé à intégrer ces notions.

                                                          Conclusion :

                                                          a) C'est normal que ce soit moins bien que la régression linéaire sur le papier, puisque la régression linéaire est la solution parfaite.

                                                          b) Tu ne peux pas "quantifier" l'intérêt que tu as à utiliser Ridge ou le lasso. En fait, le talent du data scientist est de savoir lequel des trois modèles résistera le mieux à l'usage qui en sera fait : les données seront-elles très différentes (risque de surapprentissage) ? Y a-t-il trop de variables (fléau de la dimension) ? etc.

                                                          -
                                                          Edité par Zachee54 1 mars 2023 à 11:30:15

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            1 mars 2023 à 15:19:05

                                                            Merci beaucoup pour cette réponse instructive !

                                                            Si j'ai bien compris, par construction la régression linéaire minimise la MSE sur le jeu d'entraînement, donc c'est normal que, sur le jeu d'entraînement, les modèles Ridge et Lasso aient une MSE plus grande (i.e moins bonne). Cependant, le pari fait en utilisant les modèles Ridge et Lasso, c'est que la MSE sur le jeu de test soit meilleure pour un Lasso ou un Ridge que pour la régression linéaire. Autrement dit, les modèles Ridge et Lasso sont censés être moins précis mais plus généralisables. C'est bien ça ?

                                                            -
                                                            Edité par DavianThule95 1 mars 2023 à 15:26:50

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Je dis ça, je dis rien, mais j'le dis quand même.

                                                            [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é.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown