Donc, mes données ressemblent à: Les données sont sagesse de l'année, mais l'intervalle entre chaque année n'est pas cohérent. La valeur de y dépend à la fois à temps et aux fonctionnalités. Mais dans certains cas, il manque ce dont j'ai le plus besoin. Les autres caractéristiques peuvent être manquantes aussi mais surtout, elles sont toutes là. J'ai essayé d'imputer des données via Quelle est la meilleure approche de ce cas. i.e. p> Comment imputer des valeurs de la série chronologique basée sur les fonctionnalités d'entrée? strong> p> p> df.interpoler () code> fonction mais les valeurs ne correspondent pas bien à l'intervalle de la plupart des fonctions. J'ai essayé Arima, LSTM et d'autres, mais ils ne considèrent pas les fonctionnalités de saisie. J'ai également envisagé d'utiliser des techniques de régression aussi, mais elles n'intègrent pas la nature de la série chronologique des données. P>
4 Réponses :
Avez-vous pensé à mélanger les deux approches à base de fonctionnalités et à base de temps? Vous pouvez, par exemple, former la régression linéaire sur les valeurs non manquantes et obtenir des co-efficients des fonctionnalités permettant de prédire la valeur manquante, puis une moyenne mobile simple / pondérée / arima / lstm, etc. pour le composant temporel. Attribuez ensuite des poids aux résultats des deux pour proposer une prédiction provenant des caractéristiques et des séries chronologiques. P>
Si vous utilisez Tensorflow, je crois que cet exemple est assez proche de ce que vous recherchez. Il montre comment inclure plusieurs fonctionnalités de votre réseau de neurones. Je pense que la section que vous rechercheriez est un modèle multivariatifs, mono-marche: p>
question intéressante, il n'y a pas de règle ni une bonne réponse à votre problème ... P>
semble que vous voudriez prédire les points T + N à partir de T + 1, où T est votre dernier point connu. P>
Si oui, vous devez: P>
Il est important de supprimer des valeurs cibles inconnues (Y avec NANS). Mais ce faisant, vous perdrez des informations importantes, Par conséquent, une solution est de créer deux modèles. Un pour l'imputation de données pour remplir les valeurs inconnues y. La seconde pour la prévision des valeurs futures de y. P>
Le premier modèle peut être représenté sous forme d'auto-effilement, où les fonctions représentent l'heure actuelle. Dans d'autres mots, compte tenu des caractéristiques de prédiction Y. Où N et Y ont été obtenus à partir du même temps t (même rangée). P>
Le deuxième modèle peut prédire l'avenir (prévision), par conséquent après avoir saisi les valeurs de y manquantes, prédire le futur t + N, où n existe {1 -> + Inf}. P>
Une autre bonne approche pour faire face aux valeurs manquantes consiste à créer trois modèles au lieu de deux. P>
Le premier est celui mentionné ci-dessus à l'imputation des données. P>
Après avoir rempli les valeurs cibles manquantes, utilisez la nouvelle matrice pour entrer un deuxième auto-effileur. P>
Utilisez l'état caché de la seconde AE comme entrée sur le troisième modèle, de cette façon, vous pouvez avoir des valeurs manquantes et que l'AE pourrait obtenir une représentation comprimée de ces valeurs en utilisant le mieux pour prédire l'avenir. P>
La meilleure architecture varie d'un problème à un problème. Par exemple, dans votre cas, vous pouvez simplement laisser tomber les valeurs cibles manquantes et obtenir un bon modèle final. P>
Un ajustement nécessaire doit être nécessaire pour saisir les valeurs de fonctionnalité manquantes, mais j'essaierais avec des valeurs manquantes avant d'ajouter du bruit. Si nécessaire, vous pouvez ajouter la moyenne, la médiane, la min ou max d'une fenêtre de roulement (utilisation de la méthode de roulement). P>
Vous pouvez créer un problème de régression créer une cible à l'aide d'une fonction de plomb. Ajoutez une variable qui identifie le nombre de [Périodes_Ahead] la variable cible. Ensuite, vous utilisez périodes_ahead code> en tant que fonctionnalité d'entrée dans le modèle de régression. L'inconvénient ici est que vous devez également ajouter des fonctionnalités à la traîne ou créer des différences de temps (transformations ciblées) pour rendre votre cible à la place manuellement au lieu de s'appuyer sur un algorithme de série chronologique. P>