Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Machine learning non supervisé

Explorez vos données avec des algorithmes non supervisés

    12 mai 2017 à 14:35:57

    Bienvenue dans la discussion dédiée au cours Explorez vos données avec des algorithmes non supervisés !

    Dans ce cours, vous allez apprendre à utiliser des algorithmes de réduction de dimension et de clustering pour mieux comprendre vos données et les représenter plus efficacement.

    N'hésitez pas à poser vos questions ici et à échanger les uns avec les autres ! Je ferai de mon mieux pour vous répondre régulièrement.

    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 !

    Chloé.

    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2017 à 14:52:50

      Bonjour,

      J'ai plusieurs questions sur le TP. En fait, je voudrais savoir ce que vous voulez dire par standardiser les données. La fonction  std_scale.transform(X) fait quoi exactement? j'ai calculé les données centrées de X mais je ne trouve pas les même résultats que ceux dans X_scaled. Je crois que la fonction ne fait pas que centrer les variables.

      Je voudrais aussi que vous me confirmiez si j'ai bien compris ce que fait la fonction zip. Ce que j'ai compris c'est qu'elle retourne un tuple (x,y) qui contient les coordonnées des deux composantes principales selon la ième direction de l'espace initial et cela pour les 10 directions. Si j'ai mal compris, merci de me corriger.

      D'après la dernière courbe, les points représentant les épreuves de force( javeline, shot put, discus) et les épreuves d'endurance (400 m et 1500 m ) ont une valeur de PC2 qui reste entre 0.2 et 0.5. Je ne comprends pas pourquoi vous dites que la deuxième composante principale sépare les athlètes fort des autres. 

      Je vous remercie d'avance pour votre aide.

      Cordialement,

      WS.

      -
      Edité par WaelS 21 mai 2017 à 14:53:34

      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2017 à 11:48:36

        Bonjour,

        - std_scale.transform(X) centre les donnéeset les réduit, c'est-à-dire que non seulement elle leur donne une moyenne de zéro, mais aussi qu'elle leur donne un écart-type de 1. En pratique, X_scaled = (X - mu)/sigma où mu est la moyenne de X et sigma son écart-type.

        - pour zip, c'est tout à fait correct.

        - pour interpréter la PC2, n'oubliez pas qu'avoir une valeur élevée au 400m ou au 1500m signifie unemoins bonne performancedans ces épreuves où il faut aller vite et donc avoir le temps le plus bas possible. Ces athlètes sont donc moins endurants. Mon analyse pourrait être plus fine : il s'agit aussi d'athlètes bons au saut en hauteur, mais moins performants au saut en longueur ou au saut à la perche.

        J'espère que c'est plus clair !

        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2017 à 11:29:40

          Bonjour,

          J'ai un peu du mal à comprendre cette partie : "Pour comprendre pourquoi je dis que toutes les observations sont loin les unes des autres, on peut se placer en dimension p et regarder la proportion du volume d'un hypercube comprise à l'extérieur de l'hypersphère incrite dans cet hypercube."

          En quoi le fait que la proportion du volume tende vers 1 reflète t'il que toutes les données sont éloignées?
          Pour l'instant je comprend seulement que le volume d'une hypersphère de dimension élevée rempli celui d'un hypercube de même dimension

          Je vous remercie d'avance pour votre aide.

          Cordialement
          Yann

          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2017 à 23:25:15

            Bonjour,

            Je viens de commencer le cours (30%) et j'ai quelques remarques sur le contenu :

             * Partie 1: Comprenez pourquoi réduire la dimension de vos données
             - Je n'ai pas compris la partie:
            "Pour comprendre pourquoi je dis que toutes les observations sont loin les unes des autres, on peut se placer en dimension p et regarder la proportion du volume d'un hypercube comprise à l'extérieur de l'hypersphère incrite dans cet hypercube."
            Il faudrait éclairer ce qui est représenté par l'hypercube et l'hypersphère.
            Dans cette partie, j'aurais plutôt comparer la densité des n points en passant d'une dimension p a une dimension p+1 pour montrer qu'elle diminue rapidement (1/a pour le cas de la norme infinie / hypercube).

             * Partie 2: Calculez les composantes principales de vos données
            Dans les graphiques "scree plot" les axes ne correspondent pas au texte. Par exemple: le graphique ayant la légende "le pourcentage de variance expliqué par chacune des composantes principales. À partir de 6 composantes principales, ajouter une composante n'est pas très informatif." a un axe de 0.0 à 1.0, alors qu'on s’attend plutôt à des nombres entiers de 1 à p

            Petite typo dans le résumé: "aient uen variance" -> aient UNE variance

            * Partie 4: Cherchez les variables latentes qui expliquent vos données
            Il y a certaines formules qui ne s'affichent pas correctement par exemple " $W h$, est $0$" ou "$\Psi$"

            * Partie 2: Utilisez une ACP avec un noyau
            Je retirerai le mot "plus" de la phrase : "Si on reprend l’exemple plus du chapitre précédent des deux cercles imbriqués"
            Je pense qu'il manque la formule de projection là où se trouve le texte "Formule".
            Le lien identifié par "Je vous invite à suivre ce cours si vous êtes intéressés par le sujet." est mort. :(

            Cordialement,

            Eric

            • Partager sur Facebook
            • Partager sur Twitter
              21 juin 2017 à 15:40:59

              Salut EricBouteillon,

              "Partie 1: Comprenez pourquoi réduire la dimension de vos données
               - Je n'ai pas compris la partie:
              "Pour comprendre pourquoi je dis que toutes les observations sont loin les unes des autres, on peut se placer en dimension p et regarder la proportion du volume d'un hypercube comprise à l'extérieur de l'hypersphère incrite dans cet hypercube."
              Il faudrait éclairer ce qui est représenté par l'hypercube et l'hypersphère.
              Dans cette partie, j'aurais plutôt comparer la densité des n points en passant d'une dimension p a une dimension p+1 pour montrer qu'elle diminue rapidement (1/a pour le cas de la norme infinie / hypercube)."

              Je me permet de répondre ce que j'ai compris de cette partie étant donné que je me suis moi même posé la question.
              Pour répondre à ta question l'hypercube et l’hypersphère sont le même concept qu'en dimension 3 pour des dimensions plus élevées.

              Qu'entend tu par densité de points d'une dimension à l'autre, car la densité d'un point de dimension n qui passe en dimension n+1 est nulle au même titre que l'intégrale de la fonction (f(x)=k pour x=k avec k fixé et 0 sinon ) est nulle quelque soit ton intervalle d'intégration.

              Et pour répondre au final à la réelle question, je pense que ce que cazencott voulait dire c'est que plus la dimension (d) augmente plus le volume de l'hypersphère est négligeable devant celui de l'hypercube, ce qui montre intuitivement que si une sphère inscrite dans une cube donc qui instinctivement touche le cube a certains endroits se retrouvent de taille négligeable c'est que l'espace devient immense. Personnellement, je préfère travailler avec la diagonale de l'hypercube unité qui grandis en fonction de la dimension r*√(d)

              ps cazencott: typo incrite -> inscrite

              Cordialement

              • Partager sur Facebook
              • Partager sur Twitter
                2 juillet 2017 à 19:24:54

                Merci pour vos retours, que nous allons intégrer !
                • Partager sur Facebook
                • Partager sur Twitter
                  18 août 2017 à 12:18:31

                  Bonjour, le jeu de donnée decathlon.txt ne semble plus accessible sur le site de factominer? Pouvez vous mettre un autre lien svp

                  Autre soucis: le lien présent dans le chapitre 1 de la partie 2 pour un cours sur les kernels ne fonctionne plus:

                  https://openclassrooms.com/courses/4379436/parts/4379521/alex.smola.org/teaching/cmu2013-10-701/kernels.html

                  Pouvez vous réactualiser le lien ou alors indiquez que le cours a été supprimé?

                  Encore un autre soucis selon moi, il y a une bizarrerie avec la réponse 1 du quiz partie 2 mais pour ne pas dévoiler la réponse je ne peux pas l'écrire.

                  Merci de votre aide

                  -
                  Edité par JeromeG13 19 août 2017 à 10:55:52

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 août 2017 à 22:24:04

                    .

                    -
                    Edité par JeromeG13 19 août 2017 à 22:24:53

                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 août 2017 à 14:26:13

                      Je ne sais pas si c'est le problème soulevé par JeromeG13, mais sur le 2e questionnaire:

                      * dans le commentaire de correction de la 1e question, il y a un "non linéaire" qui devrait être remplacé par "linéaire".

                      * dans le commentaire de correction de la 4e question, "on a pas besoin" devrait s'écrire "on n'a pas besoin" :)

                      J'ai pareil un commentaire à faire sur les 3e et 4e questions, mais du coup pas ici :) MP possible ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 novembre 2017 à 19:37:15

                        Bonjour,
                        Est-il nécessaire de "scaler" les données mnist qui nous sont données, sachant qu'elles sont homogènes ?
                        Est-ce une erreur de ne pas le faire ?
                        Merci.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 mars 2018 à 19:11:31

                          Bonjour,

                          sur la page de cours ici : https://openclassrooms.com/courses/explorez-vos-donnees-avec-des-algorithmes-non-supervises/partitionnez-vos-donnees-avec-lalgorithme-du-k-means

                          on lit : "Nous avons établi dans les chapitres précédents que de minimiser la variance inter−clusterV=∑k1|Ck|∑x∈Ck||x−μk||2 permet de définir des clusters homogènes."

                          est-ce que ce ne serait pas plutôt la variance intra-cluster ? 

                          Merci.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Catalyseur d'innovation digitale pour des responsables opérationnels passionnés par leur métier.
                            5 avril 2018 à 9:05:19

                            Bonjour,

                            Je ne comprends pas certaines réponses au QUIZZ 2 du cours "Explorez vos données avec des algorithmes non supervisés".

                            Je vous serais reconnaissant de m'expliquer les réponses qui m'apparaissent confuses.

                            En effet :

                            Question 1 : Pour effectuer une réduction dimensionnelle non-linéaire, on peut utiliser :

                            • Si je coche l'algorithme MDS, la réponse est fausse.

                            Pourtant, la réponse à cette question est formulée comme suit : "Le MDS métrique est un algorithme de réduction dimensionnelle non-linéaire."
                            C'est, de plus, ce que nous apprend le cours. C'est une méthode globale.

                            Question 3 :Effectuer une réduction dimensionnelle non-linéaire permet de :

                            • La réponse "Traiter des problème non-linéaires comme des problèmes linéaires" est fausse.

                            Pourtant, dans le cours "Découvrez une variété qui conserve la structure globale",
                            en utilisant l'extension isomap de l'algorithme MDS, pour calculer une géodésique,  localement, une approximation linéaire est appliquée.

                            Ce qui est illustré par le propos de l'auteur :    "Par exemple pour cette distance, si je m’intéresse à une ville proche de Paris,
                             je pourrais considérer une ligne droite qui les sépare, donc une distance euclidienne."

                            Ce que semble conforter le cours sur l'ACP avec noyau. La vidéo à 2mn 44s montre comment, en substituant un produit scalaire dans l'espace de redescription par une fonction Kernel(x,y), il devient possible de résoudre le pb dans l'espace de redescription par des méthodes linéaires. Le pb devient "Linéairement résoluble" selon l'auteur.
                            • Toujours pour cette question, une des bonnes réponses est de "Trouver des nouvelles features plus représentatives des données"

                            Comment est il possible qu'une réduction donne naissance à de nouvelles features? Pouvez vous m'expliquer comment apparaissent ces nouvelles features suite à une réduction?



                            Question 4 : "Le kernel trick est une méthode permettant de..."

                            • la réponse "d'effectuer rapidement une réduction dimensionnelle pour l'algorithme t-SNE" est fausse.

                            Pourtant, dans le cours "Découvrez une variété qui favorise la structure locale" il est mentionné : "Une autre solution est d’initialiser l’algorithme t-SNE par une PCA avant de le lancer, ce qui permet ce qui permet de conserver de base un peu plus de la structure globale (avec l'optioninit=’pca’)"

                            Une PCA n'est elle pas, une réduction de dimension? L'algorithme t-SNE, n'utilise t-il pas, même à l'étape dinitialisation, le PCA?



                            • La réponse "de revenir facilement dans l'espace de départ" est fausse.

                            Pourtant dans la vidéeo du cours "Utiliser une ACP avec noyau", à 3mn01, un schéma explicite montre comment il est possible de revenir de l'espace de redescription à l'espace originel après avoir utilisé le Kernel trick.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 avril 2018 à 16:27:31

                              • Le MDS métrique est une méthode linéaire, cf https://openclassrooms.com/courses/explorez-vos-donnees-avec-des-algorithmes-non-supervises/tp-representez-des-images-de-chiffres-manuscrits-en-deux-dimensions#/id/r-4445064 
                              • Même si certaines méthodes de réduction de dimension non-linéaires permettent d'utiliser des algorithmes linéaires sur une version transformée des données, ce n'est pas toujours le cas
                              • On différencie ici les méthodes de sélection de variables de celles qui combinent les variables pour en créer de nouvelles. Prenez simplement le cas d'une ACP (linéaire ou non) : chaque composante principale est une combinaison linéaire des features. Si vous utilisez les 5 premières composantes principales pour représenter vos données, ce sont de nouvelles features : aucune d'entre elles ne vous a été donnée initialement. Si vous aviez simplement sélectionné les 5 variables les + corrélées à l'étiquette, vous n'auriez pas créé de nouvelles features.
                              • Je ne vois pas bien le rapport que vous supposez entre « initialiser t-SNE par une PCA » et le kernel trick : ce sont 2 choses entièrement différentes
                              • Dans la vidéo que vous mentionnez, Yannis explique que l'on peut mettre en œuvre l'algorithme à noyau directement sur l'espace initial ; mais on ne peut pas nécessairement tout expliciter dans l'espace initial. Dans le cas spécifique de l'ACP, on peut facilement calculer la projection des données sur les composantes calculées par kernel PCA (X_pca dans l'exemple de code qui suit), mais on ne peut par exemple pas exprimer explicitement ces composantes dans l'espace initial.

                              -
                              Edité par cazencott 9 avril 2018 à 16:28:14

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juillet 2018 à 17:22:28

                                Bonjour,

                                Je pense, peut-être que je me trompe, qu'il y a une petite erreur dans la partie 3 concernant le clustering hiérarchique lorsque vous mentionnez la méthode de lien de Ward. Vous dîtes qu'il s'agit de minimiser la variance inter-cluster alors qu'il s'agirait plutôt de minimiser la variance intra-cluster (ou de maximiser la variance inter-cluster d'après Huyghens), non ?

                                D'autant plus qu'il me semble que la coquille se répète car vous définissez juste avant, selon moi, la variance intra-cluster et non la variance inter-cluster.

                                Est-ce que je me trompe ?

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 août 2018 à 6:51:06

                                  N'ayant pas reçu de réponse en privé je reposte ici ma question :

                                  Chrys38 a écrit:

                                  http://exercices.openclassrooms.com/assessment/636?login=556815&tk=00336910f37a7a5fe441cbf749b9d07d&sbd=2016-02-01&sbdtk=2466d6bae51e373d89ac8e3f74213199

                                  Bonjour, 
                                  Avant de vous envoyer l'exercice final (vu qu'on ne peut le présenter qu'une seule fois)

                                  J'aurais un petite question car les données que j'obtiens semble aberrante autant au niveau du clustering avec k-means que du t-sne : 
                                  Voilà ce que j'obtiens : 

                                  Une bien belle image ;)
                                  Donc vu que les résultats me paraissaient faux, j'ai essayé avec une autre bibliothèque  de chiffres écris à la main mais, avec des image de 64 pixel contre 784 pour MNIST: c'est la bibliothèque digits, et voilà ce que j'obtiens avec la même méthode :

                                  digits = datasets.load_digits(n_class=10)

                                   Une bien belle image ;)

                                  ce qui me donne un résultat bien moins aberrant avec un nombre de données quasi équivalent .
                                  C'est pour cela que je me demande si c'est ma méthode qui est mauvaise ou c'est bien le résultat escompté!
                                  Merci d'avance !
                                   

                                  -
                                  Edité par Chrys38 1 août 2018 à 6:53:13

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 août 2018 à 12:00:30

                                    Bonjour

                                    Je rencontre un problème concernant l'activité finale du cours.

                                    Je comptait partir sur un clustering Kmeans... le problème est que je ne sais pas écrire le script en python (je sais écrire des scripts simples, de type roulette du TP ZCasino du cours apprendre à programmer en python, mais je n'ai jamais vu de scripts complets permettant de faire du clustering et autre).

                                    Par exemple, dans le cadre du TP ACP, je suppose qu'il fallait assembler les différents bouts de scripts ? (j'ai préféré contourner la difficulté, et utiliser Unscrambler X).

                                    Note : je dispose d'un rapsberry pour exécuter les scripts python (Windows en est incapable).

                                    Cordialement

                                    RCh

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      25 septembre 2018 à 10:20:04

                                      Bonjour,

                                      Merci pour ce cours très instructif.

                                      J'aimerais savoir à quel point toutes ces méthodes de réduction dimensionnelle et de clustering sont applicables avec l'utilisation de variable non-continues et/ou non-ordonnées ?

                                      Merci,

                                      Bien à vous,

                                      Kévin F.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 mai 2019 à 15:24:53

                                        Est-ce que quelqu'un a compris la question 7 du premier quiz ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          3 juin 2019 à 18:41:26

                                          Sk. a écrit:

                                          Est-ce que quelqu'un a compris la question 7 du premier quiz ?

                                          Franchement ? Non.

                                          Je trouve les questions 6 et 7 de ce premier quiz difficiles. En effet, elles portent sur un point qui ne m'a pas semblé abordé dans le cours : les cas d'utilisation des méthodes de réduction dimensionnelle. Peut-être serait-il possible d'approfondir cela : pourquoi utiliser une méthode plutôt qu'une autre ?

                                          -
                                          Edité par Christophe Lebrun du Puytison 3 juin 2019 à 19:33:09

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 juin 2019 à 20:44:18

                                            Bonjour,

                                            Comment utiliser l'algorithme DBSCAN pour une utilisation en ligne?

                                            Est - il exploitable pour des données on line?

                                            Quel avantage de DBSCAN par rapport à l'algorithme OPTICS?

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              4 juin 2019 à 16:17:16

                                              Bonjour

                                              Serait-il possible de mettre dans le texte du chapitre 3.4 (algorithme k-means) le code python utilisé dans la vidéo ?

                                              Merci d'avance et bonne journée.

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              [Cours] Machine learning non supervisé

                                              × 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