Est-il nécessaire de détrôner et de recycler les données de séries chronologiques lors de l'utilisation de méthodes d'apprentissage automatique?


9

Par exemple:

Je veux prévoir les valeurs futures d'une série chronologique sur la base des valeurs précédentes de plusieurs séries chronologiques à l'aide d'un ANN et / ou SVM. Les entrées seront des valeurs décalées de chaque série chronologique, et les sorties seront des prévisions à un pas (les prévisions avec d'autres horizons se feront en "déplaçant" les prévisions vers l'avant en utilisant les prédictions précédentes).

Maintenant, les SVM et les ANN ne devraient-ils pas être capables d'apprendre les tendances et les cycles? Ne seraient-ils pas capables d'apprendre des choses comme ", toutes choses étant égales par ailleurs, la sortie de cette série devrait être 2x la sortie précédente?" Ou, si je fournis une variable catégorielle pour le mois, "puisque c'est janvier, divisez la prédiction que j'aurais faite par 2?"

Est-ce que la tentative de décycle et de détérioration des données entraînerait l'imposition de plus de biais que nécessaire?


1
Du point de vue de l'apprentissage automatique et de la prédiction, essayez-le de plusieurs façons et voyez ce qui fonctionne le mieux - c'est-à-dire, donne la meilleure prédiction.
B_Miner

Réponses:


6

Avec les algorithmes d'apprentissage automatique, il est souvent avantageux d'utiliser la mise à l'échelle ou la normalisation des fonctionnalités pour aider l'algorithme à converger rapidement pendant la formation et pour éviter qu'un ensemble de fonctionnalités n'en domine un autre. Prenons, par exemple, le problème de la prévision des cours boursiers. Si vous incluez des actions à prix élevé telles qu'Apple ou Microsoft ainsi que des actions penny, les fonctionnalités de grande valeur que vous extrairez nécessairement d'Apple et des prix Microsoft submergeront celles que vous extrayez des actions penny, et vous ne vous entraînerez pas sur un pomme à pomme (sans jeu de mots!), et le modèle entraîné résultant pourrait ne pas se généraliser très bien.

Cependant, à mon humble avis, "tenter de recycler et de détruire les données" serait une très bonne chose à faire. Extraire les diverses composantes cycliques et de tendance et les normaliser en soustrayant leurs moyennes respectives et en les divisant par leurs écarts-types placerait toutes les données de toutes les séries chronologiques dans la même plage approximative, puis vous vous entraîneriez à aimer les données qui, lorsque rééchelonné en inversant la normalisation, généraliserait probablement beaucoup mieux à des fins prédictives.

De plus, pour n'importe quelle série temporelle, il peut arriver que la tendance submerge la composante cyclique, vous pouvez donc finir par vous entraîner sur des données de tendance uniquement qui ne fonctionneront certainement pas bien sur des séries chronologiques cycliques, et vice versa. En séparant les deux composants et en vous entraînant sur chacun avec des SVM ou NN séparés, puis en recombinant les deux prédictions, vous pourriez vous retrouver avec un algorithme plus précis et plus facilement généralisable.


Oui, j'ai oublié que la plupart (toutes?) Des méthodes de normalisation et de régularisation supposent des distributions stationnaires. La séparation des composants et la création de modèles additifs sont également une bonne astuce.
ektrules

1
Cependant, maintenant je m'interroge sur la perte d'informations qui accompagne les transformations stationnaires. Qu'en est-il lorsque les valeurs réelles non différenciées sont importantes? Par exemple, si vous avez une série chronologique de dette et de PIB, alors la différence les deux, la méthode ML ne peut que faire apprendre les effets des changements, et les effets peuvent être différents si la dette est de 10% du PIB contre 200%. (bien sûr, vous pouvez ajouter une fonction PIB / dette).
ektrules

2

Dans quelle mesure prévoyez-vous par rapport aux délais sur lesquels la tendance ou les cycles opèrent? Zhang, Qi 2005 - Les «prévisions de réseaux neuronaux pour les séries chronologiques saisonnières et tendancielles» trouvent bénéfiques la désaisonnalisation et la décroissance (DSDT), mais leurs délais de prédiction sont similaires à leurs échelles de temps tendance / saisonnières. En revanche, j'ai travaillé sur des données où je fais des prévisions à court terme (par exemple 1 jour) et la tendance / saisonnalité n'agit que sur des périodes beaucoup plus longues. Le DSDT améliore encore ma précision prédictive dans une certaine mesure, mais le ML peut assez bien se débrouiller seul sans DSDT, car la tendance / la saisonnalité n'est en fait pas pertinente pour les derniers points de données.


1

Je suis presque sûr que vous utilisez de mauvais outils ici.

Les méthodes ML sont créées pour l'interpolation (comme la prédiction des séries chronologiques A à partir des séries chronologiques B et C); pour les extrapolations, nous avons des chaînes et des amis de Markov.

Le problème avec votre approche est qu'il est extrêmement facile d'ajuster le modèle dans ces conditions et, pire encore, il est difficile de repérer cela (la validation croisée normale échouera, il est donc très difficile d'adapter les paramètres de la bonne manière, etc. .).
Ajouter du temps explicite aux prédicteurs est également une mauvaise idée - j'ai vu des modèles ajustés uniquement sur le temps et la décision avec une précision de 90% sur la validation croisée et des suppositions aléatoires sur les tests de données post-formation. Si vous avez besoin de temps, il est préférable de l'inclure sous la forme d'une série de descripteurs de cycle comme le jour de la semaine ou les secondes après minuit, sans jamais dépasser ni même approcher la durée de votre série d'entraînement.


Vous avez peut-être raison d'utiliser les mauvais outils, IDK. Je n'ai pas vraiment trouvé de documents en ligne utilisant la même procédure que celle à laquelle je pense. En fait, j'essaie de prédire une série chronologique à partir de plusieurs autres séries chronologiques (sur la même période), mais j'aimerais également prédire l'avenir (à quoi sert de prédire une valeur lorsqu'elle est déjà disponible sur le moment de la prédiction?). Pour faire les prédictions glissantes, je devrai cependant prévoir chaque série chronologique. Je suppose que ce que j'essaie de faire est quelque chose comme l'autorégression vectorielle, mais avec des approches ML. Cette approche ne fonctionnera-t-elle pas bien?
ektrules

Pourquoi le temps en tant que variable prédictive (pour prévoir la tendance plutôt que la cyclicité) fonctionne-t-il si mal?
max

1
Comme je l'ai écrit: 1 / ML est mauvais à l'extrapolation, 2 / time identifie de manière unique chaque objet, ce qui permet un surapprentissage sévère et empêche la poursuite des interactions réelles.

1
@mbq Pour (1), je pensais que seules les méthodes locales sont terribles à extrapoler, tandis que les méthodes globales pourraient être correctes. Mais je peux voir comment les séries chronologiques / MC pourraient être plus appropriées. Pour (2) cependant, je ne suis pas d'accord. L'utilisation d'un identifiant unique conduirait à un bon score d' entraînement mais à un score CV horrible . Vous devriez donc pouvoir repérer les mauvais modèles. Le problème, je pense, est que vous pourriez encore suréquiper quelque peu le CV traditionnel, car vous utilisez le temps futur. Peut-être qu'un test de train divisé par le temps, avec un test à la fin, aurait plus de sens.
max

@max Oui, je pensais au CV qui divise les moments au hasard; l'utilisation de blocs de temps continus vous aidera.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.