Projet sur l'apprentissage d'un filtre de Kalman pour séries chronologiques multivariées

Un modèle simple mais quand même assez puissant d'un processus multivarié en temps discret est une variante à état continu du modèle de Markov caché (HMM), dont un des composantes (la prédiction une fois entraîné) s'appelle aussi un filtre de Kalman. On l'appelle aussi modèle linéaire dynamique. C'est un modèle probabiliste pour une séquence X_1,... X_t , .... Le modèle introduit une variable cachée Z_t qui est un vecteur réel, pour chaque t.. Comme dans les HMMs on suppose que la séquence des Z_t est markovienne, i.e. P(Z_t|Z_{t-1},Z_{t-2},...Z_1) = P(Z_t|Z_{t-1}), et que les X_t sont indépendants des X_s (s!=t) quand Z_t ou Z_s est donné. De plus on suppose que les (X_t,Z_t) et les (Z_t,Z_{t-1}) sont conjointement Gaussiens. On peut appliquer l'algorithme EM pour estimer les paramètres de ces Gaussiennes, avec une factorisation efficace des calculs qui est décrit dans les articles en référence.

Pour ce projet vous allez implanter EM pour filtre de Kalman (l'algorithme d'apprentissage) ainsi que l'algorithme de prédiction, qui permet de prédire P(X_{t+1}|X_t,...X_1). Vous allez comparer la log-vraisemblance hors-échantillon (obtenue par validation séquentielle) avec celle donnée par un modèle supervisé ordinaire qui prédit le prochain élément de la série à partir des k derniers (e.g. régression Bayesienne comme dans le TP 2, ou réseau de neurones). Pour la plupart des applications il serait aussi utile de comparer l'erreur de prédiction quadratique (en comparant l'espérance conditionnelle prédite par le modèle à la valeur observée).

Vous allez faire ces comparaisons sur au moins deux ensembles de données temporelles.

Une variante possible: vous êtes seulement intéréssé à prédire une partie des éléments de X_{t+1} (la variable dépendente). Ca ne change pas grand chose au code, seulement qu'on va marginaliser la prédiction à ce sous-vecteur.

Références

@techreport{Zoubin96,

author = {Z. Ghahramani and G.E. Hinton},

title = {Parameter estimation for linear dynamical systems},

institution = {University of Toronto},

year = 1996,

number = {Technical Report CRG-TR-91-1},

}