modèle de déploiementSalut
à tous.
Dans les 2 fichiers jmp ci-joints. Celui nommé Training-validation-test a été utilisé pour construire un modèle RF avec les résultats suivants.
Le fichier contient une réponse numérique et 20 prédicteurs différents, dont un catégorique. Les prédicteurs sont des valeurs de capteurs.

Comme vous pouvez le constater, le biais est très bon tandis que la variance est légèrement élevée (92-69=23 %).
Ensuite, une nouvelle base de données avec des exemples jamais vus par le modèle a été utilisée pour simuler le déploiement de l'algorithme sur de nouvelles données.
Avec une grande surprise, le résultat était vraiment médiocre avec un R2 entre la réponse prédite et la réponse réelle proche de zéro. Nous n'avons pas pu comprendre ce comportement. Le R2=68% pour les données de test ne semble après tout pas vraiment mauvais. Nous nous attendions donc à obtenir avec certitude un R2 supérieur à zéro.
S'il vous plaît, toute aide/commentaire est la bienvenue.
Félice-Gian
Modélisation prédictive et apprentissage automatiquePartager et communiquer les résultatsRe : modèle de déploiementPeut-être que cela peut aider dans la discussion. J'ai utilisé l'excellente option de filtrage de modèles dans jmp pro en utilisant l'option imbriquée pour régler les hyperparamètres combinée à la validation croisée k-fold. Voici les résultats obtenus après quelques heures de travail avec jmp

Ce qui m'a surpris, c'est la grande différence entre les modèles en termes de performances. Les modèles d'arbres et KNN ont montré un R2 supérieur à 50 % tandis que tous les modèles d'ajustement ont montré des valeurs bien inférieures à 50 % (proches de zéro), même si l'utilisation du lasso et de la régularisation des crêtes. Peut-être que cette différence explique les mauvaises performances des modèles RF/Boosted une fois déployés en production ?
Qu'en penses-tu? Un commentaire/suggestion/aide ?
Félice.
Re : modèle de déploiementJe soupçonne fortement que vous devez consacrer plus de temps à préparer les données.Pour ajuster les modèles de séries chronologiques, les observations doivent être espacées de manière égale et sans valeurs temporelles en double.Vous disposez de 4 capteurs (?) avec des réponses inégalement espacées.Si vous voulez donner un sens à ces données, je pense que vous devez agréger les valeurs afin qu'il y ait une seule observation à chaque période, et vous souhaiterez peut-être créer une variable pour la durée entre les observations chronométrées.Je suggérerais également de faire une analyse distincte pour chaque type de capteur plutôt que d'utiliser le capteur comme l'une de vos fonctionnalités, car le comportement de chacun semble être différent.
Je ne serais pas prêt à conclure que vos fonctionnalités ne sont pas prédictives - je pense que trop de bruit est introduit en mélangeant les types de capteurs ainsi qu'en ayant des intervalles de temps non standard.Si vous résolvez ces problèmes, il existe peut-être encore un bon modèle prédictif.La partie modélisation n'est pas le problème - la préparation des données l'est (comme c'est souvent le cas).C'est du moins ce que je pense.
Re : modèle de déploiementSalut Dale
malheureusement, en utilisant également la différence de variable de réponse, aucun des modèles de regeression n'a été en mesure de renvoyer un bon résultat.
Donc, à ce stade, je dois peut-être supposer que nos variables X ne sont pas de bons prédicteurs de réponse.
Quoi qu'il en soit, le doute subsiste si pour des données comme les nôtres (données de capteur) nous devons diviser l'entraînement/test en tenant compte de l'axe du temps ou si nous pouvons utiliser la technique de répartition aléatoire. Dans la littérature, j'ai trouvé plusieurs articles dans lesquels, pour les données des capteurs, ils utilisent l'entraînement/le test de répartition aléatoire. Si nous faisons de la même manière, les résultats semblent vraiment bons jusqu'à ce que nous déployions le modèle en production pour comprendre que le modèle est complètement faux. Alors où est la vérité ?
En pièce jointe, vous trouverez un article qui applique les techniques d'apprentissage automatique à un outil semi-conducteur (graveur). Ils essaient de faire une maintenance prédictive en examinant les données des capteurs. Les données devraient donc être vraiment similaires à celles-ci. Si vous regardez la partie du papier surlignée en vert, on dirait qu'ils divisent les données en tenant compte de l'axe du temps, puis en considérant les données comme des séries chronologiques.
J'espère que d'autres personnes que Dale pourront avoir leur mot à dire et nous aider à résoudre ce dilemme.
Les données sont-elles ou non comme les nôtres séries multitemporelles ?
Il est vrai que les prédicteurs X et la réponse Y dépendent du temps. Mais si nous voulons prédire le Y en fonction des valeurs X, pourquoi la variable temps devrait-elle être si importante ? Pour moi, le Y devrait dépendre des variables X définies automatiquement par la machine pendant la phase de processus. Bien sûr, cela se produit chronologiquement, mais la valeur X dépend de la recette et de l'état de la machine. J'ai donc du mal à accepter la dépendance au temps.
Joyeuses Pâques à toute la communauté.
Félice
Re : modèle de déploiementLes modèles de séries chronologiques ne sont pas mon point fort, alors j'espère que quelqu'un vous donnera une réponse plus définitive.Je ne différencierais pas les fonctionnalités au début - je construirais les modèles et examinerais les résidus pour voir s'ils présentent la même autocorrélation.Si c’est le cas, j’essaierais peut-être de différencier certaines fonctionnalités.
Re : modèle de déploiementSalut Dale
puisque les prédicteurs affichent également le même PACF, pensez-vous qu'il pourrait être utile de différencier également les prédicteurs en plus de la réponse ?
Merci Félice
Re : modèle de déploiementLe graphique PACF suggère que les deux premiers décalages sont les plus pertinents – de loin, le premier décalage est le plus important.Donc, je pense qu'une simple différenciation du premier ordre serait une bonne chose à essayer.Il est possible que l'un des modèles d'apprentissage automatique (par exemple, RF, arbres boostés, réseaux neuronaux) fonctionne bien, je les essaierais donc.Mais vous devriez également essayer des modèles de séries chronologiques plus standard (dans lesquels vous n'utiliserez pas la différenciation, car les modèles de séries chronologiques sont conçus pour tenir compte de l'autocorrélation de différentes manières).En théorie, si vous utilisez la différenciation du premier ordre (et si cela élimine en grande partie la structure temporelle), vous pouvez probablement utiliser un ensemble de tests de validation de train aléatoire pour votre modélisation.Du moins, c'est ce que je pense – d'autres le sauront peut-être mieux.
Re : modèle de déploiementSalut George et Dale
merci beaucoup pour vos réponses. Je jette un œil au diagramme de décalage de tous les prédicteurs et réponses et, à ma grande surprise, j'ai découvert une très longue autocorrélation (voir photos ci-jointes).
Les données provenant d'une usine de semi-conducteurs, la valeur 25 visible dans l'ACF est liée au nombre de tranches d'un lot.
Les lignes de points à la place dans les tracés de décalage ne sont que les premières tranches d'un lot différent chargé dans le macgine. Je pense que l'autocorrélation est due au feedback interne présent dans notre machine pour maintenir le point de fonctionnement. Bien entendu, ces ajustements sont cachés au sein de la Chambre et échappent à notre contrôle et à notre compréhension. La réponse montre également un décalage évident que je ne peux pas expliquer. Mais est-ce là.
J'ai essayé d'utiliser l'ingénierie des fonctionnalités de décalage, de moyenne mobile, de lissage et d'autres prédicteurs, mais les résultats continuent d'être très mauvais.
Prochaine étape, je veux essayer la différenciation proposée par Dale. Croyez-vous que la simple différence X(t)-X(t-1) puisse suffire ?
Ciao Felice
Re : modèle de déploiementJ'ai quelques suggestions.Tout d’abord, j’essaierais d’abord de différencier votre variable de réponse, puis d’essayer à nouveau les forêts aléatoires.Pour moi, c'est l'approche la plus simple des données de séries chronologiques - et il est possible que les données se comportent mieux lorsqu'elles sont examinées de cette façon.Je créerais toujours manuellement l'ensemble de validation comme dernière période plutôt qu'une sélection aléatoire de lignes.La deuxième idée est quelque chose que vous avez remarqué : il existe des regroupements temporels, tels que plusieurs observations étroitement liées dans le temps.Vous pourriez envisager d’uniformiser la séquence temporelle en résumant les observations étroitement liées dans le temps.Les séries chronologiques se comportent mieux si la variable temporelle est mesurée uniformément, ce qui signifie que vos données devront être résumées en intervalles de temps équidistants.Comme vous le suggérez, il est temps de réfléchir à nouveau à ce qui est mesuré exactement et à la manière dont cela est mesuré.
Re : modèle de déploiementEn attendant, je pense que je ne pourrai pas adapter un modèle valide/raisonnable pour les données.
Ma première approche consistait à générer une colonne de validation statisquée par Xs.
L'indice Timeseries de @dale_lehman était utile, j'ai donc également examiné les données sous forme de série temporelle,
réalisant qu'avec le temps, la combinaison des X change. Et là encore, il me semble que "Nouveau" est différent. Oui, les X couvrent la même gamme, mais cela ne suffit pas. Je pense que la combinaison est différente dans "New", c'est-à-dire que c'est une sorte d'extrapolation. Ce ne serait pas un problème pour la régression, mais pour des méthodes comme RF, cela compte (le modèle est multidimensionnel et hautement non linéaire, donc difficile à regarder à l'intérieur).
D'un autre côté, je n'ai pas pu adapter un modèle raisonnable avec une autre méthode (neurale, Boosted Tree). Il me semble que nous n'avons pas les informations appropriées dans les colonnes X pour construire un modèle solide.
J'examinerais donc la physique du processus ou quoi que ce soit,
- comment les X peuvent/peuvent changer le Y,
- quel peut être le bruit
- et ce qui fait changer les choses au fil du temps, et incluez-le dans l'ensemble de données.
- et je suis également curieux de connaître la structure des données, il existe des groupes de lignes avec la même date et les mêmes valeurs pour certains paramètres
Ce qui m'a surpris, c'est que lorsque j'ai fait une colonne de validation stratifiée par temps, j'ai obtenu le même résultat (modèle équitable pour la première partie, pas de modèle avec les nouvelles données).
Bonne chance,
Re : modèle de déploiementMaintenant que j’y regarde de plus près, je vois qu’il s’agit de données de séries chronologiques.D’après mes premières impressions, il ne semble pas que le processus ait changé de manière significative.Cependant, je pense que le problème est que le paradigme former-valider-test n'est pas vraiment approprié pour les données de séries chronologiques.Je suggérerais de créer une période distincte (par exemple, le dernier mois du premier ensemble de données) comme ensemble de validation et de réestimer le modèle.Je suppose que les performances du modèle lors de la validation et les données jamais vues auparavant devraient être plus similaires si vous estimez le modèle de cette façon.Je suis toujours un peu préoccupé par les différences notables entre les variables X dans les deux ensembles de données - cela pourrait nécessiter une modélisation de séries chronologiques plus sophistiquée (telle que la modélisation de la saisonnalité potentielle).
Re : modèle de déploiementSalut Dale et Georg
Merci pour votre réponse.
En réalité, les différences entre les deux distributions pour chaque prédicteur ne me semblent pas si différentes (voir les histogrammes dans l'image ci-jointe. Avec bls on indique l'ensemble Training-Val-Test et exp l'ensemble jamais vu par le modèle). Peut-être que le X20 affiche un nouveau pic dans les données jamais vues qui étaient absentes auparavant. Mais les distributions restantes sont seulement moins peuplées que les précédentes.
Si la distribution des prédicteurs de l'ensemble d'apprentissage est plus large que celle du test, le modèle devrait avoir « visité » l'espace de phase occupé par le prédicteur de l'ensemble de test. Correct? Alors pourquoi devrait-il faire une mauvaise prédiction ?
Quoi qu'il en soit, j'ai confirmé (même si pour nous c'est étrange) ce que vous dites en prenant au hasard 2000 instances (au lieu des 2000 dernières instances jamais vues par le modèle de forêt aléatoire et une fois entraîné, il a été capable de prédire correctement la réponse. Donc, si une légère différence en termes de moyenne/std fait une grande différence en termes de performances de prédiction, comment pouvons-nous utiliser ces modèles en production où les signaux changent continuellement ?
Rgds.Félice/Gian
Re : modèle de déploiementJe suis d'accord pour @dale_lehman , les nouvelles données sont différentes.
J'ai pu adapter un modèle similaire, en travaillant également mal sur de nouvelles données.

La matrice Scatterplot montrant certains détails, par exemple X5 utilisant une très petite plage des données d'origine, pareil avec X11...
Dans les deux images, les nouvelles données sont sélectionnées. Peut-être que cela vous aidera à trouver la raison pour laquelle il y a une différence.

Re : modèle de déploiementPratiquement toutes les variables X (à l’exception de X12, X13 et X19) sont en moyenne significativement différentes entre les deux ensembles.Je suppose donc que les nouvelles données ne sont pas simplement un autre échantillon aléatoire de la même population, mais proviennent d'une population différente.Il n'est pas surprenant que votre modèle, qui s'adapte assez bien aux données d'origine, fonctionne si mal avec les nouvelles données, lorsque ces nouvelles données proviennent d'une population différente.
Je suppose que la question à se poser est de savoir pourquoi cela vient d’une population différente ?Apparemment, vous pensiez que les données provenaient de la même population (ou quelque chose de proche).Mais ces variables doivent être si différentes entre les deux ensembles qu’une telle hypothèse n’est clairement pas correcte.
Pour voir les différences, j'ai concaténé les 2 tables et j'ai simplement utilisé Fit Y by X, Y étant toutes vos variables X et X étant la table source créée lorsque je les ai concaténées.