Upload
doanhuong
View
229
Download
0
Embed Size (px)
Citation preview
UNIVERSITE PARIS DAUPHINE / PARIS 2 PANTHEON-ASSAS MASTER 272 IEF / ISF
Réseaux de neurones et séries temporelles :
une application sous SAS.
Nicolas Arnoult, 2011
Professeur sponsor : Joseph Rynkiewicz
RÉSUMÉ. Cet article a pour objectif de présenter une méthode permettant
d’utiliser les réseaux de neurones pour répondre à un besoin d’affiner les
prévisions de séries temporelles. Il propose une méthodologie pour aborder et
répondre, étape par étape, aux problèmes pratiques et théoriques d’utilisation
et de programmation des perceptrons multicouches.
ABSTRACT. The objective of this paper is to present a method to use artificial
neural networks to improve time series forecasting. It suggests a methodology
to deal, step by step, with practical and theoretical problems of these models. It
also proposes programming solutions to answer this problematic.
MOTS-CLÉS : Réseaux de Neurones Autorégressifs, Réseaux de Neurones à
Moyenne Mobile, Perceptron Multicouches, Econométrie Non Linéaire.
KEYWORDS: Neural Autoregressive Model, Neural Network Modeling, Neural
Moving Average Model, Time Delayed Neural Network, NAR, NARMA,
NARMAX, Multilayer Perceptron.
REMERCIEMENTS: Je tiens à remercier Joseph Rynkiewicz, maître de conférences à l’université Paris 1 Panthéon Sorbonne, pour m’avoir apporté son expérience sur ce sujet.
Table des matières
1. INTRODUCTION .................................................................................................. 1
2. PRINCIPES GENERAUX ........................................................................................ 2
2.1. LE RESEAU BIOLOGIQUE ......................................................................................... 2
2.2. LE PERCEPTRON MULTICOUCHES ............................................................................. 3
2.3. LE PERCEPTRON MULTICOUCHES APPLIQUE AUX SERIES TEMPORELLES ............................. 4
3. PRINCIPES D’ESTIMATION .................................................................................. 6
3.1. HYPOTHESES ....................................................................................................... 6
3.2. RECHERCHE DU MODELE DOMINANT ET ELAGAGE ....................................................... 7
4. TECHNIQUES DE PROGRAMMATION ................................................................ 10
4.1. DEFINITION D’UNE ARCHITECTURE ......................................................................... 10
4.2. RECHERCHE DU MODELE DOMINANT ...................................................................... 11
4.3. ELAGAGE .......................................................................................................... 12
4.4. REPRESENTATION GRAPHIQUE .............................................................................. 14
5. APPLICATION ................................................................................................... 17
5.1. PRESENTATION DES DONNEES ............................................................................... 17
5.2. LE MODELE LINEAIRE ........................................................................................... 18
5.3. LE MODELE NEURONAL ........................................................................................ 19
6. EXTENSIONS ..................................................................................................... 25
7. CONCLUSION .................................................................................................... 26
8. REFERENCES ..................................................................................................... 27
9. ANNEXES .......................................................................................................... 28
9.1. IMPORTANCE DES CONSTANTES DANS LE MODELE NEURONAL ...................................... 28
9.2. APPLICATION AU MODELE NARMA ....................................................................... 30
9.3. COMPLEMENTS D’INTERPRETATION ....................................................................... 32
1
1. Introduction
L’utilisation des réseaux de neurones a longtemps été restreinte à résoudre des problèmes de
classifications en analyse de données. Récemment, des études ont montré que les réseaux de
neurones de la forme des Perceptrons Multicouches (Multi-Layer Perceptron) pouvaient, s’ils
étaient suffisamment bien spécifiés, réduire significativement l’erreur de prévision des séries
temporelles.
Dans cet article, nous nous proposons de présenter et d’utiliser l’une de ces méthodes, qui
consiste à éviter le sur-apprentissage en considérant le MLP comme un modèle statistique à
part entière. Nous utilisons alors des critères d’information permettant de trouver le réseau
optimal.
Nous présentons également des éléments de programmation permettant de rechercher ce
réseau grâce à un algorithme forward/backward, ainsi qu’une technique simple pour
représenter graphiquement le réseau.
Nous choisissons par la suite d’appliquer le modèle ainsi construit sur un exemple concret, et
de comparer le pouvoir prédictif du modèle neuronal avec celui du modèle linéaire.
Enfin, nous proposons des axes d’évolution du programme pour estimer un réseau à sortie
multidimensionnelle ou à plusieurs couches cachées.
2
2. Principes généraux
2.1. Le réseau biologique
Les réseaux de neurones pour la régression sont inspirés du fonctionement des
neurones biologiques. Le neurone reçoit par l’intermédiaire des dendrites de nombreuses
informations. Nous appelerons ces informations « inputs ». Les inputs sont regroupés dans le
noyau. Une nouvelle information est transmise par une branche de sortie, l’axone, aux autres
neurones connectés à ce réseau. Un neurone transmet l’information lorsque le stimuli reçu est
supérieur à un seuil. Nous appellerons ce seuil « fonction d’activation ». A la fin, toutes ces
informations sont regroupées en une ou plusieurs informations dont notre cerveau tire une
interprétation. Nous appelerons ces informations finales « outputs ». Le développement du
réseau neuronal s’effectue au fur et à mesure des expériences vécues par un individu. En
résumé, même s’il ne dispose pas de toute l’information, le cerveau est capable de trouver une
réponse aux stimulis qu’il reçoit.
Figure 1 : Représentation d’un neurone biologique
Lorsque nous modélisons des séries temporelles, nous ne possédons pas la totalité de
l’information qui nous serait nécessaire pour établir des prévisions fines. Cependant, en
faisant appel à l’historique que nous possédons et en combinant toutes ces informations, nous
pouvons réduire significativement la marge d’erreur de nos prévisions.
3
2.2. Le perceptron multicouches
Le MLP est un réseau de neurones composé d’une succession de couches. On appelle
« couche » un ensemble de neurones où l’information ne circule pas directement entre ceux-
ci. Le réseau fonctionne en établissant des connexions entre les différentes couches.
On appelle couche d’entrée, les informations lues par le réseau (inputs). Sur cette
couche, un neurone correspond à un signal d’entrée. Une couche de sortie fournie la réponse
du réseau (output). Entre ces deux couches, des couches dites « cachées » participent au
tranfert de l’information. La figure 2 fournit un exemple de la représentation d’un perceptron
multicouches.
Figure 2 : Représentation d’un MLP
Comme nous pouvons le constater, de nombreuses couches cachées avec un nombre
de neurones différents dans chaque couche, peuvent être envisagées. Dans le cas du MLP ci-
dessus, la sortie est dite multidimensionelle (2 outputs).
4
2.3. Le perceptron multicouches appliqué aux séries temporelles
Nous considérons par la suite un (p,K) perceptron multicouches, avec une unité de
sortie linéaire dans la couche de sortie, p unités linéaires sur la couche d’entrée et K unités sur
la couche cachée munies d’une fonction d’activation sigmoïde . Nous choisissons
volontairement dans un premier temps de présenter un modèle avec une seule couche cachée
et à sortie unidimensionelle.
Le modèle suivant correspond au cas d’un modèle NAR (Neural Autoregressive
Model). Les retards choisis en entrée sont ceux de l’analyse linéaire. La représentation du
MLP dans le cas d’une série temporelle AR(p) prend alors la forme générale représentée par
la figure 3.
Figure 3 : Représentation d’un modèle NAR (p,K)
Soit :
- le poids de la constante reliée au neurone caché j.
- le poids de la constante cachée reliée à l’output.
- le poids de l’input relié au neurone caché j.
- le poids du neurone j relié à l’output.
- les résidus.
Le modèle s’écrit alors comme une fonction non linéaire:
(1)
5
Il s’étend aisément à un modèle NARMA (Neural Autoregressive Moving Average
Model) en réinjectant les résidus du premier modèle en input, ou NARMAX en ajoutant des
variables exogènes en input. L’expression générale peut alors se formaliser comme ceci :
(2)
Avec l’input numéro i du modèle.
Le choix de la fonction sigmoïde résulte plus d’un choix stratégique en termes de
temps de calcul et d’interprétabilité. En effet, Rynkiewicz (2000) montre qu’il revient
finalement au même de considérer différentes fonctions d’activations sigmoïdes. Ainsi, nous
choisirons la fonction tangente hyperbolique définie ci-dessous :
(3)
Cette fonction présente l’intérêt d’être aisément dérivable (équation 4) et d’être
bijective sur ]-1 ;1[. Nous reviendrons sur l’intérêt de cette propriété dans la phase d’analyse
du modèle optimal.
(4)
La fonction d’erreur du modèle statistique général à une couche cachée s’écrit donc de
la manière suivante :
(5)
Avec W le vecteur de tous les paramètres
La fonction d’erreur est continue, dérivable au premier et second ordre.
Le minimum de la fonction d’erreur est trouvé grâce à l’algorithme itératif de Newton
Raphson. Cette méthode particulièrement efficace ne dispense pas de prendre des dispositions
pour gérer la présence d’éventuels minimas locaux et de non convergence. Ainsi, nous
choisissons d’initialiser la valeur des paramètres de manière aléatoire. Le nombre
d’initialisations peut être modifié à travers le programme que nous mettons en place.
Rynkiewicz (2001) montre qu’une dizaine d’initialisations suffisent à éviter les minimums
locaux. Enfin, pour limiter le temps de calcul, nous choisissons de stopper le nombre
d’itérations à 100 dans le cas où cet algorithme n’aurait toujours pas convergé. Notons que le
programme permet d’utiliser d’autres algorithmes d’optimisation présents dans la procédure
Neural.
nloptions technique=&method. ;prelim 10 preiter=100 pretech=&method.;
6
3. Principes d’estimation
3.1. Hypothèses
Les données utilisées sont standardisées par le calcul suivant :
(6)
La fonction d’activation est très sensible à la forme des données et passer par cette
étape permet de se placer dans un cadre correct du point de vue de l’estimation. Arnoult et
Issaad (2011) ont montré dans un projet universitaire que la qualité de la prévision pouvait en
être fortement affectée. Pour effectuer l’opération inverse à la fin du programme, les
statistiques de la moyenne et de l’écart type sont retenues.
/*retain mean and std before standardization*/ proc means data = &table. mean std noprint; var &target.; output out=stat mean=_mean_ std=_std_; run;quit; data _null_; set stat; call symputx("mean",_mean_); call symputx("std",_std_); call symputx("freq", _FREQ_); run; /*****************************************/ /*standardize data*/ proc standard data=&table. out=&table._std mean=0 std=1; var &target. &exvar.; run; /****************/
Il est également nécessaire de vérifier plusieurs hypothèses pour utiliser les réseaux de
neurones avec des séries temporelles. Dans un premier temps, il convient d’étudier les
propriétés du modèle linéaire usuel. Les hypothèses de non autocorrélation, de stationarité,
etc… doivent être vérifiées. Une fois le modèle linéaire établi, nous utilisons les variables
significatives en inputs dans le réseau. Il existe cependant une exception : dans le modèle
linéaire, si toutes les données sont centrées, alors la constante ne sera pas significative. En
revanche, dans un modèle non linéaire, l’utilisation d’une constante et/ou d’une constante
cachée peut s’avérer significative. Nous montrons en annexe 1 que l’oubli de ces constantes
peut nettement dégrader la prévision.
7
La représentation d’un modèle linéaire à a priori d’autres avantages. Elle permet par
exemple de donner une meilleure interprétabilité au réseau. En effet, celle-ci s’avère de plus
en plus difficile à mesure que le réseau possède un nombre de neurones important.
3.2. Recherche du modèle dominant et élagage
Définition : On entend par « modèle dominant » le réseau d’architecture maximal en
termes de nombre de neurones cachés. Il comprend au moins tous les paramètres significatifs
du modèle.
Si l’on ne choisit pas un critère d’arrêt de l’apprentissage du modèle, celui-ci est alors
totalement sur-paramétré (augmentation du nombre de neurones jusqu’à avoir un fit
pratiquement parfait). Deux techniques sont principalement utilisées pour stopper
l’apprentissage du réseau si l’on utilise des séries temporelles.
La technique la plus classique, l’« early stopping », se rapproche de la technique
utilisée lorsque l’on réalise un score. La base de données est séparée en trois. Une partie de la
base est utilisée comme base d’apprentissage. Il s’agit de l’échantillon sur lequel les
paramètres sont estimés. Le deuxième échantillon est celui de validation. A chaque fois
qu’une itération est effectuée dans l’estimation du réseau (ajout d’un neurone
supplémentaire), l’erreur quadratique moyenne est calculée sur cette base de validation. Dès
que la moyenne des erreurs augmente, l’estimation est stoppée. Il s’agit donc d’un algorithme
de sélection forward. Les poids sont ensuite élagués suivant une méthode d’élagage dite
backward. Le lien faisant le plus baisser la moyenne quadratique des erreurs est éliminé
jusqu’à ce que ce critère ne baisse plus. En pratique, les résultats de cette méthode sont
satisfaisants. En revanche, cette méthode est extrêmement sensible au choix du découpage de
la base de données. Par ailleurs, elle recquiert également un nombre d’observations très
important, ce qui est rarement le cas lorsque l’on utilise des séries temporelles au sein d’une
entreprise. C’est pourquoi nous choisissons d’utiliser la deuxième méthode.
Cette deuxième méthode est basée sur le fait que les réseaux de neurones sont des
modèles statistiques à part entière et que, par conséquent, des critères usuels en séries
temporelles peuvent être utilisés. Mangeas et Yao (1997) et Rinkiewicz et al (2001) montrent
que deux critères consistant théoriquement peuvent être utilisés dans la recherche du modèle
dominant. Il s’agit des critères BIC et BIC* définis ci-dessous :
Soit :
- CR le carré des résidus engendré par le minimum de la fonction d’erreur
- N le nombre d’observation
- m le nombre de paramètres estimés par le modèle
(7)
8
(8)
Avec une constante.
La méthode de sélection du nombre de neurones avec cette technique est similaire à
celle de l’ « early stopping ». Un neurone est ajouté à la couche cachée tant que cela fait
baisser le critère d’infomation. Ainsi, théoriquement, comme Mangeas et Yao (1997) le
montrent, le modèle converge presque sûrement vers le modèle dominant. Mangeas (1996) a
montré par expérimentation que le critère d’information est une fonction convexe du nombre
d’unités cachés. Nous ne risquons pas de tomber sur un minimum local. Par la suite, c’est à
nouveau la méthode d’élagage backward qui est appliquée.
On remarque que ces deux critères pénalisent plus ou moins fortement le nombre de
paramètres du modèle. C’est cette pénalisation qui va permettre d’éviter un sur-apprentissage.
En pratique, est fixé comme étant de même ordre de grandeur que la variance de l’erreur
résiduelle. Rinkiewicz (2011) montre cependant que lorsque le nombre d’observations est trop
faible (N < 500), autoriser ce paramètre à bouger à chaque étape de l’estimation revient très
souvent à surparamétrer le modèle. Ainsi, si N < 500, nous considérons dans notre
programme ce paramètre comme fixé et déterminé par la variance de l’erreur résiduelle de la
première étape d’estimation (un seul neurone caché). Dans le cas contraire, évolue à chaque
étape du processus d’estimation. Dans notre programme, la macro score à chaque étape la
table sur laquelle le réseau a appris pour calculer cette erreur résiduelle. Grâce aux résidus
estimés, il est ainsi possible de calculer aisément ces deux critères d’information.
score data=&table. out=pred_&z. outfit=fit_&z. nodmdb;
Dans l’extrait de programme ci-dessous :
- &d.=1 et &c.=1 si une constante et/ou une constante cachée sont respectivement
choisies en option de la macro, 0 sinon.
- &nbentrees. est le nombre d’input, c’est une information que l’utilisateur doit saisir
dans l’appel de la macro.
- &freq. est le nombre d’observation de la base, calculé automatiquement par la macro.
/*******Compute the BIC*******/ %if &criterion.=bic %then %do; data bic_&z.; set pred_&z.; CR= (R_&target.)**2; keep CR; run; proc sql ; create table bic_neural as
9
select count(CR) as n, ((&nbentrees.+&d.)*(&z.)+(&z.+&c.)) as nb_param, sum(CR) as SCR from bic_&z.; create table selection_&z. as select log(sum(SCR)/n)+((log(n)/n)*nb_param)as bic, &z. as hiddenlayer from bic_neural ; quit; %end; /****** End of BIC computation ******/ /*********Compute the corrected BIC*************/ %if &criterion.=bic_corr %then %do; proc sql; create table SCR_&z. as select sum((R_&target.)**2) as SCR from pred_&z.; create table bic_&z. as select (avg(R_&target.))**2 as esp_square, R_&target. as R_&target. from pred_&z.; %if %sysevalf(&freq. < 500) %then %do; create table bic_neural as select count(R_&target.) as n, ((&nbentrees.+&d.)*(&z.)+(&z.+&c.)) as nb_param, (sum((R_&target.-esp_square)**2))as VAR from bic_1; %end; %if %sysevalf(&freq. ge 500) %then %do; create table bic_neural as select count(R_&target.) as n, ((&nbentrees.+&d.)*(&z.)+(&z.+&c.)) as nb_param, (sum((R_&target.-esp_square)**2))as VAR from bic_&z.; %end; create table selection_&z. as select ((SCR/n)+(VAR/n)*(log(n)/n)*nb_param) as bic, &z. as hiddenlayer, (VAR/n)as gamma from bic_neural, SCR_&z. ; quit; %if %sysevalf(&freq. < 500) %then %do; data bic_neural0; set bic_neural; drop nb_param; run; %end; %end; /**********End of corrected BIC computation*************/
Rinkiewicz (2011) montre également un troisième critère d’information consistant qui
pénalise plus fortement le nombre de paramètres. Celui-ci est défini ci-dessous :
(9)
Pour le moment, la macro ne permet pas d’estimer le modèle via cette technique. Il
s’agit là d’un premier axe d’évolution possible.
10
4. Techniques de programmation
4.1. Définition d’une architecture
Pour établir l’architecture du réseau, nous utilisons la procédure « Neural » du module
SAS Enterprise Miner. Nous choisissons d’identifier toutes les variables en entrée du réseau,
comme dans l’équation 2 .
Ainsi, i&j. est l’input numéro j et h&z. le neurone caché numéro z du réseau. On
observe dans l’extrait de la macro qui suit que la fonction d’activation est bien de la forme
tangente hyperbolique (cf équation 3). On observe également que l’on a choisi de ne
conserver qu’une seule couche cachée.
/*Begin the loop for stage 1*/ %do z=1 %to & maxhiddenneural.; …… /*****Estimation procedure*******/ Title "Neural &z. hidden nodes(s)"; Proc Neural data=&table. dmdbcat=outcat; /* Read data mining data set*/; %do i=1 %to &nbentrees.; input &&var&i.. / level=int id=i&i.; %end; archi mlp hidden=&z. direct; %do i=1 %to &z.; hidden 1/id=h&i. act=tanh comb=lin &constantehid.; %do j=1 %to &nbentrees.; connect i&j. h&i.; /* Connect the nodes */ %end; %end; target &target. / level=int error=normal id=out &constante.; %do i=1 %to &z.; connect h&i. out;/* Connect the nodes */ %end; …… run;quit; /*******************************/ …… %end;
11
4.2. Recherche du modèle dominant
La macro utilise par défaut un nombre de neurones cachés maximum tel que le nombre
de connexions soit inférieur au nombre d’observations. Le nombre de neurones cachés
maximum est ainsi défini par la règle suivante :
(10)
Avec P le nombre d’inputs, Kmax le nombre de neurones maximum et N le nombre
d’observations de la base. si une constante est ajoutée dans la couche cachée,
si une constante est ajoutée en input. Pour simplifier notre macro programme,
nous fixons ces variables binaires à 1.
En pratique, il est assez rare de voir un réseau dépassant plus de 10 unités sur la
couche cachée. Si ce nombre est supérieur, les temps de calcul peuvent devenir extrêmement
longs.
/*define the maximum number of hidden neurons for the loop*/ data _null_; call symputx ("maxhiddenneural",int(%sysevalf((&freq.-1-1)/(&nbentrees.+1+1)))); run; /********************************************************/
Le calcul du critère d’information tel qu’il est décrit est effectué dans une boucle allant
de 1 jusqu’au nombre de neurones autorisé (cf équation 10). Dans le cas où le critère
d’information à l’étape suivante remonte, une procédure de sortie est alors activée pour que la
macro ne retienne que le modèle dominant.
%do z=1 %to &maxhiddenneural.;
… /*retain best BIC or BICC at each step*/ data _null_; set selection_&z.; call symputx ("bic&z.",bic); run; /******************************/ /*escape procedure*/ %if &z. ne 1 %then %do; %if %sysevalf (&&bic&lagz.. <= &&bic&z..) %then %do; %let hiddenlayer=&lagz.;/*retain the number of hidden layer for next stage*/ %let connected_bic&lagz.=&&bic&lagz..; %goto next; %end;
12
%end;
… %let lagz=&z.; %end; %next:
Nous avons donc réussi à estimer un modèle dominant. Le problème est désormais
d’initialiser l’élagage du réseau suivant les critères que nous avons déjà choisis.
4.3. Elagage
Nous avons choisi d’élaguer le réseau suivant une méthode de sélection dite backward.
La technique consiste à éliminer à chaque fois une connexion dans le réseau et à récalculer le
critère d’information tant que celui-ci décroît. Le programme prend en compte le cas
particulier où l’élimination d’une seule connexion n’améliorerait pas le critère d’information
pour sortir immédiatement de la boucle.
Pour bien comprendre l’extrait de programme qui suit, rapellons que le processus
d’élagage se déroule en plusieurs étapes successives :
- Dans la première étape, (p-1)K modèles sont estimés (on supprime une connexion
différente à chaque fois) et un critère d’information est calculé.
- Le minimum ces critères d’informations est comparé au critère du modèle
dominant. Si ce dernier est inférieur, on passe à l’étape suivante, sinon, on sort de
la boucle et on valide le modèle dominant comme étant le modèle optimal.
- Dans l’autre cas, la connexion précédemment éliminée est retenue. On estime dans
la seconde étape (p-2)K modèles. En effet, on teste une seconde élimination dans
le réseau. Un critère d’information par modèle est à chaque fois calculé.
- On retient à nouveau le minimum de ces critères en le comprant à celui retenu en
première étape. Si celui-ci est inférieur, la boucle continue de s’exécuter et une
nouvelle itération est faite. Dans le cas contraire, le modèle avec une connexion
éliminée est validé.
/*initializing the loop*/ %let step = 1; %let maxstep= %sysevalf(&nbentrees.*&hiddenlayer.-1); /***********************/ %do %until(&step. = &maxstep. ); %Do z=1 %to &hiddenlayer.; %do w=1 %to &nbentrees.; /*************Estimation procedure*************/ title "Neural &hiddenlayer. hidden nodes(s) connection deleted: i&w. h&z. step=&step."; proc neural data=&table. dmdbcat=outcat;
13
%do i=1 %to &nbentrees.; input &&var&i.. / level=int id=i&i.; %end; archi mlp hidden=&hiddenlayer. direct; %do i=1 %to &hiddenlayer.; hidden 1/id=h&i. act=tanh comb=lin &constantehid.; %do j=1 %to &nbentrees.; connect i&j. h&i.; %end; %end; target &target. / level=int error=normal id=out &constante.; %do i=1 %to &hiddenlayer.; connect h&i. out; %end; %if &step=1 %then %do; cut i&w. h&z.; %end; %if &step ne 1 %then %do; %do r=1 %to &lagstep.; cut i&&deletedentry&r.. h&&deletedhidden&r..; %end; cut i&w. h&z.; %end; …… run;quit; /**********************************************/ …… %end; %end; %end;
14
4.4. Représentation graphique
La représentation graphique permet d’analyser rapidement comment est construit le
réseau et d’en donner une première interprétation.
La première partie du programme permet de créer une table regroupant les noms des
inputs, des neurones cachés (de H1 à Hk), de l’output et de positionner ces noms au bon
endroit sur le futur graphique. Pour que le réseau soit représenté de manière bien symétrique,
il faut déterminer la position graphique de chaque neurone. Sur l’axe des abcisses, la couche
inputs prend la valeur 1, la couche cachée la valeur 2 et la couche de sortie la valeur 3. Sur
l’axe des ordonnées, les positions des différents neurones sont déterminées ainsi :
Rappel : P est déterminé par une analyse linéaire, K par la recherche du modèle
dominant.
/*retain labels to plot the network*/ %let positionf= %sysevalf((&nbentrees.+1)/2); data my_labels; retain xsys ysys '2' function 'label' position '1' style "'Arial/bo'" color 'black' ; text="Intercept";x=1;y=0;output; text="HidIntercept";x=2;y=0;output; %do i=1 %to &nbentrees.; text=" &var&i.. "; x=1; y=&i.; output; %let positionh= %sysevalf((&nbentrees./2)+1-(&hiddenlayer./2)); %do j=1 %to &hiddenlayer.;/*nombre hidden*/ text=" H&j. ";x=2; y=&positionh.;output; %let trans=%sysevalf(&positionh.); %let positionh=%sysevalf(&trans.+1); %end; %end; text=" &target. ";x=3; y=&positionf.;output; run; /**************************************/
La seconde étape est de créer dans une table les chemins parcourus par chaque input
jusqu’à l’output. La variable sur l’axe des abcisses, y, prend les valeurs 1, 2 et 3. Sur l’axe des
ordonnées, chaque chemin a donc trois positions à déterminer : input, neurone caché et output.
Il s’agit des mêmes positions que celles détaillées précédemment. Pour plus de
représentativité, on graphe chaque neurone par un cercle. Il est important de signaler à cette
étape que les connexions éliminées par l’élagage ne seront pas représentées. Ces connexions
15
sont en effet supprimées par la macro grâce à une macro-variable de contrôle. Par la suite, on
inscrit dans une macro variable une chaine de caractère définie comme étant
« chemin_1*y….. chemin_k*y » avec k le nombre de chemins finaux retenus par le modèle.
L’extrait de programme ci-dessous permet de comprendre la structure algorithmique utilisée
pour la représentation graphique.
……… %let positionf= %sysevalf((&nbentrees.+1)/2);/*enter the data*/ data graph; set graph; %do i=1 %to &nbentrees.; %let positionh= %sysevalf((&nbentrees./2)+1-(&hiddenlayer./2)); %do j=1 %to &hiddenlayer.; if _N_=1 then e&i.&j.=&i. ; if _N_=2 then e&i.&j.=&positionh. ; if _N_=3 then e&i.&j.=&positionf.; %if &constante.=bias %then %do; if _N_=1 then c&j.= 0; if _N_=2 then c&j.= &positionh. ; if _N_=3 then c&j.= &positionf.; %end; %let trans=%sysevalf(&positionh.); %let positionh=%sysevalf(&trans.+1); %end; %end; %if &constantehid.=bias %then %do; if _N_=2 then c= 0 ; if _N_=3 then c= &positionf.; %end; run; proc contents data= graph out=contents noprint; run; ……… data contents; set contents; %do k=1 %to &number.; if name= "e&&controle&k.." then delete; %end; run; ……… DATA _null_ ; SET contents; /* each value is in a macro variable namei... */ call symput ("name"||compress(i),compress(name)) ; RUN ; ……… %let string_plot=; %do k=1 %to &count_loop.; %let s=&&name&k.. * Y; %let string_plot=&string_plot. &s.; %end; %if &constante.=bias %then %do; %do j=1 %to &hiddenlayer.; %let s=c&j. * Y;
16
%let string_plot=&string_plot. &s.; %end; %end; %if &constantehid.=bias %then %do; %let s=c * Y; %let string_plot=&string_plot. &s.; %end;
%if &plotneural.=true %then %do; %let ways=%sysevalf(&hiddenlayer.*&nbentrees.*10); %do i= 1 %to &ways.; symbol&i. i=join v=circle c=black h=2 w=1; %end; Proc gplot data=graph; plot &STRING_plot. / vaxis=0 to &nbentrees. by 1 haxis=0 to 4 by 1 noframe overlay annotate=my_labels ; run;quit; %end;
17
5. Application
5.1. Présentation des données
Nous décidons de prévoir les rendements trimestriels glissants du prix de l'or en
utilisant les données entre Janvier 1970 et Mai 2010. Nous choisissons volontairement cette
série car nous anticipons que plusieurs paramètres autoregressifs risquent d’être significatifs.
Par ailleurs, la profondeur temporelle nous permettra également d’observer d’éventuels
comportements historiques atypiques captés et gérés par le réseau. Les données sont choisies
en valorisation fin de mois. La figure 4 représente les 484 rendements logarithmiques
trimestriels glissants de la série en question. Notons que les modèles linéaires et neuronaux ne
seront estimés que sur 480 périodes, afin de pouvoir simuler un exercice de prévision out-of-
sample.
Figure 4 : Illustration de la série
Le test de stationnarité de Dickey-Fuller conduit à rejeter l’hypothèse de racine
unitaire. La statistique est de -4.9648, le retard retenu est de 7 et la p-value est inférieure à
18
0.01. Notons que le nombre de retards est choisi suivant le critère usuel de significativité à
10% du dernier retard.
5.2. Le modèle linéaire
L’étude des fonctions d’autocorrélation et d’autocorrélation partielle suggèrent un
processus ARMA (12,7). Si l’on souhaite conserver pour notre exemple un modèle de type
AR, c’est un AR(12) qui semble se dégager de ce graphique.
Figure 5 : Autocorrélations et autocorélations partielles du processus
L’estimation par une procédure ARIMA nous permet de ne conserver que les retards
significatifs. Pour rester suffisament large, nous choisissons un seuil de significativité
minimum de 15%. Le tableau 1 montre le résultat de cette estimation.
19
Tableau 1 : Estimation d’un processus AR
Lag Coefficient Std P-value
1 0,874 0,029 ***
3 -0,640 0,049 ***
6 -0,481 0,058 ***
7 0,086 0,050 *
8 0,071 0,049 0,149
9 0,158 0,051 ***
10 0,078 0,048 0,107
11 0,119 0,048 **
12 -0,160 0,060 **
5.3. Le modèle neuronal
Les paramètres autorégressifs de la série sont déclarés comme les inputs du modèle.
Une recherche par la méthode du BIC* donne les résultats suivants:
Tableau 2: Sélection du nombre de neurones cachés et élagage par le critère du BIC*
BIC*
Number of hidden nodes
Connection deleted
0,49533 0,4292 1 .
0,49690 0,4292 2 .
0,48985 0,4292 1
0,48442 0,4292 1
0,47912 0,4292 1
Il n’y a qu’un seul neurone caché, on s'aperçoit que le critère du BIC* remonte si l’on
ajoute un deuxième nœud. Par la suite, trois connexions sont supprimées du réseau, car cela
diminue le critère du BIC*. Notons que cette estimation est réalisée avec une constante en
input du modèle et une constante cachée. Nous verrons en annexe l’importance de l’ajout de
ces constantes dans le modèle non linéaire. Nous pouvons remarquer que l’utilisation de ce
critère sanctionne fortement le nombre de coefficients, puisque seulement 9 connexions sont
établies. Ce résultat est fortement impacté en raison du fait qu’en dessous de 500
observations, est fixé comme la variance de l’erreur résiduelle.
20
Figure 6: Représentation du réseau optimal par le critère du BIC*
L'estimation des coefficients associés à ce réseau sont présentés dans le tableau 3.
Nous rappelons que ces coefficients sont estimés sur données standardisées.
21
Tableau 3 : coefficients du MLP optimal sous le critère du ΒIC*
Parameter Estimate Parameter Estimate Parameter Estimate
Β11 0,170536 B15 . B19 -0,031929 Β12 -0,047358 B16 . α10 -0,467154 Β13 -0,028642 B17 . T1 5,412057 B14 0,041643 B18 0,034494 α 2,311748
Il est important de connaître la pertinence de ce modèle dans l'exercice d'une
prévision. Le meilleur moyen de savoir si un tel modèle est adapté est de comparer sa
performance prévisionnelle par rapport au modèle linéaire. Nous comparons l'erreur
quadratique sur un échantillon out-of-sample. Nous réalisons ici cet exercice sur quatre
périodes. Les prévisions présentées dans le tableau 4 sont destandardisées. La règle de
prévision est telle que tous les paramètres sont connus et certains.
Tableau 4 : Comparaison de l'erreur de prévision entre les modèles
linéaire et neuronal sur 4 périodes (BIC*) :
Date Real Linear Forecast
Linear Errors
CR Neural Forecast
(BIC*)
Neural Errors (BIC*)
Neural CR (BIC*)
February 2010 -0,054 -0,13149 0,0775 0,006 -0,05325 -0,00075 5,625E-07 March 2010 0,0148 -0,17268 0,18743 0,0351 -0,14228 0,15708 0,02467 April 2010 0,0871 -0,03294 0,12003 0,0144 -0,01045 0,09755 0,00952 May 2010 0,0846 -0,00188 0,08643 0,0075 0,07343 0,01117 0,00012
La somme des carrés des erreurs pour le modèle linéaire est de 0,06301 contre 0,03431 pour
le modèle neuronal. Ainsi, l'erreur de prévision pour ces quatre périodes est diminuée de
presque 45%. Nous venons de montrer empiriquement comment les MLP peuvent améliorer
la prévision d'une série temporelle.
Attention, dans certains cas, il se peut que les réseaux optimaux déterminés par les
critères BIC et BIC* ne convergent pas vers le même réseau. Cela est très marqué lorsque le
nombre d'observations est d’environ 500 (par construction du BIC et du BIC* dans le macro
programme). Nous avons choisi cette série dans le but d'illustrer ce phénomène. Le critère de
choix entre les deux réseaux se fera alors en fonction de la complexité du modèle et de l'erreur
de prévision out-of-sample et du temps de calcul du réseau. Le tableau 5 montre l'estimation
du réseau suivant le critère du BIC.
22
Tableau 5 : Sélection du nombre de neurones cachés et élagage par le critère du BIC
BIC
Number of hidden nodes
Parameter deleted
-0.69397 1 . -0.70328 2 . -0.73384 3 . -0.69326 4 . -0.78195 3 -0.81003 3 -0.82229 3 -0.83430 3
Ce résultat illustre parfaitement le phénomène que nous venons de décrire. Un
quatrième neurone caché ne diminue pas le critère BIC. Par ailleurs, la suppression de quatre
connexions diminue le critère d'information. En termes de compréhension, ce MLP est un peu
plus complexe que le précédent car il y a plus de paramètres. La représentation graphique du
réseau, associée aux coefficients estimés dans le tableau 6 permet d’interpréter les résultats du
réseau.
23
Figure 7: Représentation du réseau optimal par le critère du BIC
Tableau 6 : coefficients du MLP optimal sous le critère du ΒIC
Parameter Estimate Parameter Estimate Parameter Estimate
Β11 -2,781 Β23 -0,003 Β35 -7,927
Β13 -11,660 Β24 0,033 Β37 -28,901
Β14 -18,895 Β26 -0,012 Β38 -0,306
Β15 5,983 Β27 0,037 Τ1 -1,624
Β16 -9,569 Β28 -0,008 Τ2 4,832
Β17 35,752 Β29 -0,025 Τ3 -1,943
Β18 -18,161 Β31 4,084 α10 65,445
Β19 0,838 Β32 11,981 α20 -0,578
Β21 0,216 Β33 42,392 α30 -117,315
Β22 -0,054 Β34 16,271 α 2,140
24
En termes de prévisions, le choix entre le modèle linéaire et les modèles neuronaux est
assez évident, comme le suggère le tableau 8.
Tableau 7 : Comparaison de l'erreur de prévision entre les modèles
linéaire et neuronal (BIC) :
Date Real Linear Forecast
Linear Errors
CR Neural Forecast
(BIC)
Neural Errors (BIC)
Neural CR (BIC)
February 2010 -0,054 -0,13149 0,0775 0,00601 -0,04177 0,01118 0,00013 March 2010 0,0148 -0,17268 0,1874 0,03513 -0,12773 0,12392 0,01536 April 2010 0,0871 -0,03294 0,12 0,01441 0,00357 0,10774 0,01161 May 2010 0,0846 -0,00188 0,0864 0,00747 0,06608 -0,03413 0,00117
Tableau 8 : SCR des 3 modèles estimés :
Linear SCR Neural
SCR (BIC*) Neural
SCR (BIC)
0,06301 0,03431 0,02826
Le réseau déterminé par le critère BIC produit de meilleurs résulats. Cependant, son
degré de complexité et le temps de calul pour le calibrage sont plus importants. Le temps de
calul est un inconvénient pouvant être réglé par l’utilisation d’un serveur ou d’une machine
plus puissante. La compléxité du réseau peut également être gérée, en analysant la table de
sortie fournit par SAS lors de la dernière estimation. Nous proposons en annexe 3, des
graphiques et interprétations sur l’évolution de la valeur de chaque neurone au cours du
temps.
Dans un cadre plus général, comme par exemple avec 200 ou 2 000 observations, la
pratique montre que le résultat est moins tranché. Les structures des deux réseaux tendent à se
rapprocher ou à être identiques. Si la structure du réseau est différente, le choix de l'un ou
l'autre de ces deux réseaux n'est pas obligatoire. Il possible de mixer les résultats des deux
prévisions en leurs affectant des poids qui permettent de diversifier le risque d'erreur.
Enfin, si l'on désir améliorer les prévisions, il est également possible, comme pour un
modèle ARMA, de réinjecter les résidus en input. Cela se traduit par une deuxième estimation
avec un paramètre de plus, le résidu retardé d'une période de la première régression (modèle
NARMA). Un exemple sur le modèle optimal déterminé par le BIC est observable en annexe
2. Le modèle est également généralisable à l'utilisation d'une ou plusieurs variables exogènes
(NARX-NARMAX).
25
6. Extensions
Il est possible d'établir un modèle à sortie multidimensionelle (plusieurs outputs) avec
un principe identique. Il s'agit de calculer pour chaque output un critère d'information comme
le BIC ou le BIC*. Tant que ce critière diminue, un neurone caché est ajouté. Si pour l'un des
outputs, ce critère ne diminue plus, alors les neurones cachés rajoutés par la suite ne seront
plus connectés à cette sortie. L'élagage du modèle dominant est réalisé avec le même procédé.
Il est également possible d'ajouter d'autres couches cachées en suivant une technique
similaire. Une fois le modèle dominant avec une couche cachée estimé, il convient de rajouter
une couche supplémentaire et d'ajouter des neurones cachés sur cette couche jusqu'à ce que
l'on trouve le minimum du critère d'information. La fonction reliant le BIC/BIC* par rapport
au nombre de neurones cachés étant convexe, le minimum est trouvé dès que le critère
d'information croît. On compare par la suite le minimum du critère trouvé avec deux couches
cachées contre celui du modèle avec une seule couche cachée. Si celui-ci est inférieur, on
rajoute une couche cachée en suivant le même raisonnement. On itère jusqu'à ce que celà ne
soit plus le cas. Une fois le modèle dominant trouvé, l'élagage "traditionel" peut alors
commencer.
Il est possible de panacher ces deux modèles afin d'avoir un MLP à plusieurs couches
cachées et à sortie multidimensionelle.
Enfin, comme Mangeas (1996) le propose, il est également possible de créer des
réseaux où les connexions peuvent sauter une ou plusieurs couches cachées. Cette méthode
nécessite toutefois des capacités calculatoires très importantes car des milliers de modèles
sont estimés.
26
7. Conclusion
Nous avons montré comment les réseaux de neurones peuvent améliorer
significativement la prévision de séries temporelles pour répondre aux éventuels problèmes
liés à la non linéarité des processus. Nous avons présenté une technique spécifique permettant
d'éviter le sur-apprentissage du réseau grâce à l'utilisation de deux critères d'information. Ces
critères d'information ne sont pas exhaustifs, tout comme la méthode utilisée. L'utilisation
d'un MLP doit être précédée d'une analyse linéaire qui respecte les hypothèses usuelles. Cela
permet dans un premier temps de sélectionner les inputs, mais également de donner une
signification au réseau qui sera construit par la suite.
Nous avons également proposé une approche en termes de programmation et
d'utilisation de la procédure "Neural" disponible dans le module SAS Enterprise Miner.
L'algorithme forward/backward permet de limiter les temps de calcul en sélectionnant le
modèle dominant puis en élaguant celui-ci.
Quelques pistes d'évolution de la méthode ont été évoquées. Ces évolutions ne posent
pas de problèmes en termes de programmation, mais elles nécessitent une puissance de calcul
plus importante. L'utilisation d'un serveur par exemple, peut remédier à ce problème. Notons
également que la complexité du réseau serait alors plus importante. Cela peut poser des
difficultés d'interprétation.
Ces modèles sont aujourd'hui parmi les plus performant en termes de pouvoir
prédictif, à la condition d'être utilisés de manière rigoureuse et de respecter les hypothèses de
construction telles qu'elles sont décrites dans cet article. Une conférence donnée en Finland
par Osowski et al (2004) montre que l'utilisation d'un MLP est plus efficace que l'utilisation
de Machine à Vecteur de Support (SVM) lorsque l'on considère la régression comme champs
d'étude. En revanche, ceux-ci s'avèreraient plus performants comme méthode de
classification.
27
8. Références
Arnoult N. et Issaad R., "Réseaux de neurones et séries temporelles : Une application au taux
de change Euro/Dollar", Projet Universitaire, Université Paris Dauphine/Paris 2 Panthéon
Assas, 2011.
Cottrell M., “Polycopie de cours : Les reseaux de neurones : historique, methodes et
applications”, 2010, Université Paris 1 Panthéon Sorbonne, Master TIDE.
Cottrell M., Mangeas M., Yao J., “New criterion of identification in the multilayered
perceptron modeling”, Proc of ESANN’97, Bruges, 1997, DiFacto.
Cottrell M., Mangeas M., Rinkiewicz J., Yao J., “Modèles de réseaux de neurones pour
l’analyse des séries temporelles ou la régression” Publication du SAMMOS, Université Paris
1 Panthéon Sorbonne, 2001.
Diallo A. et Arnoult N., “Gold prices determining factors”, Projet Universitaire, Université
Paris 1 Panthéon Sorbonne, 2010.
Mangeas M, « Propriétés statistiques des modèles paramétriques non linéaires de prévisions
de séries temporelles », Thèse de doctorat, Université Paris 1 Panthéon Sorbonne, 1996.
Osowski S., Siwek K. et Markiewicz T., “ MLP and SVM networks - a Comparative study ”,
proceedings of the 6th Nordic Signal Processing Symposium, 2004, pages 37-40, Espoo
(Finland).
Rynkiewicz J., « Modèles hybrides intégrant des réseaux de neurones artificiels à des
modèles de chaines de Markov cachées : application à la prédiction de séries temporelles »
Thèse de doctorat, Université Paris 1 Panthéon Sorbonne, 2000.
Rynkiewicz J., « Manuel de Regress et quelques autres programmes » Publication du
SAMMOS, Université Paris 1 Panthéon Sorbonne, 2001.
Rynkiewicz J., « General bound of overfitting for MLP regression models », 19th European
Symposium on Artificial Neural Networks, 2011.
Support SAS, “The NEURAL Procedure”, Online Miner documentation,
http://support.sas.com/documentation/onlinedoc/miner/em43/neural.pdf
Widrow B. et Lehr M.A. “Perceptrons, Adalines, and Backpropagation,'' in Handbook of
Brain Theory and Neural Networks, M.A. Arbib, ed., pp.719-724, MIT Press, 1995
28
9. Annexes
9.1. Importance des constantes dans le modèle neuronal
Dans le modèle linéaire, si les données sont centrées, la constante apparaît comme non
significative. Or, lorqu’un modèle non linéaire est estimé, l’utilisation d’une constante en
input et d’une constante cachée peut améliorer considérablement la prévision. Cet annexe
presente la différence entre une estimation avec (cf 5.3. Le modèle neuronal) ou sans
constante pour le modèle défini grâce au critère d’information BIC. L’estimation du modèle
sans constante donne les résultats suivants :
Tableau 9 : Sélection du nombre de neurones cachés et élagage par le critère du BIC
BIC Number of hidden
nodes Parameter
deleted
-0.70698 1 . -0.71933 1 -0.73164 1 -0.74051 1
Le résultat est très différent. Le modèle dominant est considéré comme ayant un seul
neurone caché et trois connexions supprimées. On remarque que le critère d’information BIC
est plus élevé que lorsqu’une constante et une constante cachée sont intégrées au modèle (cf :
tableau 4). Le modèle est donc sous paramétré. La figure 8 fournit une représentation du
réseau :
29
Figure 8 : Représentation du réseau optimal par le critère du BIC
Tableau 10 : coefficients du MLP optimal sous le critère du ΒIC
Parameters Coefficients
B11 -0.029353
B12 0.008171
B13 0.004034
B14 -0.007074
B18 -0.005686
B19 0.004537
T1 -26.023083
La prévision en est également affectée : la somme des erreurs au carré est de 0,046675
contre 0,02826 (cf : tableau 7) dans le modèle avec constantes.
30
9.2. Application au modèle NARMA
Comme nous l’avons précisé dans notre étude, il est possible de rajouter en inputs les
résidus retardés (modèle NARMA) ou encore une ou plusieurs variables exogènes (modèle
NARX/NARMAX). Nous proposons ici un exemple en réinjectant à notre modèle les résidus
retardés d’une période du modèle NAR en input. Les résultats de la recherche du modèle
dominant et de l’élagage sont fournis dans le tableau 8.
Tableau 11 : Sélection du nombre de neurones cachés et élagage par le critère du BIC
BIC Number of hidden nodes Parameter deleted
-0,70129 1 . -0,71359 1 -0,72586 1 -0,73723 1
Un seul neurone caché est nécessaire pour estimer ce réseau. Le réseau estimé lors de
cette deuxième étape est bien moins complexe que lors de la première estimation.
Figure 9 : Représentation du réseau optimal par le critère du BIC
31
Tableau 12 : coefficients du MLP optimal sous le critère du ΒIC
Parameters Coefficients B1,1 -0,145056 B1,2 0,03773 B1,3 0,03077 B1,4 -0,043087 B1,8 -0,035879 B1,9 0,030903 B1,10 -0,024904
α1,0 0,591348 T1 -6,27987
α 3,27655
La prévision est également améliorée avec un SCR égal à 0,027765.
Tableau 13 : Comparaison de l'erreur de prévision entre les modèles
NAR (BIC) et NARMA (BIC) :
Date Real NAR
forecast NAR
Errors NAR CR
NARMA forecast
NARMA Errors
NARMA CR
February 2010 -0,054 -0,04177 0,01118 0,00013 -0,0418 -0,01222 0,000149
March 2010 0,0148 -0,12773 0,12392 0,01536 -0,1277 0,14248 0,0203
April 2010 0,0871 0,00357 0,10774 0,01161 0,0036 0,08351 0,006975
May 2010 0,0846 0,06608 -0,03413 0,00117 0,0661 0,01847 0,000341
32
9.3. Compléments d’interprétation
Les figures 10, 11 et 12 représentent les valeurs prises par chaque neurone au cours du
temps. Il est intéressant de remarquer dans un premier temps que le second neurone semble
jouer un rôle presque ordinaire, celui de fitter la variable prédite lorsque celle-ci suit un
comportement habituel. En revanche, les neurones 1 et 3 semblent refléter des périodes de
fortes turbulences. L’intérêt de prendre une série à l’historique si important, est qu’un
comportement atypique 30 ans plus tôt, a permis de préciser la prévision aux alentours de
l’année 2010. Ces deux neurones, peuvent également être considérés comme reflétant un
régime différent de celui que suit le processus en temps normal, sa valeur passant d’un
extrême à l’autre très rapidement. Dans un projet universtaire, Diallo et Arnoult (2010) ont
montré qu’une telle série pouvait se traduire par un processus à deux régimes.
Figure 10 : Valeur de H1 (BIC)
33
Figure 11 : Valeur de H2 (BIC)
Figure 12 : Valeur de H3 (BIC)