{"id":20932,"date":"2024-02-21T07:19:35","date_gmt":"2024-02-21T06:19:35","guid":{"rendered":"https:\/\/complex-systems-ai.com\/?page_id=20932"},"modified":"2024-02-21T07:28:24","modified_gmt":"2024-02-21T06:28:24","slug":"validation-croisee","status":"publish","type":"page","link":"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/cross-validation\/","title":{"rendered":"Cross-validation for time series"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20932\" class=\"elementor elementor-20932\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f03c19b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f03c19b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-7351de5\" data-id=\"7351de5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a6b94d elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"1a6b94d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/prediction-forecasting\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Forecasting<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-92348a3\" data-id=\"92348a3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4452a2d elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"4452a2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Page d'accueil<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-25b6b02\" data-id=\"25b6b02\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0a91818 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"0a91818\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/plat.ai\/blog\/difference-between-prediction-and-forecast\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Wiki<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bf2faa7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bf2faa7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-aa1b033\" data-id=\"aa1b033\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0a7c98e elementor-widget elementor-widget-heading\" data-id=\"0a7c98e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenus<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/cross-validation\/#Validation-croisee-cross-validation-pour-les-series-temporelles\" >Validation crois\u00e9e (cross-validation) pour les s\u00e9ries temporelles<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/cross-validation\/#Principe\" >Principe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/cross-validation\/#Methodologie\" >M\u00e9thodologie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/cross-validation\/#Code\" >Code<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Validation-croisee-cross-validation-pour-les-series-temporelles\"><\/span>Validation crois\u00e9e (cross-validation) pour les s\u00e9ries temporelles<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-68c1a7b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"68c1a7b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0812abb\" data-id=\"0812abb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e21fe7e elementor-widget elementor-widget-text-editor\" data-id=\"e21fe7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dans ce tutoriel, nous allons expliquer le principe de validation crois\u00e9e durant l&rsquo;apprentissage d&rsquo;une s\u00e9rie temporelle.<\/p><p><img decoding=\"async\" class=\"aligncenter wp-image-11096 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/cropped-Capture.png\" alt=\"validation crois\u00e9e\" width=\"97\" height=\"97\" title=\"\"><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-eda0861 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"eda0861\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5bb590e\" data-id=\"5bb590e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0a3fd5d elementor-widget elementor-widget-heading\" data-id=\"0a3fd5d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Principe\"><\/span>Principe<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bfff4e6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bfff4e6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ad26912\" data-id=\"ad26912\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-daa28a9 elementor-widget elementor-widget-text-editor\" data-id=\"daa28a9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>L&rsquo;analyse des s\u00e9ries chronologiques repr\u00e9sente une approche fondamentale dans le domaine des statistiques et de l&rsquo;apprentissage automatique, visant \u00e0 comprendre et \u00e0 pr\u00e9dire les mod\u00e8les de donn\u00e9es qui \u00e9voluent au fil du temps. Compte tenu des caract\u00e9ristiques uniques des donn\u00e9es de s\u00e9ries chronologiques, notamment les tendances, la saisonnalit\u00e9 et l&rsquo;autocorr\u00e9lation, les techniques traditionnelles de validation crois\u00e9e ne parviennent souvent pas \u00e0 fournir des estimations de performances pr\u00e9cises et fiables.<\/p><p>Pour relever ces d\u00e9fis, la validation crois\u00e9e des s\u00e9ries chronologiques appara\u00eet comme une m\u00e9thodologie essentielle, adapt\u00e9e pour respecter l\u2019ordre temporel inh\u00e9rent aux donn\u00e9es. Cet essai explore les subtilit\u00e9s de la validation crois\u00e9e des s\u00e9ries chronologiques, en soulignant sa signification, sa m\u00e9thodologie, ses variations et ses consid\u00e9rations pratiques.<\/p><p>Pour naviguer sur le fleuve du temps, il faut respecter son courant. La validation crois\u00e9e des s\u00e9ries chronologiques incarne cette sagesse, garantissant que nos pr\u00e9dictions sont ancr\u00e9es non seulement dans les donn\u00e9es, mais dans le flux temporel lui-m\u00eame.<\/p><p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-20937 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/cross.gif\" alt=\"cross-validation\" width=\"648\" height=\"288\" title=\"\"><\/p><p>L&rsquo;objectif principal de la validation crois\u00e9e des s\u00e9ries chronologiques est d&rsquo;\u00e9valuer les performances pr\u00e9dictives d&rsquo;un mod\u00e8le d&rsquo;une mani\u00e8re qui refl\u00e8te son application future. Ceci est crucial dans divers domaines, tels que la finance, la m\u00e9t\u00e9orologie et l\u2019\u00e9pid\u00e9miologie, o\u00f9 les d\u00e9cisions reposent sur des pr\u00e9visions.<\/p><p>Les m\u00e9thodes traditionnelles de validation crois\u00e9e, qui partitionnent les donn\u00e9es de mani\u00e8re al\u00e9atoire, peuvent perturber la s\u00e9quence temporelle, conduisant \u00e0 des estimations de performances trop optimistes et \u00e0 des mod\u00e8les qui \u00e9chouent dans les dynamiques temporelles r\u00e9elles. La validation crois\u00e9e des s\u00e9ries chronologiques pr\u00e9serve l\u2019ordre chronologique, garantissant que les pr\u00e9dictions sont toujours bas\u00e9es sur des informations pass\u00e9es, fournissant ainsi une \u00e9valuation plus r\u00e9aliste des capacit\u00e9s pr\u00e9dictives d\u2019un mod\u00e8le.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b42d528 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b42d528\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d8c3cc9\" data-id=\"d8c3cc9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a75cdaf elementor-widget elementor-widget-heading\" data-id=\"a75cdaf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Methodologie\"><\/span>M\u00e9thodologie<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4bd8b3d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4bd8b3d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0ebfa68\" data-id=\"0ebfa68\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e77122b elementor-widget elementor-widget-text-editor\" data-id=\"e77122b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>L\u2019essence de la validation crois\u00e9e des s\u00e9ries chronologiques r\u00e9side dans son approche de division s\u00e9quentielle de l\u2019ensemble de donn\u00e9es. Contrairement au partitionnement al\u00e9atoire, il \u00e9tend syst\u00e9matiquement l&rsquo;ensemble de donn\u00e9es d&rsquo;entra\u00eenement pour inclure des observations plus r\u00e9centes, tandis que l&rsquo;ensemble de test comprend des observations qui suivent imm\u00e9diatement celles de l&rsquo;ensemble d&rsquo;entra\u00eenement. Cette proc\u00e9dure est r\u00e9p\u00e9t\u00e9e de mani\u00e8re it\u00e9rative, avan\u00e7ant \u00e0 chaque fois le point de coupure entre les ensembles de formation et de test. Cette approche garantit que le mod\u00e8le est valid\u00e9 sur diff\u00e9rentes p\u00e9riodes, capturant diverses dynamiques temporelles et changements structurels potentiels dans les donn\u00e9es.<\/p><p>Plusieurs variantes de validation crois\u00e9e de s\u00e9ries chronologiques r\u00e9pondent aux besoins et contraintes sp\u00e9cifiques des ensembles de donn\u00e9es d\u00e9pendants du temps\u00a0:<\/p><ul><li>Pr\u00e9vision en une seule \u00e9tape\u00a0: il s&rsquo;agit de l&rsquo;approche la plus simple, dans laquelle le mod\u00e8le est form\u00e9 et valid\u00e9 \u00e0 des moments uniques et successifs. Il est particuli\u00e8rement utile pour \u00e9valuer les performances du mod\u00e8le dans les pr\u00e9dictions avec une longueur d\u2019avance.<\/li><li>Pr\u00e9vision en plusieurs \u00e9tapes\u00a0: dans la pr\u00e9vision en plusieurs \u00e9tapes, le mod\u00e8le est test\u00e9 sur plusieurs points temporels futurs \u00e0 chaque it\u00e9ration. Cette variation est cruciale pour \u00e9valuer les performances du mod\u00e8le sur des horizons plus longs, ce qui est essentiel pour la <a href=\"https:\/\/complex-systems-ai.com\/en\/planning-problem\/\">planification<\/a> strat\u00e9gique et la prise de d\u00e9cision.<\/li><li>Rolling Origin : \u00c9galement appel\u00e9e validation crois\u00e9e \u00ab Rolling Forecast Origin \u00bb, cette m\u00e9thode consiste \u00e0 avancer le point de d\u00e9part du test d\u00e9fini d\u2019une ou plusieurs p\u00e9riodes \u00e0 chaque it\u00e9ration. Il permet une \u00e9valuation compl\u00e8te de la stabilit\u00e9 et de la fiabilit\u00e9 du mod\u00e8le dans le temps.<\/li><li>Fen\u00eatre extensible\u00a0: contrairement \u00e0 la technique de l&rsquo;origine glissante, la variation de la fen\u00eatre extensible conserve toutes les donn\u00e9es pr\u00e9c\u00e9dentes dans l&rsquo;ensemble d&rsquo;apprentissage, augmentant progressivement sa taille. Cette approche est b\u00e9n\u00e9fique pour capturer les tendances et la saisonnalit\u00e9 \u00e0 long terme.<\/li><\/ul><p>La mise en \u0153uvre de la validation crois\u00e9e des s\u00e9ries chronologiques n\u00e9cessite de pr\u00eater attention \u00e0 plusieurs aspects pratiques\u00a0:<\/p><ul><li>Saisonnalit\u00e9 et tendances\u00a0: les mod\u00e8les doivent \u00eatre \u00e9valu\u00e9s sur diff\u00e9rentes saisons et phases de tendance pour garantir leur robustesse aux changements temporels.<\/li><li>Stationnarit\u00e9\u00a0:\u00a0s&rsquo;assurer que la s\u00e9rie chronologique est stationnaire, c&rsquo;est-\u00e0-dire que ses propri\u00e9t\u00e9s statistiques ne changent pas au fil du temps, peut \u00eatre crucial pour la fiabilit\u00e9 des r\u00e9sultats de validation crois\u00e9e.<\/li><li>Efficacit\u00e9 informatique\u00a0: la validation crois\u00e9e des s\u00e9ries chronologiques peut n\u00e9cessiter beaucoup de calculs, en particulier pour les grands ensembles de donn\u00e9es et les mod\u00e8les complexes. Des techniques efficaces de mise en \u0153uvre et d\u2019optimisation sont essentielles \u00e0 une utilisation pratique.<\/li><li>R\u00e9glage des param\u00e8tres\u00a0: la validation crois\u00e9e imbriqu\u00e9e peut \u00eatre utilis\u00e9e dans le cadre des s\u00e9ries chronologiques pour optimiser les param\u00e8tres du mod\u00e8le, am\u00e9liorant ainsi encore la pr\u00e9cision pr\u00e9dictive.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-33a7309 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"33a7309\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-250bb31\" data-id=\"250bb31\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-62e2fcf elementor-widget elementor-widget-heading\" data-id=\"62e2fcf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Code\"><\/span>Code<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b0859c5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b0859c5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7f0abe6\" data-id=\"7f0abe6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d38188 elementor-widget elementor-widget-text-editor\" data-id=\"4d38188\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Pour illustrer la validation crois\u00e9e des s\u00e9ries chronologiques avec un exemple de code Python complet, nous allons g\u00e9n\u00e9rer un ensemble de donn\u00e9es de s\u00e9ries chronologiques synth\u00e9tiques, mettre en \u0153uvre la validation crois\u00e9e des s\u00e9ries chronologiques, former un mod\u00e8le simple, l&rsquo;\u00e9valuer \u00e0 l&rsquo;aide de m\u00e9triques appropri\u00e9es et visualiser les r\u00e9sultats. Cet exemple utilisera des biblioth\u00e8ques Python courantes telles que pandas, numpy, matplotlib et sklearn.<\/p><p>Commen\u00e7ons par le code\u00a0:<\/p><pre class=\"og oh oi oj ok pj pi pk bo pl ba bj\"><span id=\"868a\" class=\"pm ml fr pi b bf pn po l pp pq\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">import<\/span> numpy <span class=\"hljs-keyword\">as<\/span> np<br \/><span class=\"hljs-keyword\">import<\/span> pandas <span class=\"hljs-keyword\">as<\/span> pd<br \/><span class=\"hljs-keyword\">from<\/span> sklearn.linear_model <span class=\"hljs-keyword\">import<\/span> LinearRegression<br \/><span class=\"hljs-keyword\">from<\/span> sklearn.metrics <span class=\"hljs-keyword\">import<\/span> mean_squared_error<br \/><span class=\"hljs-keyword\">import<\/span> matplotlib.pyplot <span class=\"hljs-keyword\">as<\/span> plt<br \/><br \/><span class=\"hljs-comment\"># Step 1: Generate Synthetic Dataset<\/span><br \/>np.random.seed(<span class=\"hljs-number\">42<\/span>)  <span class=\"hljs-comment\"># For reproducibility<\/span><br \/>time = np.arange(<span class=\"hljs-number\">100<\/span>)<br \/>trend = time * <span class=\"hljs-number\">0.5<\/span><br \/>seasonality = <span class=\"hljs-number\">10<\/span> * np.sin(np.pi * time \/ <span class=\"hljs-number\">6<\/span>)<br \/>noise = np.random.normal(loc=<span class=\"hljs-number\">0<\/span>, scale=<span class=\"hljs-number\">5<\/span>, size=time.size)<br \/>data = trend + seasonality + noise<br \/>dates = pd.date_range(start=<span class=\"hljs-string\">'2020-01-01'<\/span>, periods=time.size, freq=<span class=\"hljs-string\">'D'<\/span>)<br \/>ts_data = pd.Series(data, index=dates)<br \/><br \/><span class=\"hljs-comment\"># Step 2: Time Series Cross-Validation Setup<\/span><br \/><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title.function\">time_series_cv<\/span>(<span class=\"hljs-params\">X, y, model, n_splits<\/span>):<br \/>    test_scores = []<br \/>    <br \/>    tscv = TimeSeriesSplit(n_splits=n_splits)<br \/>    <br \/>    <span class=\"hljs-keyword\">for<\/span> train_idx, test_idx <span class=\"hljs-keyword\">in<\/span> tscv.split(X):<br \/>        X_train, X_test = X[train_idx], X[test_idx]<br \/>        y_train, y_test = y[train_idx], y[test_idx]<br \/>        <br \/>        model.fit(X_train, y_train)<br \/>        y_pred = model.predict(X_test)<br \/>        test_score = mean_squared_error(y_test, y_pred)<br \/>        test_scores.append(test_score)<br \/>    <br \/>    <span class=\"hljs-keyword\">return<\/span> test_scores<br \/><br \/><span class=\"hljs-comment\"># Preparing data for modeling<\/span><br \/>X = time.reshape(-<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>)<br \/>y = data<br \/><br \/><span class=\"hljs-comment\"># Step 3: Model Training<\/span><br \/>model = LinearRegression()<br \/><br \/><span class=\"hljs-comment\"># Import TimeSeriesSplit<\/span><br \/><span class=\"hljs-keyword\">from<\/span> sklearn.model_selection <span class=\"hljs-keyword\">import<\/span> TimeSeriesSplit<br \/>n_splits = <span class=\"hljs-number\">5<\/span><br \/>scores = time_series_cv(X, y, model, n_splits=n_splits)<br \/><br \/><span class=\"hljs-comment\"># Step 4: Evaluate Model Performance<\/span><br \/><span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">f'MSE Scores for each split: <span class=\"hljs-subst\">{scores}<\/span>'<\/span>)<br \/><span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">f'Average MSE: <span class=\"hljs-subst\">{np.mean(scores)}<\/span>'<\/span>)<br \/><br \/><span class=\"hljs-comment\"># Step 5: Visualize the Results<\/span><br \/>plt.figure(figsize=(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">6<\/span>))<br \/>plt.plot(dates, data, label=<span class=\"hljs-string\">'True Value'<\/span>, color=<span class=\"hljs-string\">'blue'<\/span>)<br \/>plt.plot(dates, model.predict(X), label=<span class=\"hljs-string\">'Predicted Value'<\/span>, color=<span class=\"hljs-string\">'red'<\/span>, linestyle=<span class=\"hljs-string\">'--'<\/span>)<br \/>plt.title(<span class=\"hljs-string\">'Time Series Cross-Validation: True vs Predicted'<\/span>)<br \/>plt.legend()<br \/>plt.show()<\/span><\/pre><p>Ce code effectue les op\u00e9rations suivantes\u00a0:<\/p><ul><li>G\u00e9n\u00e8re un ensemble de donn\u00e9es de s\u00e9ries chronologiques synth\u00e9tiques avec une tendance, une saisonnalit\u00e9 et un bruit.<\/li><li>Impl\u00e9mente une strat\u00e9gie de validation crois\u00e9e de l&rsquo;origine des pr\u00e9visions glissantes \u00e0 l&rsquo;aide de TimeSeriesSplit de sklearn.<\/li><li>Entra\u00eene un mod\u00e8le de r\u00e9gression lin\u00e9aire sur les donn\u00e9es de s\u00e9ries chronologiques.<\/li><li>\u00c9value les performances du mod\u00e8le \u00e0 l\u2019aide de la m\u00e9trique Mean Squared Error (MSE).<\/li><li>Visualise les valeurs r\u00e9elles et pr\u00e9dites sur la s\u00e9rie chronologique.<\/li><\/ul><pre class=\"og oh oi oj ok pj pi pk bo pl ba bj\"><span id=\"18a1\" class=\"pm ml fr pi b bf pn po l pp pq\" data-selectable-paragraph=\"\">MSE Scores <span class=\"hljs-keyword\">for<\/span> <span class=\"hljs-keyword\">each<\/span> <span class=\"hljs-keyword\">split<\/span>: [<span class=\"hljs-number\">113.85938733387366<\/span>, <span class=\"hljs-number\">125.52615877943208<\/span>, <span class=\"hljs-number\">70.17575280052887<\/span>, <span class=\"hljs-number\">74.29515859510016<\/span>, <span class=\"hljs-number\">78.3146223127321<\/span>]<br \/>Average MSE: <span class=\"hljs-number\">92.43421596433339<\/span><\/span><\/pre><figure class=\"og oh oi oj ok ol od oe paragraph-image\"><div class=\"ps pt ee pu bg pv\" tabindex=\"0\" role=\"button\"><img decoding=\"async\" class=\"alignnone wp-image-20938 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/cross1.webp\" alt=\"cross-validation\" width=\"720\" height=\"456\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/cross1.webp 720w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/cross1-300x190.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/cross1-18x12.webp 18w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/div><div tabindex=\"0\" role=\"button\">N&rsquo;oubliez pas que cet exemple utilise un mod\u00e8le de r\u00e9gression lin\u00e9aire simple \u00e0 des fins de d\u00e9monstration. En pratique, vous s\u00e9lectionnerez un mod\u00e8le en fonction des caract\u00e9ristiques de vos donn\u00e9es de s\u00e9ries chronologiques et des exigences sp\u00e9cifiques de votre t\u00e2che de pr\u00e9vision.<\/div><\/figure>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Forecasting Homepage Wiki Cross-validation for time series In this tutorial, we will explain the principle of cross-validation when learning a \u2026 <\/p>","protected":false},"author":1,"featured_media":0,"parent":20753,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-20932","page","type-page","status-publish","hentry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/comments?post=20932"}],"version-history":[{"count":4,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20932\/revisions"}],"predecessor-version":[{"id":20941,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20932\/revisions\/20941"}],"up":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20753"}],"wp:attachment":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/media?parent=20932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}