Série chronologique - Méthodes naïves

introduction

Des méthodes naïves telles que l'hypothèse que la valeur prédite au temps `` t '' est la valeur réelle de la variable au temps `` t-1 '' ou la moyenne mobile des séries, sont utilisées pour évaluer les performances des modèles statistiques et des modèles d'apprentissage automatique. et souligner leur besoin.

Dans ce chapitre, essayons ces modèles sur l'une des caractéristiques de nos données chronologiques.

Nous verrons d'abord la moyenne de la caractéristique «température» de nos données et l'écart autour de celle-ci. Il est également utile de voir les valeurs de température maximale et minimale. Nous pouvons utiliser les fonctionnalités de la bibliothèque numpy ici.

Affichage des statistiques

Dans [135]:

import numpy
print (
   'Mean: ',numpy.mean(df['T']), '; 
   Standard Deviation: ',numpy.std(df['T']),'; 
   \nMaximum Temperature: ',max(df['T']),'; 
   Minimum Temperature: ',min(df['T'])
)

Nous avons les statistiques pour les 9357 observations sur une chronologie équidistante qui nous sont utiles pour comprendre les données.

Nous allons maintenant essayer la première méthode naïve, en définissant la valeur prédite à l'heure actuelle égale à la valeur réelle au moment précédent et calculer l'erreur quadratique moyenne quadratique (RMSE) pour qu'elle quantifie les performances de cette méthode.

Montrant la 1ère méthode naïve

Dans [136]:

df['T']
df['T_t-1'] = df['T'].shift(1)

Dans [137]:

df_naive = df[['T','T_t-1']][1:]

Dans [138]:

from sklearn import metrics
from math import sqrt

true = df_naive['T']
prediction = df_naive['T_t-1']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 1: ', error)

RMSE pour la méthode naïve 1: 12.901140576492974

Voyons la méthode naïve suivante, où la valeur prédite à l'heure actuelle est égale à la moyenne des périodes de temps qui la précèdent. Nous calculerons également le RMSE pour cette méthode.

Montrer la 2 ème méthode naïve

Dans [139]:

df['T_rm'] = df['T'].rolling(3).mean().shift(1)
df_naive = df[['T','T_rm']].dropna()

Dans [140]:

true = df_naive['T']
prediction = df_naive['T_rm']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 2: ', error)

RMSE for Naive Method 2: 14.957633272839242

Ici, vous pouvez expérimenter avec différents nombres de périodes antérieures également appelées `` décalages '' que vous souhaitez prendre en compte, qui sont conservées ici à 3. Dans ces données, on peut voir que lorsque vous augmentez le nombre de retards et que l'erreur augmente. Si le décalage est maintenu à 1, il devient identique à la méthode naïve utilisée précédemment.

Points to Note

  • Vous pouvez écrire une fonction très simple pour calculer l'erreur quadratique moyenne. Ici, nous avons utilisé la fonction d'erreur quadratique moyenne du paquet 'sklearn', puis pris sa racine carrée.

  • Dans pandas, df ['nom_colonne'] peut aussi être écrit comme df.colonne_nom, cependant pour cet ensemble de données, df.T ne fonctionnera pas de la même manière que df ['T'] car df.T est la fonction de transposition d'une trame de données. Utilisez donc uniquement df ['T'] ou envisagez de renommer cette colonne avant d'utiliser l'autre syntaxe.