Jed et moi sommes là. Nous allons parler de la suspension d'un VTT et des outils géniaux que nous avons découverts dans JMP. Ils nous ont permis de mieux comprendre la corrélation entre la suspension et les avis que l'on trouve sur Internet. Cette présentation est née du Discovery Summit de l'année dernière. Jed et moi nous sommes retrouvés et je voulais vraiment savoir : « Qu'est-ce que Functional Data Explorer ? Comment l'utiliser ? Et quels sont ses avantages ? » Jed, qui me connaissait un peu, a commencé à parler de VTT. C'était un sujet qui m'a tout de suite passionné. Ça a tout de suite donné naissance à cette présentation.
Quelques précisions concernant notre entreprise et cette présentation : nous ne sommes affiliés à aucune marque de vélos et nous ne sommes en aucun cas des experts du secteur. Nous avons consulté des tests publiés sur Bike Radar et analysé leur méthodologie d'évaluation. Nous avons ensuite utilisé le logiciel Linkage, disponible en ligne, pour extraire des courbes de suspension.
Cette présentation ne vous aidera pas à choisir votre prochain vélo. Ce n'est pas notre objectif. Nous souhaitons plutôt vous présenter quelques-uns des outils performants et innovants de JMP permettant d'interpréter des données parfois difficiles à appréhender autrement.
Avant de commencer, parlons un peu des VTT et de leur fonctionnement. Un VTT est généralement équipé d'une suspension avant et d'une suspension arrière. La suspension avant est très simple : elle se déplace verticalement le long de la fourche. La suspension arrière est beaucoup plus complexe. La roue arrière se déplace verticalement, et un système de biellettes relie ce mouvement à un amortisseur situé au centre du cadre. Ce système de biellettes peut présenter différentes caractéristiques ; nous allons examiner les cinq modèles que nous avons sélectionnés.
Mais le plus facile à comprendre est sans doute le rapport de levier. Si la roue se déplace d'un millimètre, de combien l'amortisseur se comprime-t-il ? Se comprime-t-il également d'un millimètre ? Dans ce cas, le rapport de levier est de un. Si l'amortisseur se comprime beaucoup moins, le rapport de levier sera plus élevé, et cette valeur varie tout au long du débattement de la roue. À mesure que la roue se déplace, cette valeur change, et l'on obtient ainsi une courbe, ou des données fonctionnelles, qui définissent la suspension du vélo.
Nous avons identifié cinq de ces courbes. La première concerne l'anti-cabrage. Cela concerne le comportement du vélo lors de l'accélération. Lorsque vous pédalez, le vélo se cabre-t-il, s'enfonce-t-il dans son débattement ou reste-t-il relativement horizontal ? L'anti-cabrage est lié à la façon dont la suspension réagit à cette force d'accélération.
L'anti-cabrage est une autre de ces propriétés qui détermine, par exemple, lors du freinage, si la moto se cabre ou si sa suspension se comprime au niveau du guidon. L'anti-cabrage est également ajusté par les concepteurs de motos pour caractériser le comportement de la machine ou améliorer ses performances.
Nous avons brièvement abordé la notion de ratio de levier. Il s'agit de la compression de l'amortisseur lorsque la roue se déplace. Ce qui est particulièrement intéressant avec le ratio de levier, et nous y reviendrons plus en détail vers la fin de la présentation, c'est qu'il est optimisé pour chaque amortisseur. Sur les vélos, on trouve des suspensions pneumatiques et des suspensions à ressorts hélicoïdaux, et selon le type de suspension utilisé, les courbes de ratio de levier seront différentes. L'important est que le ratio de levier soit optimisé, mais que ce réglage ne soit pas indépendant du type d'amortisseur utilisé ; il dépend aussi fortement de ce dernier.
La trajectoire de l'axe est un autre exemple. Lorsque la roue monte, recule-t-elle beaucoup, effectue-t-elle un mouvement vertical, ou avance-t-elle légèrement ? Sur ce graphique, l'axe Y représente la distance parcourue par la roue et l'axe X sa position avant-arrière. La roue démarre à zéro. Sur ce graphique bleu, on observe un léger recul initial avant qu'elle n'avance. Imaginez que vous descendiez un sentier : si vous avancez, vous préférez que votre roue recule pour éviter un obstacle plutôt que d'avancer et de foncer dessus. La trajectoire de l'axe est un concept assez intuitif et son utilité pour un vélo est facile à comprendre.
Le dernier phénomène est le retour de pédale. Lorsque la roue tourne, il arrive que la distance entre les pédales et la roue augmente légèrement, ce qui provoque un recul des pédales vers l'arrière. Ce n'est généralement pas souhaitable et peut engendrer une sensation d'instabilité pendant que vous pédalez.
Voilà les courbes qui nous intéressent. Voilà l'espace qui nous intéresse, et nous pouvons tout obtenir grâce à Linkage. La question est maintenant : comment obtenir des avis ? Je suis revenu à l'époque d'avant JMP 18, mais je peux écrire un script Python. Je ne vais pas détailler son fonctionnement ici. Si vous avez des questions, n'hésitez pas à me contacter. Je me ferai un plaisir d'y répondre. En résumé, j'ai un script Python sur mon ordinateur que JMP va exécuter. Ce script va se connecter à Bike Radar, collecter de nombreux avis, puis générer des tableaux de données JMP que nous pourrons analyser.
Le premier élément est ce tableau récapitulatif. Il fournit de nombreuses métadonnées sur le test du vélo : le modèle, le type de test (complet, à long terme ou après un premier essai), la date de publication, des commentaires à court terme, la note globale, l’URL, le type de vélo et l’auteur. Enfin, on trouve le cœur du test : le vélo, la section concernée et le texte intégral.
Chaque test que nous avons compilé comporte trois parties : une section sur les performances en montée, une autre sur les performances en descente et une conclusion. Pour chaque vélo, nous avons ces trois sections, ce qui nous permet d'évaluer ses performances en montée, en descente et en réception. Nous pouvons ainsi déterminer s'il grimpe bien, s'il monte bien en montagne, s'il descend bien et s'il se comporte bien en descente. Enfin, nous pouvons recueillir l'avis général du testeur.
Nous avons évoqué les deux composantes que nous allons utiliser pour notre analyse. Nous avons les courbes, que nous pouvons générer grâce à ce logiciel de liaison, et nous avons les avis.
Mais maintenant, comment transformer toutes ces données en un format exploitable par JMP pour effectuer une analyse ? Grâce à notre système de liaison, nous obtenons une image. La question est : comment convertir cette image dans un format compréhensible par JMP ?
Ce qui est génial avec JMP, et que j'ai découvert récemment, c'est qu'il permet d'ouvrir des images. Il faut exécuter un peu de JSL pour cela. Une fois cela fait, on obtient une image, puis un tableau indiquant les coordonnées X et Y de chaque pixel dans l'image. Le tableau fournit ensuite les valeurs rouge, verte et bleue de chaque pixel.
C'est bien. Mais ça ne nous donne pas encore exactement ce que nous voulons. Il nous faut cette courbe, mais on peut s'en approcher beaucoup plus. Si on pouvait identifier toutes les valeurs bleues, ça nous permettrait de… Bon, on peut obtenir toutes les valeurs bleues, et ensuite, si on peut les projeter sur ce graphique, on pourrait générer une courbe.
J'aime beaucoup Workflow Builder. Il me simplifie grandement la vie car je peux tout faire graphiquement et obtenir des résultats. J'ai donc créé rapidement un workflow qui effectue un clustering K-means. Cette image est pratique car elle ne contient que trois couleurs. Si nous générons trois groupes et enregistrons la formule de ces clusters dans le tableau, nous pouvons obtenir un graphique représentant les positions X et Y de ce tableau, puis les colorer selon la formule de clustering. Vous pouvez voir que la formule du premier cluster correspond à tous nos pixels bleus. Nous pouvons partir de là et nous dire : « Voici les pixels bleus. Maintenant, quelles sont leurs positions ? Nous connaissons leur position globale dans l'image. Nous devons les associer à leur position sur ce graphique. »
Encore une fois, je ne vais pas entrer dans les détails car cela entre dans les subtilités, mais je vais vous montrer à quoi ressemble le script final que nous avons élaboré.
L'image s'affiche, puis le message suivant apparaît : « Vous devez saisir les valeurs Xmin, Xmax, Ymin et Ymax pour ce graphique. » Je vais indiquer que l'échelle va de 0 à 130, puis de 0,45 à 1,35. Je clique sur OK. Le résultat est… Il faut tout glisser ici. On obtient un tableau de données contenant les valeurs X, les valeurs Y, ainsi que la propriété et les vélos que nous observons. Ceci n'est qu'un exemple d'image. Mais vous pouvez voir : voici le graphique de départ. Voici le graphique obtenu. Nous l'avons obtenu en saisissant ces valeurs, en observant les pixels bleus, puis en calculant : « Compte tenu de notre position globale, voici comment cela correspond à l'espace de 0 à 130 millimètres que nous avons défini. »
Bien entendu, ce n'est pas une méthode parfaite, mais elle permet d'obtenir assez facilement les courbes correspondantes. Cela prend un peu de temps. Jed et moi avons passé quelques heures un soir à saisir des chiffres, mais au bout d'un moment, nous avons toutes nos courbes prêtes à être analysées.
Nous allons maintenant aborder la question suivante : « D'accord, qu'avons-nous fait du texte ? Comment l'avons-nous mis dans un format utilisable ? »
Merci, Landon. Comme tu l'as dit, nous avons le texte et les fichiers sont enregistrés dans trois fichiers CSV distincts : un pour la montée, un pour la conclusion et un pour la descente. Je les ai enregistrés sur le bureau. Si tu ne le sais pas, il existe une fonctionnalité très pratique appelée « Importer plusieurs fichiers ». Nous l'avons utilisée. Mais, par souci de gain de temps, je vais ruser un peu et exécuter le script. Celui-ci a importé les trois fichiers dans un seul fichier JMP. Un simple clic droit et un renommage me permettront de renommer ce fichier : « Conclusion », « Descente » et « Montée ».
Mes données sont maintenant formatées et prêtes à l'emploi. Qu'entend-on par « prêtes à l'emploi » ? Il faut convertir le texte de chaque champ en nombres, afin de pouvoir les manipuler et effectuer des statistiques. L'une de mes fonctionnalités préférées, et pourtant peu utilisée, de JMP est l'explorateur de texte. C'est vraiment très simple. Si une colonne contient du texte, eh bien, c'est du texte. On peut tout simplement ignorer le reste, car nous n'en aurons pas besoin. C'est une tâche assez simple.
Au fait, je précise que l'analyse des sentiments est une fonctionnalité de JMP Pro. Si vous possédez JMP Pro, vous pouvez utiliser cette analyse, qui examine l'ensemble du texte et lui attribue un score de sentiment. On constate immédiatement que les avis sont globalement positifs concernant ces vélos.
Mais je tiens à souligner un point important : la notion de curation de texte. Je tombe sur « pédalage », et ça sonne bizarre. Ce n'est pas quelqu'un qui dit à Bob de pédaler. En VTT, le terme « pédalage » désigne le mouvement de la suspension qui se soulève et s'abaisse au rythme du pédalage, et c'est à éviter. Est-ce que JMP prend en compte ce terme étrange ? Pas par défaut, mais c'est très facile à ajouter. Je vais le faire avec l'analyse des sentiments. Je vais gérer ces termes de sentiment. Je peux saisir « pédalage » et lui attribuer une note de -50. Ensuite, vous remarquerez que lorsque je clique sur OK, la note change légèrement. C'est simple, mais ça prend du temps.
J'ai plusieurs termes. C'est Landon qui, un samedi, a parcouru le document, effectué la sélection et enregistré les termes relatifs aux sentiments dans un fichier texte. Il a fait cela manuellement une première fois. Ensuite, JMP les place dans le presse-papiers et je peux les coller avec Ctrl+V. Lorsque je clique sur OK, on obtient un ajustement. Je peux faire la même chose avec les termes de négation et d'intensification dans des fichiers texte. Mais plutôt que de vous montrer comment je fais le copier-coller, je vais prendre un raccourci.
Voilà, toutes ces données sont localisées pour ce corpus ou cet ensemble de documents. La langue est prête, nous pouvons donc nous fier à ces scores. Maintenant que je leur fais confiance, je vais les exploiter. Le plus simple est probablement de cliquer sur le triangle rouge et d'appuyer sur « Enregistrer les scores du document ». Une fois cette opération effectuée, le tableau qui ne contenait auparavant que notre texte comporte désormais quelques colonnes supplémentaires indiquant le nombre de sentiments positifs et négatifs, ainsi qu'un sentiment global.
Je suis presque prêt. Il me reste juste à utiliser la fonction tabulation pour mieux séparer les données et obtenir les valeurs positives et négatives en montée. Même chose pour la conclusion, en descente et en descente. En créant un tableau de données, j'aurai des données exploitables. J'aurai chaque vélo, avec les résultats en montée, en descente et le résultat global. Je pourrai ainsi utiliser l'outil de création de graphiques pour comparer les performances en descente et en montée. Je pourrais dire : « Voici les vélos. Si je devais tirer des conclusions, voici ceux qui sont performants dans les deux conditions. » En résumé, je suis prêt à travailler avec ces données, qui seront traitées comme des indicateurs de performance. Revenons-en à Landon.
D'accord. Merci, Jed. J'ai le même tableau que Jed a créé. On y voit le vélo, puis notre ressenti global, nos impressions positives et négatives pour chaque catégorie : montée, descente et conclusion. Voilà. Ensuite, nous avons analysé toutes nos images et généré ce tableau de courbes.
Actuellement, ce tableau concerne chaque vélo et indique ses propriétés. On y trouve notamment l'anti-cabrage. En faisant défiler le tableau, vous verrez l'anti-cabrage, la course arrière et toutes nos autres propriétés. Ensuite, on a… X représente la position du vélo dans son débattement, et Y la valeur de la propriété correspondante à ce point précis.
Nous avons constaté une grande variabilité entre ces vélos. Certains offrent un débattement de 100 millimètres, tandis que d'autres atteignent 180 millimètres. Cette disparité nous posait problème ; nous avons donc normalisé tous nos débattements de zéro à un. Ainsi, au lieu de considérer la distance parcourue par la roue, nous analysons la proportion du débattement effectué par le vélo : 50 % ou minimum ?
Maintenant, pour visualiser ces données dans Functional Data Explorer, nous aimerions les formater différemment. Nous allons convertir la valeur de déplacement en valeur ordinale, puis utiliser la fonction de tabulation. Jed et moi avons beaucoup utilisé cette fonction dans ce projet. Nous pouvons donc prendre le vélo, indiquer où ajouter le déplacement, récupérer la propriété correspondante et obtenir la valeur Y.
Nous transformons ces données en tableau, et le résultat est un peu brouillon car les valeurs ne sont pas toujours alignées. Il manque donc des valeurs : par exemple, j'ai une valeur pour le retour de pédale, mais pas pour le reste. De même, j'ai une valeur pour le ratio de levier, mais pas pour le reste. Ce n'est pas très esthétique, mais cela ne pose aucun problème. Une fois ces données intégrées à Functional Data Explorer, le logiciel gérera parfaitement ces valeurs manquantes. Cela ne nous posera aucun souci. Donc, tout va bien.
Ensuite, nous devons joindre cette table à celle qui contient toutes les notes des tests de vélos. Le plus simple est d'utiliser une jointure virtuelle. Vous pouvez aller ici, saisir l'identifiant du lien, puis là, créer une référence de lien et procéder ainsi afin d'obtenir un système propre. Je vais l'afficher.
Vous voyez, voici toutes nos données de courbes. Nous avons le vélo, sa position dans le débattement, les valeurs moyennes d'anti-cabrage, d'anti-pompage, de ratio de levier, de retour de pédale et de trajectoire arrière. Et ici, nous avons également tous nos scores de ressenti.
Nous allons maintenant importer ces données dans Functional Data Explorer et analyser le lien entre ces sentiments et la forme des courbes. Dans Specialized Modeling Functional Data Explorer, prenons l'exemple de la courbe arrière. L'axe X correspond à la distance parcourue normalisée et l'identifiant à celui du vélo. L'astuce consiste ensuite à ajouter tous les scores de sentiment dans le champ supplémentaire.
Lorsque Functional Data Explorer s'exécute, ces courbes sont particulièrement belles car elles sont très lisses et générées à partir de liaisons. Les B-splines s'y adaptent donc parfaitement. Nous pouvons ajuster des B-splines à toutes ces courbes et constater que la majeure partie de la variation se situe au niveau de la fonction de forme 1. Si nous regardons notre graphique de diagnostic ci-dessous, nous observons une forte variation le long de la composante 1, et une variation faible le long de la composante 2. En survolant cette zone, nous pouvons voir : « Voici un vélo dont l'axe de la roue se déplace beaucoup vers l'avant, tandis qu'à l'autre extrémité, il se déplace beaucoup vers l'arrière. Ce sont nos deux cas extrêmes. »
Maintenant que c'est fait, nous pouvons appliquer notre B-spline aux données supplémentaires. Grâce à l'ajout des facteurs Z, nous pouvons réaliser une analyse fonctionnelle DOE. Celle-ci nous permet de visualiser la relation entre les scores de sentiment et la trajectoire de retour. La lecture est un peu complexe en raison de la longueur des termes. Les trois premiers représentent respectivement le sentiment global concernant l'escalade, le sentiment positif et le sentiment négatif.
Si l'on ne s'intéresse qu'à la montée, et que l'on souhaite un sentiment général très positif en montée, ainsi qu'un sentiment négatif très faible, voici à quoi ressemble notre vélo, ou plutôt notre trajectoire arrière. Vous pouvez constater qu'il s'agit d'une trajectoire arrière assez standard. Le vélo n'avance ni ne recule beaucoup. Cela vous donne une idée de ce à quoi ressemble une trajectoire arrière. Nous pouvons répéter ce processus pour chacun de nos différents trajets. C'est ce que nous avons fait, et nous avons enregistré ces formules de prédiction.
Enfin, la dernière chose que nous avons faite a été de rassembler tous ces éléments et de les combiner pour créer un outil de profilage qui nous montrera, compte tenu de toutes nos analyses et de toutes les courbes que nous avons élaborées, comment les analyses et les courbes sont liées.
Voici notre section conclusion : points positifs, points négatifs et conclusion générale. Ensuite, vous avez les scores positifs, négatifs et généraux en montée, et les scores positifs, négatifs et généraux en descente. Prenons l'exemple d'un vélo qui privilégie la descente. Nous allons donc nous concentrer sur les performances globales en descente. Nous voulons un score faible en descente et un score positif élevé.
À quoi cela sert-il ? Si on compare cette trajectoire arrière à celles qu'on a vues précédemment, celle-ci décrit un arc beaucoup plus prononcé. C'est logique. Cela correspond au comportement d'un vélo dont la roue arrière va se décaler pour éviter un obstacle sur le sentier. Par exemple, en descente, si vous heurtez une pierre, la roue arrière va se décaler.
L'autre point que je souhaite aborder concerne le rapport de levier. J'y ai fait allusion précédemment. Les VTT sont équipés de différents types d'amortisseurs : à ressort et à air. Sans entrer dans les détails, voici le type de rapport de levier que l'on retrouve généralement sur les VTT à ressort. Si vous examinez les VTT de descente, vous constaterez qu'ils sont tous équipés de ce type d'amortisseurs. La grande tendance actuelle dans le secteur est d'équiper les VTT de descente d'amortisseurs à ressort, car leurs performances sont excellentes, comme le confirment nos données.
On peut aussi considérer l'inverse. La descente nous importe moins, mais nous privilégions l'excellente performance en montée. Notre objectif est d'envoyer un vélo en Coupe du Monde. La trajectoire de l'arrière et l'anti-cabrage sont donc légèrement différents. Le ratio de levier est beaucoup plus courant avec une suspension pneumatique, que l'on retrouve sur un vélo axé sur la montagne, car il est beaucoup plus léger. Il sera donc bien plus performant dans cette discipline.
L'idée, encore une fois, n'est pas de montrer « voici exactement comment concevoir un vélo », mais plutôt « nous disposons de données très complexes ». Nous avons des avis d'utilisateurs publiés sur un site web, des courbes sous forme de graphiques, et grâce à JMP, nous pouvons rassembler toutes ces informations et les synthétiser dans un tableau de bord très efficace. Ce tableau de bord nous permet de comprendre comment les avis et les ratios d'endettement sont liés, et nous fournit des informations qui nous aident à mieux appréhender la situation et à adopter une approche plus rigoureuse que la simple intuition (« je pense que ça devrait être comme ça »).
Voilà ce que nous avions à vous communiquer. Si vous avez des questions, n'hésitez pas à nous contacter. Merci de votre attention.