Conférencier | Transcription |
| Lucas | D'accord, merci à tous d'être venus écouter mon discours. Je m'appelle Lucas Beverlin. Je suis statisticien chez Intel. |
| Et aujourd'hui, je vais parler de l'utilisation de JMP pour comparer des modèles de différents environnements. |
| D'accord, actuellement, JMP 15 Pro est le dernier et le meilleur que JMP propose et si vous souhaitez adapter le modèle, ils disposent de plusieurs outils différents pour le faire. |
| Il y a la plateforme de modèles d'ajustement. Il existe la plate-forme neuronale sur la plate-forme de partition de réseau neuronal. Si vous voulez des arbres de classification et de régression. La plateforme non linéaire pour la modélisation non linéaire et il y en a plusieurs autres. |
| Et donc dans JMP 15, je pense qu'il est sorti en 12 ou 13, mais cette plateforme de comparaison de modèles est un outil très astucieux que vous pouvez utiliser pour comparer |
| le modèle s’adapte à diverses plates-formes au sein de JMP. Donc, si vous avez un arbre et un réseau de neurones et que vous ne savez pas vraiment lequel est le meilleur. D'accord, vous pouvez alterner entre les deux. Mais maintenant, avec ça, |
| vous avez tout sur le même écran. C'est très simple et rapide à dire : est-ce mieux que cela, et ainsi de suite. |
| Cela étant dit, JMP peut s'adapter à beaucoup de choses, mais, hélas, il ne peut pas s'adapter à tout. Alors donnez juste quelques idées de choses qui ne peuvent pas correspondre. Ainsi, par exemple, |
| ceux qui font beaucoup d'apprentissage automatique et d'IA pourraient s'adapter à quelque chose comme un encodeur automatique ou un réseau neuronal convolutif qui nécessite généralement de nombreuses fonctions d'activation ou, oui, de nombreux nœuds de couches cachées, |
| d'autres fonctions d'activation que celles proposées par JMP, donc JMP ne pourra pas faire beaucoup de choses dans JMP. |
| Un autre exemple est ce qu’on appelle la régression de poursuite de projection. Une autre est appelée splines de régression adaptative multivariée. Il y a donc certaines choses que JMP ne peut malheureusement pas faire. |
| R, Python et MATLAB. |
| Il y en a plusieurs autres, |
| mais je vais me concentrer sur ces trois-là. Maintenant que cela étant dit, les idées dont je vais discuter ici, vous voulez les adapter en C++ ou Java ou Rust ou n'importe quel autre langage |
| me vient à l’esprit, vous devriez pouvoir en utiliser beaucoup. |
| Nous pouvons donc utiliser la plateforme de comparaison de modèles, comme je l'ai dit, pour comparer également avec d'autres logiciels. Alors de quoi aurez-vous besoin ? |
| Les deux grandes choses dont vous aurez besoin sont donc les prédictions du modèle, quel que soit le logiciel que vous utilisez pour ajuster le modèle. |
| Et généralement, lorsque nous effectuons l'ajustement de modèles, en particulier avec des modèles plus grands, vous pouvez diviser les données en validation d'entraînement et/ou en ensembles de tests. |
| Vous aurez besoin de quelque chose qui indique à tous les logiciels ce qui est en formation, qui est en validation, qui est en test, car vous allez vouloir que ceux-ci soient cohérents lorsque vous comparez les ajustements. |
| OK, donc la principale raison pour laquelle j'ai choisi de me concentrer sur R, Python et MATLAB pour cet exposé est qu'il s'avère que JMP et le langage de script peuvent réellement créer leurs propres sessions de R et exécuter du code à partir de celui-ci. |
| Donc cette image ici montre très rapidement si je voulais adapter un modèle de régression linéaire à une sortie |
| Vers l'ensemble de données sur le logement de Boston. Je travaillerai beaucoup plus avec cet ensemble de données plus tard. |
| Mais si vous souhaitez simplement adapter très rapidement un modèle de régression linéaire dans R et cracher les valeurs prédictives, vous pouvez le faire. Bien sûr, vous pouvez le faire avec JMP. Mais juste pour donner une idée très simple. |
| Donc, |
| une chose à noter donc j'utilise R 3.6.3 mais JMP peut tout gérer tant qu'il est supérieur à 2.9. |
| Et de la même manière, Python, vous pouvez appeler votre propre session Python. Donc ici, l'image montre que j'adapte la régression linéaire avec Python. Je ne vais pas parcourir toutes les lignes de code ici, mais vous voyez l'idée de base. |
| Maintenant, bien sûr, avec Python, soyez un peu prudent dans la mesure où il s'agit de la dernière version de Python 3.8.5. Mais si vous utilisez Anaconda pour installer des éléments, JMP a du mal à lui parler lorsqu'il est supérieur à 3,6, donc |
| puisque j'utilise 3.6.5 pour cette démonstration. |
| Et enfin, nous pouvons également créer notre propre session MATLAB. |
| J'utilise donc ici MATLAB 2019b. Mais en gros, tant que votre version de MATLAB est sortie au cours des sept ou huit dernières années, elle devrait très bien fonctionner. |
| D'accord, alors comment pouvons-nous tout lier ensemble ? Il y a donc en réalité une sorte de processus en quatre étapes que nous allons examiner ici. Donc tout d’abord, nous voulons adapter chaque modèle. Nous enverrons donc à chaque logiciel les données et l'ensemble dans lequel réside chaque observation. |
| Une fois que nous avons ajusté les modèles, nous souhaitons générer ces ajustements et leurs prédictions et les ajouter à un tableau de données que JMP peut consulter. |
| Alors bien sûr, mon avertissement est le suivant : assurez-vous de nommer des éléments qui vous permettent de savoir où avez-vous ajusté le modèle ou comment avez-vous ajusté le modèle. J'ai des exemples des deux à venir. |
| Donc, étape trois, selon le modèle et vous souhaiterez peut-être examiner certains diagnostics du modèle. Juste parce qu'un modèle s'adapte... semble bien s'adapter d'après les chiffres, il suffit de regarder votre tracé résiduel, par exemple, et vous découvrirez très rapidement le |
| la zone qui présente le plus grand intérêt n’est pas très bien adaptée. |
| Ou il y a quelque chose qui ne va pas avec les résidus, etc. Nous allons donc également montrer comment générer ce genre de choses. |
| Et enfin, nous utiliserons la plate-forme de comparaison de modèles, en réalité, pour tout regrouper dans un seul grand tableau afin de comparer les chiffres, beaucoup plus facilement, au lieu d'aller et venir et d'aller et venir. |
| D'accord, nous allons donc détailler les étapes un peu plus en détail maintenant. Donc, pour la première étape où nous effectuons l’ajustement du modèle, nous avons essentiellement deux options. Donc tout d’abord, nous pouvons dire à JMP via JSL d’appeler le logiciel de votre choix. |
| Envoyez-lui les données et le code pour l'adapter. Et donc, en fait, je vais sortir de là un instant et faire exactement cela. |
| Donc vous voyez ici, j'ai du code pour appeler R. |
| Et puis une fois que c'est fait, j'appellerai Python et une fois que c'est fait, j'appellerai MATLAB et ensuite je relierai le tout. Maintenant, j'en dirai plus sur le code ici dans un instant, mais son exécution prendra probablement trois ou quatre minutes. Je vais donc le faire maintenant. |
| Et nous reviendrons vers lui lorsque nous serons prêts. |
| Notre autre option est donc de créer un ensemble de données avec la validation. Eh bien, nous créons un ensemble de données avec la colonne de validation et/ou une colonne de test, selon le nombre de |
| les ensembles divisons nos données. Nous sommes programmés pour fonctionner sur n'importe quel logiciel sur lequel nous devons fonctionner, bien sûr, le résultat est celui dont nous avons besoin. |
| Alors bien sûr quelques avertissements. Assurez-vous que vous êtes... quel que soit le logiciel que vous utilisez, il dispose réellement de ce dont vous avez besoin pour s'adapter au modèle. |
| Assurez-vous que le modèle est terminé avant d'essayer de le comparer à d'autres objets. |
| Assurez-vous que le format de sortie est quelque chose que JMP peut réellement lire. Heureusement, JMP peut lire un certain nombre de choses, ce n'est donc pas le plus important des quatre avertissements. |
| Mais comme je vous l'ai prévenu plus tôt, assurez-vous que les prédictions de chaque modèle correspondent aux observations correctes de l'ensemble de données d'origine. |
| Et donc cela revient à la question de savoir s'il s'agit d'une formation, s'il s'agit d'une observation de formation, lorsque vous l'intégrez dans JMP, |
| il vaut mieux que ce soit une observation de formation lorsque vous l'intégrez à n'importe quel logiciel utilisé. Si c'est une validation dans JMP, c'est la validation ailleurs. C'est un test dans JMP, ça va être testé ailleurs. |
| Assurez-vous donc que les choses correspondent correctement, car la dernière chose que nous voulons découvrir est de regarder les ensembles de tests et de dire : « Oh, celui-ci convient bien mieux ». Eh bien, c'est parce que les observations qui y figuraient étaient pondérées différemment et ne présentaient pas de véritables valeurs aberrantes. Cela finit donc par fausser votre réflexion. Donc |
| un mot d'avertissement, excusez-moi, un mot d'avertissement. |
| D'accord. Comme je l'ai mentionné, j'ai un exemple que j'exécute actuellement en arrière-plan. Et donc je veux donner un peu de détails sur ce que je fais. Donc |
| il s'avère que je vais intégrer des réseaux de neurones dans R, Python et MATLAB. Donc, si je veux procéder ainsi, dans R, je dois installer deux packages dans R en plus de l'installation de base, à savoir le package Keras et le package Tensorflow. |
| numpy, pandas et matplotlib. |
| Tellement numpy pour faire quelques calculs assez facilement ; des pandas, des pandas pour faire des données... quelques manipulations de données ; et matplotlib devrait être assez simple pour créer des tracés. Et puis dans MATLAB, j'utilise la boîte à outils d'apprentissage profond, que vous y ayez accès ou non. |
| D'accord. Deuxième étape, nous souhaitons ajouter des prédictions au tableau de données JMP. Ainsi, si vous utilisez JMP pour appeler le logiciel, vous pouvez utiliser le code JSL pour récupérer ces prédictions et les ajouter dans un tableau de données afin de pouvoir les comparer ultérieurement. |
| Donc, l'autre façon de procéder est que le logiciel s'exécute tout seul et enregistre la sortie, vous pouvez rapidement dire à JMP, hé, allez extraire ce fichier de sortie, puis effectuez quelques manipulations pour importer les prédictions dans la table de données dont vous disposez. stocker vos résultats. |
| Alors maintenant, nous pouvons également lire les tracés de diagnostic. Dans ce cas, ce que je vais généralement faire, c'est enregistrer ces tracés de diagnostic sous forme de fichiers graphiques. Donc pour moi, ce seront des fichiers PNG. Mais bien sûr, peu importe |
| graphiques que vous pouvez utiliser. Maintenant, JMP ne peut pas toucher tout le monde sous le soleil, mais je crois que PNG cartographie les fichiers jpg et certains et ils... ils couvrent vos fichiers habituels. |
| Donc, la deuxième note, je l'utilise pour la plate-forme de comparaison de modèles, mais pour aider à identifier ce que vous... quel modèle vous convient et où vous l'adaptez, |
| Je recommande généralement d'ajouter la propriété suivante pour chaque colonne de prédiction que vous ajoutez. Et donc nous voyons ici, nous envoyons la table de données qui nous intéresse, cette propriété appelée prédiction. |
| Et donc ici, nous avons ce que vous utilisez pour prédire les choses (maintenant ici, la valeur n'est probablement pas le meilleur choix ici) mais |
| mais avec ce créateur, cela me dit, quel logiciel ai-je utilisé pour créer ce modèle. Et donc ici j'ai utilisé R. Il affiche R pour que cela tienne réellement sur l'écran. Python et MATLAB étaient un peu trop longs, mais nous pouvons mettre ici la chaîne que nous voulons. |
| Vous les verrez lorsque je passerai en revue le code un peu plus en détail ici sous peu. |
| Donc, et cela est pratique car je vais également intégrer plusieurs modèles dans R plus tard. Donc, si je choisis correctement les noms de colonnes et que j'en ai plusieurs là où R les a créés, je sais toujours quel modèle je regarde réellement. |
| D'accord, voici à quoi ressemble la boîte de dialogue typique de comparaison de modèles. |
| Donc, une chose que je vais noter est que, voici à peu près à quoi cela ressemblerait si je faisais un pointer-cliquer à la fin de tout l'ajustement du modèle. Vous pouvez donc voir que j'ai plusieurs prédicteurs. J'ai donc des réseaux de neurones pour MATLAB, Python et R. |
| Diverses formes de prédiction ; J'avais l'habitude d'utiliser JMP pour adapter certaines choses. |
| Souvent, les gens mettent cette colonne de validation en groupe, |
| afin qu'il regroupe la validation et le test de la formation. En fait, j'aime un peu mieux le résultat lorsque je le colle dans l'instruction By ici. Je vais donc le montrer ici un peu plus tard. Mais vous pouvez le mettre soit ou |
| mais j'aime mieux le résultat de cette façon, c'est le long et le court. |
| C'est donc la principale raison pour laquelle je peux voir clairement maintenant, ce sont toutes les formations, |
| ce sont toutes les validations (ne devraient pas être vues par les en-têtes) et ce sont tous les tests. |
| Si vous utilisez la validation comme variable de groupe, vous obtiendrez une grande table contenant 21 entrées. Maintenant, il y aura une colonne supplémentaire. Il est écrit test de validation de formation ou dans mon cas, ce sera 012 mais |
| de cette façon, avec les mots, je n'ai pas besoin de réfléchir aussi fort. Je n'ai pas besoin d'expliquer à qui que ce soit ce que signifie 012, etc. C’est pourquoi j’ai fait le choix que j’ai fait. |
| D'accord, donc dans l'exemple que je vais décomposer ici, je vais utiliser l'ensemble de données classique sur le logement de Boston. Désormais, cela est inclus dans JMP. C'est pourquoi je ne l'ai pas inclus sous forme de fichier dans ma présentation, car si vous avez JMP, vous l'avez déjà. |
| Harrison et Rubinfeld disposaient donc de plusieurs indicateurs de la valeur médiane de la maison, tels que le taux de criminalité par habitant, la proportion d'acres non commerciaux par ville, |
| nombre moyen de chambres dans tout ce que vous essayez d'acheter, ratio élèves/enseignant par ville (donc s'il y a beaucoup d'enseignants et pas autant d'étudiants, cela signifie généralement qu'une meilleure éducation est ce que beaucoup de gens recherchent) |
| trouvé) et plusieurs autres. Je ne vais pas vraiment essayer de les parcourir tous les 13 ici. |
| D'accord, permettez-moi de vous donner un peu d'information sur les modèles que j'ai examinés ici. Et puis je vais approfondir le code JSL et comment tout intégrer. |
| J'ai donc examiné certains des modèles. Alors tout d’abord, le modèle de régression linéaire par excellence. Donc ici, vous voyez juste une simple régression linéaire. J'ajuste simplement la valeur médiane, semble-t-il, au taux d'imposition. |
| Mais bien sûr, j'utiliserai une régression linéaire multiple et je les utiliserai toutes. |
| Donc, |
| Mais avec 13 prédicteurs différents, et sachant que certains d’entre eux pouvaient être corrélés les uns aux autres, j’ai décidé que quelques autres types de régression mériteraient peut-être d’être examinés. |
| L’un d’eux est ce qu’on appelle la régression de pont. Donc, en réalité, tout ce que c'est, c'est une régression linéaire avec essentiellement une contrainte supplémentaire qui |
| les valeurs au carré de mes paramètres ne peuvent pas être supérieures à une constante. |
| Je peux... il s'avère que je peux réellement réécrire cela comme un problème d'optimisation où une certaine valeur de lambda correspond à une certaine valeur de C. |
| Et donc j'essaie simplement de minimiser cela avec ce terme de pénalité supplémentaire, par opposition aux moindres carrés typiques que vous êtes habitués à voir. |
| Maintenant, c'est ce qu'on appelle une méthode de retrait, car bien sûr, à mesure que je le rends de plus en plus petit, cela va rapprocher de plus en plus tout cela de zéro. Alors, bien sûr, il faut réfléchir à la mesure dans laquelle je souhaite que cela soit restrictif. |
| Maintenant, avec la démarque inconnue, tout le monde va lentement se rapprocher de zéro. Mais avec un autre type de terme de pénalité, je peux en fait éliminer complètement certains termes. |
| Et je peux utiliser quelque chose qui s'appelle le lasso. Et donc la contrainte ici est, d'accord, au lieu des estimations de paramètres au carré, je vais simplement prendre la somme de la valeur absolue de ces estimations de paramètres. |
| Il s'avère donc que ce qui se passera en réalité, c'est que ceux qui sont très faibles verront leurs estimations de paramètres mises à zéro elles-mêmes, ce qui sert en quelque sorte de paramètre. |
| élimination, si vous voulez, des termes sans importance. |
| Donc, pour donner un petit aperçu visuel de ce que font la régression du lasso et de la crête. Ainsi, pour la régression de crête, le cercle représente ici le terme de pénalité. |
| Et ici, nous regardons l'espace des paramètres. Et donc les véritables estimations des moindres carrés seraient ici. Nous n’y arrivons donc pas tout à fait, car nous avons cette contrainte supplémentaire. |
| Donc à la fin, nous trouvons où... où obtenons-nous la valeur minimale qui touche le cercle, en gros. Et voilà, ce seraient nos estimations des paramètres de régression de crête. |
| Pour le lasso, dessin similaire, mais on voit maintenant avec la valeur absolue, il s'agit plus d'un losange que d'un cercle. Maintenant, notez qu'il s'agit de deux dimensions, bien sûr, nous allons aborder les hypersphères et toutes ces formes. |
| Mais vous pouvez voir ici, remarquez que cela touche juste la pointe du diamant. Et donc, dans ce cas, la bêta un est en réalité nulle. C’est ainsi que les termes sont éliminés. |
| D'accord, nous allons également examiner ce qu'on appelle un arbre de régression. Désormais, JMP utilise les plates-formes de partition pour ce faire. Donc juste pour donner une démonstration très rapide de ce que cela montre, ok, j'ai donc toutes mes données. |
| Et donc ma première question que je vais me poser est la suivante : combien de pièces y a-t-il dans le logement, et je sais que je ne peux pas avoir 0,943 pièce, donc en gros, |
| J'ai six chambres ou moins. Alors descendons cette partie de l’arbre, ne descendons pas cette partie de l’arbre. Maintenant, si j'ai sept chambres ou plus, cela me dit immédiatement que je vais prédire ma médiane |
| la valeur est de 37. N'oubliez pas que c'est en dizaines de milliers de dollars, alors gagnez 370 000 $. |
| S'il est moins de sept heures, la question suivante que j'ai posée est la suivante : quelle est la taille de lstat ? |
| Donc s'il est supérieur ou égal à 14,43, je regarderai ce nœud et du coup, mon logement médian estime à environ 150 000 $ et si je viens ici, ce sera à environ 233 000 $. |
| Ainsi, ce que font réellement les arbres de régression, c'est qu'ils divisent votre espace d'entrée en différentes zones. Et nous donnons la même prédiction à chaque valeur dans cette zone. |
| Vous pouvez donc voir ici que j'ai divisé... maintenant, dans ce cas, j'en prends un en deux dimensions car c'est plus facile à dessiner... |
| et donc vous pouvez voir cet arbre ici, où je regarde pour la première fois x1. Maintenant, regardez x2 ici et posez une autre question sur x1 et posez une autre question sur x2, et c'est ainsi que je finis par partitionner l'espace d'entrée. |
| Maintenant, chacun de ces cinq va avoir une valeur de prédiction. Et c’est essentiellement à cela que cela ressemble. Je regarde ça d'en haut. Je vais obtenir exactement ça. Mais vous pouvez voir ici que le |
| la prédiction est un peu différente selon lequel des cinq domaines est correct. |
| Maintenant, je ne vais pas entrer dans les détails sur la façon exacte d'en installer un, mais |
| James, Witten, Tibshirani et Friedman donnent un petit peu ; Leo ??? a écrit le livre fondateur à ce sujet afin que vous puissiez y jeter un œil. |
| Ensuite, j'en viendrai aux réseaux de neurones, qui sont beaucoup utilisés dans l'apprentissage automatique et ainsi de suite de nos jours. Et donc cela donne une idée de ce à quoi ressemble un réseau de neurones. Donc ici, ce visuel n'utilise que cinq et les 13 entrées lors de leur transmission |
| à ceux-ci... cette couche cachée. Et chacun d’eux est transformé via une fonction d’activation. |
| Et pour chacune de ces fonctions d'activation, vous obtenez une sortie et nous utiliserons... |
| souvent, nous utiliserons simplement une régression linéaire de ces résultats pour prédire la valeur médiane. |
| Bon alors |
| En réalité, les réseaux de neurones sont des modèles non linéaires, en fin de compte, et en réalité, ils sont appelés réseaux de neurones parce que la représentation correspond généralement à la manière dont nous considérons les neurones comme fonctionnant dans le cerveau humain. |
| Ainsi, chaque entrée peut être transmise aux nœuds d'une couche cachée. Au niveau de la couche cachée, vos entrées sont transmises via une fonction d'activation et certaines sorties sont calculées et chaque sortie peut être transmise à un nœud d'une autre couche cachée ou être une sortie du réseau. |
| Désormais, dans JMP, vous n'avez droit qu'à deux calques masqués. |
| A vrai dire, en ce qui concerne la création d'un réseau de neurones, rien n'empêche d'en avoir 20 pour autant |
| ce qui nous préoccupe maintenant. À vrai dire, il existe une théorie statistique qui suggère que nous pouvons approximer n'importe quelle fonction continue, |
| étant donné quelques conditions aux limites, avec deux couches cachées. C'est probablement la raison pour laquelle JMP a pris cette décision. |
| base linéaire, tangente hyperbolique et radiale gaussienne. Donc en fait, |
| sur ces nœuds ici, remarquez la petite courbe ici. Je crois que c'est pour la fonction tangente hyperbolique ; linéaire sera une ligne droite montante ; et la base radiale gaussienne, je crois, ressemblera davantage à une courbe normale. |
| C'est la plate-forme de réseau neuronal. Le dernier que nous examinerons est ce qu'on appelle la régression de poursuite de projection. Je voulais tirer quelque chose que JMP ne peut tout simplement pas faire, juste en donnant un exemple ici. |
| Euh, donc la régression de poursuite par projection était un modèle proposé à l'origine par Jerome Friedman et Steutzle à Stanford. Leur modèle prend des prédictions... fait des prédictions de la forme y est égal à la somme de bêta i, f sub i et une transformation linéaire de vos entrées. |
| C’est donc vraiment un peu analogue à un réseau neuronal. Vous avez ici une couche cachée avec k nœuds et chacun avec une fonction d'activation fi |
| L. Il s'avère qu'avec la régression de poursuite de projection, nous allons également estimer ces f sub i. |
| En général, ils seront plus lisses ou cannelés. Généralement, les f sub i sont appelés fonctions de crête. Maintenant, nous avons des alphas, des bêtas et des F sur lesquels nous devons optimiser. Donc, généralement, un ajustement par étapes est effectué. Je ne vais pas entrer trop dans les détails à ce stade. |
| D'accord, j'ai donc en quelque sorte parcouru tous mes modèles. |
| Alors maintenant, je vais montrer quelques résultats et j'espère que les choses se présentent bien. Donc, une chose que je vais noter avant de me lancer dans JMP est que |
| il est vraiment difficile de définir des graines pour les réseaux de neurones dans R, Python pour Keras. Notez donc que si vous prenez mon code et l'exécutez, vous n'obtiendrez probablement pas exactement ce que j'ai obtenu, mais cela devrait être assez proche. Cela dit, |
| voyons ce que nous avons ici. C'est donc le résultat que j'ai obtenu. Aujourd’hui, malheureusement, les choses ne semblent pas se dérouler parfaitement. |
| Donc, |
| Lucas | qu'est-ce que j'ai ici ? J'ai donc ma formation, ma validation et mon test. Et on voit donc très vite qu'un de ces modèles ne convenait pas très bien. Le réseau neuronal au sein de R, malheureusement, quelque chose d'horrible s'est produit. |
| Il doit avoir attrapé un mauvais endroit dans l'espace d'entrée pour commencer et ainsi de suite. Et donc cela ne correspondait tout simplement pas à un très bon modèle. |
| Malheureusement, les paramètres de départ avec des modèles non linéaires sont importants ; dans certains cas, nous sommes mordus par eux. |
| Mais si l’on regarde tout le reste, tout le reste semble bien s’intégrer. Maintenant, ce qui est tout à fait bien, nous pouvons en discuter, mais je vois des carrés R, un au-dessus de 0,5. Je vois la moyenne des racines |
| les erreurs quadratiques ici sont d'environ cinq, et même nos erreurs absolues moyennes se situent dans la fourchette de trois. Maintenant, pour la formation, il semble que les régressions de poursuite par projection aient donné de meilleurs résultats. |
| Si j'en viens à l'ensemble de données de validation, cela ressemble toujours à R |
| la poursuite de la projection a fait de son mieux. Mais si nous regardons l'ensemble de données de test, tout d'un coup, non, la régression de poursuite de projection était deuxième, en supposant que nous allons ignorer le réseau neuronal de R, deuxième pire. |
| Souvent, dans un cadre comme celui-ci, nous allons examiner l'ensemble de données de test le plus proche, car il n'a pas été utilisé d'une manière ou d'une autre pour déterminer l'ajustement du modèle. |
| Et nous voyons sur cette base, il semble que |
| la régression de crête de JMP convient le mieux. |
| Nous pouvons voir ici que le R au carré était de 0,71 ici auparavant, il était d'environ 0,73, et d'environ 0,73 ici, nous pouvons donc voir que cela correspond toujours. |
| la même chose dans les trois ensembles de données. Donc, si j'étais obligé de prendre une décision, basée uniquement sur ce que je vois en ce moment, je choisirais probablement |
| la régression de crête. Cela étant dit, nous avons tout un tas de diagnostics et ainsi de suite ici. Donc si je veux regarder ce qui s'est passé avec ce réseau neuronal de R, |
| Je peux voir très rapidement que quelque chose s'est passé juste quelques pas plus loin. Comme vous pouvez le voir, il fait un très mauvais travail d'ajustement car à peu près tout devrait être de 220 mille. |
| Nous savons donc que quelque chose s’est mal passé lors du montage. |
| Nous avons donc vu que la régression de crête semblait être la meilleure. Jetons donc un œil à ce qu'il crache. Je vais donc montrer dans un instant mon code JSL très rapidement. |
| montre comment j'ai fait tout cela mais, euh, nous pouvons voir voici les estimations des paramètres de la régression de crête. Nous pouvons voir les tracés de diagnostic de la crête, donc les choses n'ont pas vraiment diminué par rapport aux estimations initiales. |
| Vous pouvez voir à partir des tests de validation avec le journal que rien n'a été fait. |
| Et ici à droite, nous avons nos parcelles essentiellement résiduelles. Ceux-ci sont réels et prédits. |
| Donc, comme vous pouvez le voir d'après la formation, il semble qu'il y en ait quelques-uns qui étaient plutôt chers et qui n'ont pas été très bien prédits. Nous en voyons moins ici que dans la série de test, il ne semble pas vraiment que nous ayons eu trop de problèmes. Nous avons ici quelques points un peu étranges, mais nous pouvons voir de manière générale |
| lorsque nous sommes dans des maisons à bas prix, cela correspond assez bien aux trois ensembles de données. Encore une fois, nous voudrons peut-être nous demander ce qui s'est passé dans ces cas-là, mais |
| pour le moment, cela semble être le meilleur du groupe. Nous pouvons donc voir des autres. |
| Vois ici. Nous allons donc regarder MATLAB pendant un instant. |
| Vous pouvez donc également voir la validation des tests de formation ici. Alors là, nous crachons... MATLAB crache une chose de diagnostic et vous pouvez voir qu'il a fallu quelques époques pour en finir ainsi. |
| Mais heureusement, MATLAB fonctionne assez rapidement, comme nous pouvons le constater. |
| Et puis le réel est prédit ici. |
| Nous pouvons voir tout cela. |
| D'accord, je vais donc prendre quelques minutes maintenant pour jeter un œil au code. |
| Alors bien sûr, quelques notes, assurez-vous que les choses sont installées pour que vous puissiez réellement exécuter tout cela, car sinon, JMP va juste échouer lamentablement, ne pas cracher de prédictions et ensuite il va échouer parce qu'il ne peut pas trouver les prédictions. |
| JMP a donc la possibilité de créer une colonne de validation avec du code. J'ai donc fait ce que j'ai choisi 60 20 20. J'ai choisi cette graine aléatoire ici afin que vous puissiez utiliser les mêmes ensembles de tests de validation de formation que moi. |
| Donc en fait, pour le moment, ce que je finis par faire, c'est sauvegarder ce qui est la formation, la validation et le test. Je vais en fait supprimer un petit peu cette colonne. |
| La raison pour laquelle je fais cela ici est parce que j'envoie l'ensemble de données à R, Python et MATLAB et qu'il est plus facile de coder lorsque tout ce qu'il contient est soit la sortie, soit toutes les entrées. |
| Je ne voulais donc pas d'une colonne de validation qui ne l'était pas non plus et cela devient alors un peu plus difficile de faire ça. Donc, ce que j'ai fait, c'est de lui envoyer l'ensemble de données, |
| Je lui ai envoyé quelles lignes de formation, de validation et de test, puis j'appelle le code R pour l'exécuter. Maintenant, vous pouvez réellement |
| mettez le code R lui-même ici. J'ai choisi de n'écrire qu'une seule ligne ici pour ne pas avoir à faire défiler indéfiniment. Mais rien ne vous arrête. S'il ne s'agit que de quelques lignes de code, comme ce que vous avez vu plus tôt dans la présentation, je le collerais simplement ici. |
| Pour qu'une fois que c'est fait, il s'avère que... ce code crache |
| une photo du diagnostic. Nous l'avons vu s'arrêter après six ou sept itérations, disons que c'est réglé. |
| Et correspond également à la régression de crête dans ce script, nous obtenons donc deux images. Alors je crache celui-là également et je le sauvegarde ainsi que la boîte de contour. Maintenant, tout cela est rassemblé à la fin de tout le code. |
| Et puis j'obtiens le résultat et je les ajouterai au tableau de données ici dans quelques instants. |
| D'accord, donc je donne un peu de code ici. Supposons que vous ayez 6 millions d'observations et qu'il faudra 24 heures pour adapter réellement le modèle. Vous ne souhaiterez probablement pas l'exécuter dans JMP. |
| Donc, comme petit bout de code que vous pourriez faire à partir d'ici, vous pouvez dire, hé, je suis |
| d'accord, je vais simplement ouvrir la table de données qui m'intéresse. Je vais dire à R d'aller l'exécuter ailleurs en attendant, et une fois mon système, quand je me donne le feu vert, hé, c'est fait, je peux dire, d'accord, eh bien, va ouvrir la sortie de ça et apporter dans |
| ma table de données. Ce serait donc une façon de procéder pour y parvenir. Et bien sûr, vous souhaitez enregistrer ces fichiers image quelque part et utiliser également ce code. Mais ce sera exactement le même code. |
| D'accord, donc pour Python, ça va être très similaire. Je vais lui transmettre ces choses. Exécutez du code Python, crachez le tracé de diagnostic et crachez les prédictions. |
| Et je donne du code Python, vous pouvez voir, c'est très, très similaire à ce que nous avons fait avec JMP. Je vais juste ouvrir un fichier CSV dans ce cas. Copiez la colonne et fermez-la, car je n'en ai plus besoin. |
| Et puis MATLAB encore exactement le même jeu. Actifs, exécutez le script MATLAB. Je récupère le fichier PNG que j'ai craché ici. Enregistrez-le là où j'en ai besoin, enregistrez les prédictions. Et si tu as besoin de l'attraper |
| plutôt que de l'exécuter depuis ici, un petit exemple de code fera cela. |
| OK, donc maintenant que j'ai fini d'appeler R, Python et Matlab, je ramène mes colonnes de validation pour que JMP puisse les utiliser. Donc puisque je me souviens lequel est lequel. |
| Ainsi, par défaut, JMP examine les valeurs de la colonne de validation que nous utiliserons. La plus petite valeur est la formation, la deuxième plus grande est la validation et la plus grande est le test. Maintenant, si vous effectuez une validation croisée du pli K, cela lui dira de quel pli il s'agit. Alors parcourez le 012345678, etc. |
| Alors créez ceci. J'ai également créé ceci à mon tour ici, de sorte qu'au lieu de 012, cela dira en fait formation, validation et test dans ma sortie, donc c'est un peu plus clair à |
| comprendre. Donc, si je veux montrer à quelqu'un d'autre qui n'a jamais utilisé JMP auparavant, il ne saura pas ce que signifie 012, mais il devrait savoir qu'il s'agit d'une formation, d'une validation et d'un test. |
| OK, alors maintenant je commence à ajouter les prédictions à mon tableau de données. Euh, voici donc cette propriété définie à laquelle j'ai fait allusion plus tôt dans mon exposé. |
| Donc, le MATLAB de mon créateur, j'ai donné le nom de la colonne donc, je sais que c'est la prédiction du réseau neuronal pour MATLAB. Donc je n'ai peut-être pas nécessairement besoin du créateur, mais au cas où je serais un peu négligent dans la nomination des choses |
| Désolé pour ça. |
| Nous pouvons donc obtenir toute la régression de poursuite de projection, les réseaux neuronaux, etc. |
| Ensuite, j'ai également remarqué que j'adaptais la régression de crête, le lasso et la régression linéaire dans JMP. |
| Alors j'ai fait tout ça ici. Alors ici, je fais mon modèle d'ajustement, ma régression généralisée. Faites sortir tous ces crachats. |
| Sve mes formules de prédiction. |
| Tracez mon réel par prévu pour ma sortie complète à la fin. |
| Et je vais adapter mon réseau neuronal. Puis-je dire la colonne de validation. Je transfère mes covariables, généralement les réseaux de neurones ont tendance à s'adapter un peu mieux lorsque nous mettons les choses à l'échelle autour de zéro, par opposition à la sortie habituelle. |
| Ma première couche cachée comporte donc trois nœuds. Ma deuxième couche cachée comporte deux nœuds. Ici, ce sont deux fonctions d'activation linéaires. Il s'avère que pour les trois ci-dessus, j'utilise la fonction d'activation des unités linéaires restreintes, donc légèrement différente, |
| mais j'ai trouvé qu'ils semblaient s'adapter à peu près de la même manière. |
| 5. Cela signifie que, hé, je vais essayer cinq ensembles différents de valeurs de départ, celui qui fait le mieux est celui que je vais garder. |
| Comme vous pouvez le constater d'après mon code, j'aurais probablement dû le faire avec le R. C'est une sorte de quatre boucles, j'en fais plusieurs, je crache celle qui fait le mieux. Donc, pour de futurs travaux, ce serait un endroit où j'irais. |
| Alors je sauvegarde ces éléments et maintenant je suis prêt pour la comparaison des modèles. Alors maintenant, j'apporte toutes ces nouvelles colonnes dans la comparaison des modèles. |
| Faites défiler un peu. Donc ici, je fais la validation par validation, comme j'y ai fait allusion plus tôt. |
| Et enfin, je fais juste un peu de codage pour que cela ressemble essentiellement à ce que je veux. |
| Je reçois donc ces encadrés, juste pour dire les diagnostics de formation, les diagnostics de validation, les diagnostics de test, au lieu des éléments habituels que disent les JMP. |
| Je vais chercher ces tracés de diagnostic. |
| Maintenant, je dis simplement que je veux seulement une partie des résultats pour saisir cela. |
| Je vais faire quelques tracés résiduels très rapidement, car tous ne les crachent pas instantanément, notamment ceux de MATLAB, Python et R. |
| Définissez ces titres, puis ici, je crée simplement la grande vieille table ou le grand vieux dialogue. |
| Et puis je journalise tout. |
| Pour que ce soit beau et propre. Fermez un tas de choses pour que je n'aie pas à m'inquiéter de rien. Et puis ce que j'ai fait ici à la fin, c'est ce que je voulais, c'est que lorsque j'en ouvre un, |
| tout le reste en dessous est immédiatement ouvert plutôt que |
| devoir cliquer sur six ou sept choses différentes. Vous voyez, je dois cliquer ici et ici et |
| Par ici, il y en a trois autres. Je suppose qu'il y en a un de plus. Désolé. Mais de cette façon, je n'ai pas besoin de cliquer sur aucun d'entre eux, ils sont automatiquement ouverts. |
| C'est donc ce que fait ce dernier morceau de code. |
| D'accord. |
| Lucas | Il s'agit donc simplement d'une sortie différente et de l'exécuter en direct. Mais c’est à cela que cela peut aussi ressembler. |
| Donc, comme je l'ai mentionné, dans le code, vous avez vu là-bas, vous avez vu autre chose, c'est ce que nous avons vu. |
| Richard |
| Lucas | Non. Donc, pour conclure, la plateforme de comparaison de modèles est vraiment un très bon outil pour comparer la capacité prédictive de plusieurs modèles en un seul endroit. Vous n’êtes pas obligé de faire des allers-retours entre différentes choses. Vous pouvez simplement tout regarder juste devant vous. |
| Cette flexibilité peut même être utilisée pour adapter des modèles qui ne rentrent pas dans JMP ou pour comparer des modèles qui ne rentrent même pas dans JMP. Et ainsi |
| avec cela, si nous devons installer de très grands modèles qui prennent beaucoup de temps à s'adapter, nous pouvons leur dire de s'adapter. Extrayez tout dans JMP et examinez très facilement tous les résultats pour essayer de déterminer les prochaines étapes. |
| Et sur ce, merci pour votre temps. |