Série temporelle - division des données et évaluation du modèle
J'ai essayé d'utiliser l'apprentissage de la machine à faire des prédictions basées sur des données de séries chronologiques. Dans l'un des stackoverflow question (createTimeSlices fonction en SIGNE de package dans la R) est un exemple d'utilisation de createTimeSlices de la validation croisée pour le modèle de formation et de réglage des paramètres:
library(caret)
library(ggplot2)
library(pls)
data(economics)
myTimeControl <- trainControl(method = "timeslice",
initialWindow = 36,
horizon = 12,
fixedWindow = TRUE)
plsFitTime <- train(unemploy ~ pce + pop + psavert,
data = economics,
method = "pls",
preProc = c("center", "scale"),
trControl = myTimeControl)
Ma compréhension est:
- J'ai besoin de partager des données d'entraînement et d'essai.
- De formation définies pour les paramètres de réglage.
- Évaluer modèle obtenu sur l'ensemble de test (à l'aide de R2 RMSE, etc.)
Parce que mes données est le temps de la série, je suppose que je ne peux pas utiliser ou initier de crève données dans la formation et l'ensemble de test. Donc, mes questions sont les suivantes: ai-je le droit? Et Si oui, - Comment utiliser createTimeSlices pour le modèle d'évaluation?
source d'informationauteur Jot eN
Vous devez vous connecter pour publier un commentaire.
Noter que la question initiale que vous avez posté, prend soin de la timeSlicing, et vous n'avez pas à créer timeSlices à la main.
Cependant, voici comment l'utiliser
createTimeSlices
de la séparation des données et ensuite de l'utiliser pour la formation et test d'un modèle.Étape 0: mettre en place les données et
trainControl
:(votre question)Étape 1: Création de la timeSlices pour l'index des données:
Ce qui crée une liste de formation et d'essais timeSlices.
Pour faciliter la compréhension, je suis de les enregistrer dans la variable distincte:
Étape 2: Formation sur le premier de la
trainSlices
:Étape 3: Essais sur la première de la
trainSlices
:Étape 4: Tracé:
Vous pouvez ensuite le faire pour toutes les tranches:
Comme mentionné plus tôt, ce genre de timeSlicing est fait par votre fonction d'origine en une seule étape:
Espérons que cette aide!!
Shambho réponse décent exemple de la façon d'utiliser le signe paquet avec TimeSlices, cependant, il peut être trompeuse en termes de technique de modélisation. Donc, afin de ne pas induire en erreur les futurs lecteurs qui souhaitent utiliser le signe d'insertion de paquet pour la modélisation prédictive à l'heure de la série (et ici je ne parle pas des modèles autorégressifs), je tiens à souligner quelques-unes des choses.
Le problème avec les séries chronologiques de données est que le regard de biais est facile si l'on n'est pas prudent. Dans ce cas, l'économie de l'ensemble de données a aligné des données à leur économique dates de présentation des rapports et de ne pas leur date de libération, qui n'est jamais le cas dans la vraie vie des applications (économique de points de données ont différents temps de timbres). Les données du chômage peut être deux mois de retard sur les autres indicateurs en termes de date de sortie, qui aurait introduit un biais de modèle dans Shambho l'exemple.
Prochain, cet exemple est uniquement de statistiques descriptives et non prédictive (prévision) parce que les données que nous voulons prévisions (unemploy) n'est pas à la traîne correctement. Il se contente de trains de modèle pour mieux expliquer la variation du chômage (qui sont aussi dans ce cas est un temps stationnaire de la série de la création de toutes sortes de problèmes dans le processus de modélisation) basée sur les variables prédictives dans le même rapport économique dates.
Enfin, les 12 mois de l'horizon dans cet exemple n'est pas un vrai multi-période de prévision comme Hyndman t-il dans ses exemples.
Hyndman de validation croisée pour le temps de la série
En fait, vous le pouvez!
Tout d'abord, permettez-moi de vous donner un article scientifique sur le sujet.
Dans R:
À l'aide du package
caret
createResample
peut être utilisé pour faire simple échantillons bootstrap etcreateFolds
peut être utilisé pour générer de l'équilibre de la croix–validation des regroupements à partir d'un ensemble de données. Donc, vous voudrez probablement utilisercreateResample
. Voici un exemple de son utilisation:Les valeurs que vous voyez dans le
createResample
fonction sont les données et le nombre de partitions à créer, dans ce cas-2. Vous pouvez aussi spécifier si les résultats doivent être stockés sous forme de liste aveclist = TRUE
oulist = FALSE
.En outre,
caret
contient une fonction appeléecreateTimeSlices
que peuvent créer les indices de ce type de fractionnement.Les trois paramètres pour ce type de fractionnement sont:
initialWindow
: le nombre initial de valeurs consécutives dans chaque ensemble de formation de l'échantillonhorizon
: Le nombre de valeurs consécutives dans l'ensemble de test de l'échantillonfixedWindow
: Une logique: si la valeur est FALSE, l'ensemble de la formation toujours commencer par le premier échantillon et l'ensemble de la formation de la taille variera en plus de données se divise.Utilisation:
Sources:
http://caret.r-forge.r-project.org/splitting.html
http://eranraviv.com/blog/bootstrapping-time-series-r-code/
http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=caret/man/createDataPartition.Rd&d=R_CC
L'accent circonflexe. La relation entre les données du fractionnement et de la trainControl