Code source wiki de Tutoriel Prédictif

Modifié par jhurst le 2021/04/21 10:01

Afficher les derniers auteurs
1 {{ddtoc/}}
2
3 ----
4
5 Le prédictif dans DigDash Enterprise est présent à travers trois fonctionnalités :
6
7 1. Les mesures prédictives
8 1. Les mesures simulées
9 1. Le groupement intelligent
10
11 Ce document illustre une utilisation possible de ces différents outils.
12
13 = Mesures prédictives =
14
15 == Création d'une mesure prédictive ==
16
17 L'accès à la création d'une mesure prédictive s'effectue via l'interface de **Configuration avancée de la source de données** (voir image ci-dessous) :
18
19 (% style="text-align:center" %)
20 [[image:predictif_tutorial_fr_html_660aa31976d6a0ca.png||height="346" width="507"]]
21
22 Pour créer une mesure prédictive il suffit de cliquer sur **Créer une mesure prédictive...**, ce qui a pour effet d'ouvrir la fenêtre **Mesure prédictive**.
23
24 (% style="text-align:center" %)
25 [[image:predictif_tutorial_fr_html_467a71ee37c06808.png||height="246" width="507"]]
26
27 La création d'une mesure prédictive s'effectue via la fenêtre ci-dessous et implique de renseigner plusieurs champs obligatoires :
28
29 * Le nom de la mesure prédictive
30 * La mesure que l'on souhaite prédire
31 * La dimension temporelle selon laquelle on souhaite explorer notre mesure
32 * L’agrégation de la mesure à prédire
33 * Le type de modèle/algorithme. Pour chaque algorithme, nous précisons dans quel contexte il est intéressant/pertinent de l'utiliser. De plus, en cochant la case **Aide choix modèle** nous aidons l'utilisateur à déterminer un modèle à utiliser en fonction de la nature des données qu'il souhaite prédire.
34 * Le type de valeur que nous souhaitons prédire. DigDash Enterprise offre la possibilité de prédire soit la valeur de la mesure, ou bien les bornes de l'intervalle de confiance à 95 % de la prédiction.
35
36 == Modèles disponibles et choix du modèle ==
37
38 DigDash Enterprise intègre 9 modèles de prédiction que nous présentons dans le tableau ci-dessous :
39
40 (% style="text-align:center" %)
41 [[image:predictif_tutorial_fr_html_6f75df363e2ba3d2.png||height="233" width="554"]]
42
43
44 DigDash Enterprise intègre également un algorithme de moyenne mobile, mais celui-ci n'est pas un algorithme de prédiction à proprement parlé car il permet seulement d'étudier les données du passé.
45
46 Le choix du modèle de prédiction dépend de la mesure que l'on souhaite prédire et du type de modélisation que l'on souhaite faire. Il est important de se poser les questions suivantes :
47
48 * Mes données possèdent-elles une tendance ?
49 * Mes données possèdent-elles une saisonnalité ou bien des cycles ? Si oui, sont-ils complexes ?
50 * Est ce que je souhaite lisser mes données?
51 * Est ce que je veux obtenir une modélisation simple de mon problème, facile à visualiser, ou bien je souhaite favoriser la précision du modèle au détriment de sa simplicité.
52
53 Grâce à son interface d'aide au choix de modèle (voir image ci-dessous), DigDash Enterprise restreint le choix de modèles disponibles en répondant aux deux premiers points.
54
55 (% style="text-align:center" %)
56 [[image:predictif_tutorial_fr_html_16d3bd2c0197a170.png||height="289" width="521"]]
57
58
59 \\
60
61 Dans la prochaine partie nous présentons les différents modèles plus en détails afin d'en faciliter la compréhension par l'utilisateur.
62
63 == Présentation des modèles ==
64
65 Les définitions des algorithmes ci-après sont à considérer dans le cadre des mesures prédictives au sein de DigDash Enterprise.
66
67 __Régression linéaire :__
68
69 La régression linéaire est un des outils de base de la modélisation. Elle recherche une relation linéaire entre la mesure à prédire et l'axe temps.
70
71 La situation d'application idéale de ce modèle est lorsque la mesure à prédire est proportionnelle à l'axe temps. Toutefois, il peut être également intéressant de choisir ce modèle pour sa simplicité de visualisation (une droite), ce qui le rend rapidement compréhensible par un large public.
72
73 __Exemple 1 :__
74
75 On souhaite modéliser le cours de clôture de l'action Google en fonction du temps.
76
77 (% style="text-align:center" %)
78 [[image:predictif_tutorial_fr_html_ad31bb7edc7a7428.png||height="254" width="554"]]
79
80
81 \\
82
83 On remarque que la prédiction via la régression linéaire n'est pas très précise dans ce cas. Toutefois, elle permet de visualiser rapidement l'évolution de la tendance de la courbe.
84
85 __Exemple 2 :__
86
87 On souhaite modéliser l'évolution du chiffre d'affaires d'une société en fonction du temps.
88
89 (% style="text-align:center" %)
90 [[image:predictif_tutorial_fr_html_567a2b3c7a4f676f.png||height="228" width="554"]]
91
92 Dans cet exemple nous sommes dans le cas idéal d'application de la régression linéaire. En effet, il existe une relation de proportionnalité entre le chiffre d'affaires et le temps.
93
94 __Régression logarithmique :__
95
96 La régression logarithmique possède les mêmes propriétés que la régression linéaire. La différence réside dans le fait qu'elle permet de trouver une relation logarithmique entre la mesure à prédire et l'axe temps.
97
98 __Exemple :__
99
100 (% style="text-align:center" %)
101 [[image:predictif_tutorial_fr_html_be031b3963e9c683.png||height="255" width="554"]]
102
103 __Régression polynomiale__ :
104
105 La régression polynomiale est une forme plus complexe de la régression linéaire. Elle permet d'approximer une mesure non plus par une droite mais par un polynôme d'ordre 2 ou 3.
106
107 __Exemple :__
108
109 (% style="text-align:center" %)
110 [[image:predictif_tutorial_fr_html_e92d7c4fec5fd96d.png||height="258" width="554"]]
111
112
113 __Moyenne mobile :__
114
115 L'objectif de la moyenne mobile n'est pas de prédire, mais de lisser les données afin d'éliminer les fluctuations les moins significatives. Une moyenne mobile d'ordre 3 par exemple est une moyenne glissante qui pour chaque point **p**, calcule la moyenne des points **p-1**, **p** et **p+1**. Dans ce cas, le calcul de la moyenne mobile n'est possible qu'à partir du deuxième point jusqu'à l'avant dernier.
116
117 __Exemple :__
118
119 (% style="text-align:center" %)
120 [[image:predictif_tutorial_fr_html_82200522a99a63a2.png||height="253" width="554"]]
121
122 On peut observer que la moyenne mobile d'ordre 3 a permis de lisser la courbe de consommation d'eau. Cela permet de supprimer les variations brutales comme en 1953 afin de se concentrer sur l'allure globale de la courbe.
123
124 __Lissage exponentiel simple :__
125
126 Contrairement aux techniques de régressions qui ne sont pas propres aux séries temporelles, les lissages tiennent compte de la spécificité de la variable temporelle. En effet, l'importance à donner à une valeur décroît dans le temps. Par exemple, pour prédire le chiffre d'affaires de l'année 2017, il est probable que l'on donne plus d'importance à la valeur du CA de 2016 qu'à la valeur du CA de 2008. Les diverses techniques de lissages permettent donc de tenir compte de la dépréciation de l'information au cours du temps.
127
128 Le lissage exponentiel simple permet à la fois de lisser des données et également de prédire la prochaine valeur. Il s'applique à des données ne présentant ni tendance et ni saisonnalité.
129
130 __Exemple :__
131
132 On cherche à prédire le coût de communication en fonction du temps. On remarque que les données sont assez chaotiques : elles n'ont ni tendance et ni cycle. C'est une situation où la prédiction est assez complexe. C'est la raison pour laquelle l'algorithme de lissage exponentiel simple effectue seulement une prédiction pour la prochaine date.
133
134 (% style="text-align:center" %)
135 [[image:predictif_tutorial_fr_html_c7d8491b34a1dffb.png||height="258" width="554"]]
136
137 (% style="text-align: center;" %)
138 __Lissage exponentiel double :__
139
140 Le lissage exponentiel double est une version améliorée du lissage exponentiel simple car celui-ci est capable de prendre en compte la présence d'une tendance dans les données. Toutefois, il ne permet pas de prédire des données présentant une saisonnalité.
141
142 __Exemple :__
143
144 On cherche à prédire le nombre de commandes d'un fournisseur en fonction du temps. En observant nos données on remarque que celles-ci présente une tendance, mais pas de saisonnalité. On réunit dans les conditions d'application du lissage exponentiel double.
145
146 [[image:predictif_tutorial_fr_html_4cce7566aefa1651.png||height="309" width="554"]]
147
148
149 __Lissage de Holt :__
150
151 Le lissage de Holt est une version améliorée du lissage exponentiel double. Celui-ci utilise deux paramètres afin d'estimer la valeur de la mesure, contre un seul pour le lissage exponentiel double.
152
153 On peut alors se demander pour quelle raison utiliser le lissage exponentiel double si le lissage de Holt est plus précis. La raison principale est le temps de calcul. En effet, dans le cas du lissage de Holt il faut estimer deux paramètres, contre un seul dans le cas du lissage exponentiel double.
154
155 __Exemple :__
156
157 Nous utilisons les mêmes données que pour le lissage exponentiel double car les conditions d'applications sont les mêmes.
158
159 (% style="text-align:center" %)
160 [[image:predictif_tutorial_fr_html_7a4ae2b54f069464.png||height="260" width="554"]]
161
162 __Lissage de Holt-Winters :__
163
164 Les lissages de Holt-Winters permettent de prendre en compte des données présentant une tendance et une saisonnalité.
165
166 DigDash Enterprise implémente deux versions du lissage de Holt-Winters :
167
168 1. Version additive
169 1. Version multiplicative
170
171 Le cas additif correspond à des saisons dont l'amplitude reste constante au cours du temps (voir image ci-dessous) :
172
173 (% style="text-align:center" %)
174 [[image:predictif_tutorial_fr_html_1c568aba6d0fb304.png||height="272" width="554"]]
175
176 Le cas multiplicatif correspond à des saisons dont l'amplitude croît/décroît au cours du temps (voir image ci-dessous) :
177
178 (% style="text-align:center" %)
179 [[image:predictif_tutorial_fr_html_90f4a3db02f79dbe.png||height="248" width="554"]]
180
181 Contrairement au premier exemple (cas additif), on observe que l'amplitude des cycles augmente au cours du temps. D'où l'intérêt d'utiliser un modèle multiplicatif et non plus additif.
182
183 __Transformation de Fourier :__
184
185 L'algorithme permettant de prédire la mesure n'est pas la transformation de Fourier, c'est un algorithme de prédiction utilisant la transformation de Fourier.
186
187 Techniquement, l'objectif est de décomposer la mesure à prédire en une somme de fonction sinus et cosinus de périodes différentes. Grâce à cela, notre algorithme est capable de prendre en compte des cycles/saisonnalités plus complexes que celles présentées dans la partie sur les modèles de Holt-Winters.
188
189 __Exemple :__
190
191 Pour cet exemple nous souhaitons prédire le nombre de maisons vendues au sein d'une agence immobilière. En observant les données nous remarquons une forme de cyclicité au sein de celles-ci. Toutefois, elle n'est plus aussi simple que celles des exemples de la partie sur les modèles de Holt-Winters.
192
193 (% style="text-align:center" %)
194 [[image:predictif_tutorial_fr_html_1b77916ee6bfd3a2.png||height="266" width="554"]]
195
196 == Valeurs à prédire ==
197
198 A travers les mesures prédictives nous proposons de prédire 3 valeurs :
199
200 1. La valeur de la mesure
201 1. Borne inférieure de l'intervalle de confiance à 95 %
202 1. Borne supérieure de l'intervalle de confiance à 95 %
203
204 L'intervalle de confiance est défini de telle sorte que la valeur prédite a 95 % de chance d'être comprise entre les deux bornes.
205
206 Attention, ce résultat n'est valable que lorsque les données sont normales (au sens gaussien du terme). Toutefois, même si cette hypothèse n'est pas respectée, il peut toujours être intéressant visuellement de tracer les intervalles de confiance.
207
208 __Exemple :__
209
210 Nous utilisons les intervalles de confiance sur notre premier exemple de régression linéaire appliquée au cours de l'action Google.
211
212 (% style="text-align:center" %)
213 [[image:predictif_tutorial_fr_html_9f72ef9a2ba93975.png||height="274" width="554"]]
214
215 == Considérations mathématiques ==
216
217 Dans le cas des algorithmes ne possédant pas de solutions mathématiques exactes, les paramètres sont approximés en cherchant à minimiser la somme des erreurs au carrées (SSE).
218
219 Le nombre d'itérations pour estimer ces paramètres n'est pas modifiable par l'utilisateur actuellement.
220
221 De plus, il est important de comprendre que les algorithmes présentés précédemment se servent du passé pour prédire les valeurs futures. Cela implique plusieurs points :
222
223 * Plus il y a de données, plus la prédiction sera précise
224 * Les algorithmes se basent sur le passé, ils considèrent que le futur sera similaire à celui-ci. Par conséquent, ils ne sont pas capables de prédire des chocs structurels
225 * L'exactitude des prédictions ne peut être garantie et n'est pas à prendre d'un point de vue déterministe.
226
227 = Mesures simulées =
228
229 Une mesure simulée a pour objectif d'étudier l'influence d'une ou plusieurs mesures sur une autre mesure.
230
231 == Création d'une mesure simulée ==
232
233 L'accès à la création d'une mesure simulée s'effectue via l'interface de **Configuration avancée de la source de données** (voir image ci-dessous) :
234
235 (% style="text-align:center" %)
236 [[image:predictif_tutorial_fr_html_e729e51058052c9.png||height="346" width="507"]]
237
238 Pour créer une mesure simulée il suffit de cliquer sur **Créer une mesure simulée**, ce qui a pour effet d'ouvrir la fenêtre **Mesure simulée**.
239
240 (% style="text-align:center" %)
241 [[image:predictif_tutorial_fr_html_eee1032db0d254e8.png||height="239" width="507"]]
242
243 Ensuite, il faut renseigner les informations suivantes :
244
245 Entrez le nom que vous souhaitez donner à votre mesure simulée.
246
247 Dans le groupe **Mesure à analyser** vous devez sélectionner :
248
249 * La mesure que vous souhaitez analyser
250 * L'agrégation de cette mesure
251
252 Dans le groupe **Mesures dépendantes** vous devez sélectionner les mesures que vous souhaitez faire intervenir pour modéliser la mesure à analyser. Pour chaque mesure vous devez renseigner deux autres informations :
253
254 1. L'agrégation de la mesure
255 1. La variable associée à cette mesure. Si vous ne souhaitez pas faire varier la mesure, sélectionnez **Aucune**.
256
257 Les autres champs présents dans le groupe **Mesures dépendantes** sont facultatifs. Nous allons toutefois expliquer leur utilité.
258
259 Le bouton **Modèle automatique** permet de sélectionner automatiquement les mesures permettant de modéliser la mesure à analyser. Pour cela vous devez également sélectionner la ou les dimensions selon lesquelles vous souhaitez explorer les mesures afin de déterminer le modèle.
260
261 Le bouton **Calculer qualité du modèle** permet de calculer le coefficient de détermination ajusté (R² ajusté). Celui-ci calcule la précision du modèle tout en tenant compte de la complexité de celui-ci. Pour cela vous devez sélectionner les mesures de votre modèle, ainsi que leur agrégation, et également la ou les dimensions selon lesquelles vous souhaitez explorer les mesures afin de calculer la précision.
262
263 == Exemple ==
264
265 Notre exemple portera sur une chaîne de magasins. Nous disposons des données suivantes pour chacun des magasins :
266
267 * CA annuel
268 * Surface
269 * Stocks (k€)
270 * Budget publicité (k€)
271 * Nombre de familles dans un rayon de 30km (milliers)
272 * Nombre de concurrents dans un rayon de 30km
273
274 Tout d'abord nous allons commencer par étudier l'effet du budget publicitaire sur le CA annuel.
275
276 Pour cela nous allons créer une mesure simulée en renseignant les champs comme dans l'image ci-dessous :
277
278 (% style="text-align:center" %)
279 [[image:predictif_tutorial_fr_html_f37df11d6d07c196.png||height="279" width="554"]]
280
281 Nous avons sélectionné toutes les mesures car nous voulons toutes les utiliser pour modéliser le CA de nos magasins. Toutefois, comme nous souhaitons tester seulement l'influence du budget publicitaire, nous avons laissé la valeur variable associée à **Aucune** pour l'ensemble des mesures autres que **budget publicitaire**.
282
283 La variable associée à la mesure **budget publicitaire** est la variable **var budget pub**. Cette variable est une variable classique comme on peut en utiliser dans les mesures calculées.
284
285 Une fois la mesure simulée créée, on peut réaliser un graphique en barres sur lequel on positionne les mesures **CA **ainsi que notre nouvelle mesure simulée, groupées par magasin. Dans le tableau de bord nous ajoutons notre variable **var budget pub** afin de pouvoir faire varier sa valeur, et ainsi observer son influence sur **Estimation CA(publicité)**.
286
287 (% style="text-align:center" %)
288 [[image:predictif_tutorial_fr_html_d5cf08bd07a2b6f7.png||height="245" width="554"]]
289
290 == Modèle mathématique ==
291
292 Les mesures simulées utilisent la régression linéaire multiple afin de modéliser la relation entre la mesure à analyser et les mesures dépendantes. Cela signifie que DigDash Enterprise n'est pas capable de modéliser automatiquement des relations d'ordre non linéaire. Toutefois, l'utilisateur peut appliquer des transformations sur ces données manuellement soit via les **transformateurs de données**, soit via les **mesures calculées**.
293
294 De plus, à l'instar des mesures prédictives, il est important de comprendre que les algorithmes présentés précédemment se servent du passé pour prédire les valeurs futures. Cela implique plusieurs points :
295
296 * Plus il y a de données, plus la prédiction sera précise
297 * Les algorithmes se basant sur le passé, ils considèrent que le futur sera similaire à celui-ci. Par conséquent, ils ne sont pas capables de prédire des chocs structurels
298 * L'exactitude des prédictions ne peut être garantie et n'est pas à prendre d'un point de vue déterministe.
299
300 = Groupement intelligent (clustering) =
301
302 == Création d'un groupement intelligent ==
303
304 Le groupement intelligent (clustering), permet de grouper les membres d'une dimension selon certaines mesures. L'objectif est de grouper les membres « similaires ». La notion de similarité est à interpréter au sens mathématique du terme, c'est à dire des membres qui ont des valeurs proches pour des mesures données.
305
306 Dans la section Hiérarchies, cliquez sur **Ajouter** puis **Groupement intelligent**. La boîte **Groupement intelligent** s'affiche.
307
308 (% style="text-align:center" %)
309 [[image:predictif_tutorial_fr_html_aa3f83e6f7088d3e.png||height="315" width="554"]]
310
311 La partie supérieure de la fenêtre est similaire à cella de création d'une **hiérarchie manuelle**. On peut y définir l'identifiant de la hiérarchie (par défaut Groupe 0), y ajouter des niveaux, et changer l'identifiant des niveaux.
312
313 Les différences se trouvent dans les groupes **Définition du niveau** et **Détails**.
314
315 Dans le groupe **Définition du niveau** on définit selon quelles mesures nous souhaitons grouper les membres du **niveau courant**. Pour cela, vous devez cocher les mesures selon lesquelles vous souhaitez grouper vos membres. Pour chacune de ces mesures vous devez également sélectionner son agrégation.
316
317 Le groupe **Détails** permet de renseigner deux éléments :
318
319 1. Le nombre de clusters (nombre de groupes) du **niveau courant**
320 1. Le nom de ces clusters
321
322 Le nom des clusters peut être composé de différents mots clés que l'on introduit grâce au bouton **Ajouter un mot clé** situé en bas à droite de la fenêtre.
323
324 Les mots clés proposés par DigDash pour nommer les clusters sont les suivants :
325
326 * **${bestMeasures}** qui permet de nommer les clusters selon les 3 mesures qui différencient le plus les différents groupes. Chaque nom de cluster sera donc de la forme **Mesure1Position,Mesure2Position,Mesure3Position** où la position est comprise entre 0 et nombre de clusters du niveau, et indique comment la moyenne de la mesure se positionne par rapport à celle des autres groupes (pour plus de détails voir l'exemple ci-après).
327 * ${Measure(nomMesure)} qui permet de choisir soit même les mesures que l'on souhaite faire intervenir dans le nom des clusters
328
329 Par défaut le nom des clusters est égal à **${bestMeasures}**.
330
331 Attention, il n'est pas possible de combiner **${bestMeasures}** avec **${Measure(nomMesure)}**.
332
333 L'utilisateur a également la possibilité d'insérer du texte personnel dans le nom des clusters.
334
335 Pour finaliser la première étape de la création du groupement intelligent l'utilisateur doit cliquer sur le bouton **Suivant.** Cela a pour effet de déclencher le calcul des groupes et de l'amener à une seconde fenêtre, identique à celle de création d'une **hiérarchie manuelle**, mais dont les groupes sont déjà constitués.
336
337 Cette seconde étape est donc totalement identique à la création d'une hiérarchie manuelle. Vous avez exactement les mêmes possibilités que dans ce cas. Pour plus de détails, se référer à la partie sur la **création d'une hiérarchie manuelle**.
338
339 == Exemples ==
340
341 Exemple 1 :
342
343 Nous disposons de données sur les magasins d'une chaîne de supermarchés. Nous souhaitons créer 5 groupes de magasins similaires en terme de budget publicitaire et de chiffre d'affaires. Nous sélectionnons le mot clé **${bestMeasures}** pour nommer les groupes (clusters) de magasins.
344
345 (% style="text-align:center" %)
346 [[image:predictif_tutorial_fr_html_2108c2ed0403128e.png||height="315" width="554"]]
347
348 En cliquant sur le bouton suivant nous obtenons le résultat ci-dessous :
349
350 (% style="text-align:center" %)
351 [[image:predictif_tutorial_fr_html_c30615d265d6f4db.png||height="316" width="554"]]
352
353 Nous obtenons 5 groupes de magasins comme demandé à l'étape précédente. Le nom des groupes est de la forme Cak€Position,budget publicitairePosition.
354
355 Pour le groupe **CAk€0,budget publicitaire0** cela signifie que ce groupe est constitué des magasins ayant le chiffre d'affaires et le budget publicité le plus bas (position 0). Le groupe **CAk€4, budget publicitaire4** quant a lui est constitué des magasins ayant le chiffre d'affaires et le budget publicité le plus élevé.
356
357 Exemple 2 :
358
359 Nous disposons de données sur des vins :
360
361 - Qualité du vin (moyenne de notes d'utilisateurs)
362
363 - Indicateurs chimiques (pH, degré d'alcool, densité, etc)
364
365 Nous souhaitons grouper nos vins en quatre groupes, à la fois selon leur qualité, mais également selon leur degré alcoolique.
366
367 Pour cela nous complétons l'interface **Groupement intelligent** de la manière suivante et nous cliquons sur le bouton **Suivant** :
368
369 (% style="text-align:center" %)
370 [[image:predictif_tutorial_fr_html_f6d63c867439f26a.png||height="315" width="554"]]
371
372 Dans l'interface suivante nous validons la création de notre hiérarchie.
373
374 Ensuite, nous créons un graphique de type **Scatter**. Sur l'axe **Y** nous positionnons le degré alcoolique du vin, sur l'axe **X** la qualité de ceux-ci. Dans le champ **Bulles** nous plaçons notre dimension id échantillon, qui correspond aux identifiants de nos vins. Nous la laissons au niveau racine. Pour le champ **Cycler les couleurs** nous plaçons également la dimension id échantillon, sauf que cette fois nous nous mettons au niveau 0 de notre hiérarchie.
375
376 Nous obtenons la représentation graphique suivante :
377
378 (% style="text-align:center" %)
379 [[image:predictif_tutorial_fr_html_d414e25b15f94497.png||height="270" width="554"]]
380
381 == Considérations mathématiques ==
382
383 Les groupes (clusters) sont déterminés grâce à l'algorithme Kmeans++ dont le résultat dépend des paramètres d'initialisation. Ainsi, si vous relancez plusieurs fois la création de groupement intelligents avec les mêmes paramètres, il est normal que vous n'obteniez pas exactement les mêmes résultats.