	{"id":21367,"date":"2020-11-25T13:32:21","date_gmt":"2020-11-25T13:32:21","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=21367"},"modified":"2024-09-20T17:45:24","modified_gmt":"2024-09-20T16:45:24","slug":"reducing-product-stock-outs-in-hypermarkets-with-time-series-modelling","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/fr\/blog\/reducing-product-stock-outs-in-hypermarkets-with-time-series-modelling\/","title":{"rendered":"R\u00e9duction des ruptures de stock dans les hypermarch\u00e9s gr\u00e2ce \u00e0 la mod\u00e9lisation des s\u00e9ries temporelles"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column avada-news-bloc-image\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:left;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"300\" height=\"74\" title=\"Moyen Blog\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-300x74.png\" alt class=\"lazyload img-responsive wp-image-60582\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%274000%27%20height%3D%27992%27%20viewBox%3D%270%200%204000%20992%27%3E%3Crect%20width%3D%274000%27%20height%3D%27992%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-200x50.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-400x99.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-600x149.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-800x198.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-1200x298.png 1200w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 800px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-top:10px;--awb-padding-right:10px;--awb-padding-bottom:10px;--awb-padding-left:10px;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>ACTUALIT\u00c9S \/ TECHNOLOGIE DE L'AI<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>25 novembre 2020<br \/>\nDans cet article, Kasra Mansouri et Camille Le Gonidec, scientifiques principaux de Artefact, expliquent comment cr\u00e9er un produit scientifique data avec des contraintes commerciales \u00e9lev\u00e9es et un nombre limit\u00e9 de data. D\u00e9couvrez comment ils ont pu r\u00e9duire les ruptures de stock dans les hypermarch\u00e9s gr\u00e2ce \u00e0 la mod\u00e9lisation des s\u00e9ries temporelles. <\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-text-color:#000000;\"><section class=\"df dg dh di dj\">\n<div class=\"n p\">\n<div class=\"ab ac ae af ag dk ai aj\">\n<p id=\"e00e\" class=\"ip iq dn ce ir is it gr iu iv iw gv ix iy iz ja jb jc jd je jf jg jh ji jj jk ek\"><span style=\"color: #ff0066;\"><strong>\u00c9nonc\u00e9 du probl\u00e8me<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons tous ressenti cette frustration du dimanche matin lorsque nous ne trouvons pas nos c\u00e9r\u00e9ales ou notre soda pr\u00e9f\u00e9r\u00e9s dans les rayons de notre magasin local. En effet, les ruptures de stock dans les rayons sont une source de douleur majeure pour les magasins de d\u00e9tail : ce n'est pas seulement une opportunit\u00e9 de vente perdue, mais aussi une baisse de la satisfaction des clients, qui seront plus enclins \u00e0 changer de magasin.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Deux ph\u00e9nom\u00e8nes sont principalement \u00e0 l'origine de la rupture de stock d'un rayon :<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Le magasin ne dispose pas du produit en question, c'est-\u00e0-dire que m\u00eame l'entrep\u00f4t du magasin est vide de ce produit. Cela peut \u00eatre d\u00fb \u00e0 une sous-estimation de la demande du client ou \u00e0 des probl\u00e8mes logistiques.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Le magasin a le produit en stock mais l'\u00e9tag\u00e8re est vide. Les rayons sont g\u00e9n\u00e9ralement remplis tous les matins, mais aucun employ\u00e9 n'a pour t\u00e2che sp\u00e9cifique de s'occuper du stock pendant la journ\u00e9e. Rep\u00e9rer une rupture de stock en passant devant l'\u00e9tag\u00e8re peut \u00eatre viable pour les petits magasins, mais devient un probl\u00e8me pour les hypermarch\u00e9s compte tenu de leur taille. Certains rayons restent vides (alors que le niveau des stocks est positif) jusqu'\u00e0 ce qu'un employ\u00e9 les rep\u00e8re ou jusqu'\u00e0 la mise en rayon du lendemain matin.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Nous allons aborder ici ce deuxi\u00e8me type de ruptures de stock puisque notre objectif \u00e9tait d'aider les employ\u00e9s d'un hypermarch\u00e9 \u00e0 rep\u00e9rer les ruptures de stock en rayon au cours de la journ\u00e9e afin qu'ils puissent les corriger et recommencer \u00e0 vendre le produit. Nous avons pass\u00e9 beaucoup de temps sur le terrain pour comprendre les probl\u00e8mes de nos utilisateurs et concevoir la meilleure solution pour y r\u00e9pondre.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons d\u00e9couvert que la meilleure option pour les \u00e9quipes op\u00e9rationnelles serait de recevoir une alerte quotidienne vers 14 heures (pas besoin de temps r\u00e9el), avec une liste d'articles en rupture de stock qu'elles devraient aller corriger.<\/span><\/p>\n<p><b>Mais<\/b> <b>Comment rep\u00e9rer les ruptures de stock sans indice visuel ?<\/b><span style=\"font-weight: 400;\">? En effet, l'installation de cam\u00e9ras ou de capteurs visuels serait trop co\u00fbteuse et nous ne pouvons pas demander \u00e0 notre personnel d'aller \u201cv\u00e9rifier\u201d l'\u00e9tat des \u00e9tag\u00e8res tous les jours pour collecter data. Notre principale difficult\u00e9 r\u00e9side dans le fait qu'il y a <\/span><b>pas d'historique data disponible en rayon ruptures de stock<\/b><span style=\"font-weight: 400;\"> (la seule information dont nous disposons est le niveau global des stocks \u00e0 la fin de la journ\u00e9e), nous ne pouvons donc nous appuyer que sur un ensemble restreint de caract\u00e9ristiques : <\/span><b>les ventes en temps r\u00e9el, les attributs des articles et les caract\u00e9ristiques du magasin<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"df dg dh di dj\">\n<div class=\"n p\">\n<div class=\"ab ac ae af ag dk ai aj\" style=\"text-align: center;\">\n<p id=\"d58e\" class=\"ip iq dn ce ir is it gr iu iv iw gv ix iy iz ja jb jc jd je jf jg jh ji jj jk ek\" style=\"text-align: left;\"><span style=\"color: #ff0066;\"><strong>Approches propos\u00e9es<\/strong><\/span><\/p>\n<p id=\"4b3c\" class=\"gm gn dn go b gp jl gr gs gt jm gv gw gx jn gz ha hb jo hd he hf jp hh hi hj df ek\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Comme expliqu\u00e9 ci-dessus, la principale difficult\u00e9 \u00e0 laquelle nous avons \u00e9t\u00e9 confront\u00e9s \u00e9tait l'absence de data \u00e9tiquet\u00e9 pour les ruptures de stock en rayon, ce qui nous a emp\u00each\u00e9s d'adopter l'approche ML initiale que nous avions \u00e0 l'esprit. Nous avons donc envisag\u00e9 une autre approche pour construire notre mod\u00e8le de d\u00e9tection.<\/p>\n<p id=\"74b7\" class=\"ip iq dn ce ir is jz gr iu iv ka gv ix iy kb ja jb jc kc je jf jg kd ji jj jk ek\" style=\"text-align: left;\"><span style=\"color: #ff0066;\"><strong>Pr\u00e9diction des s\u00e9ries temporelles des ventes horaires<\/strong><\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Notre premi\u00e8re approche alternative consistait \u00e0 <\/span><b>d\u00e9tecter les anomalies de vente (ventes anormalement basses) en<\/b> <b>pr\u00e9voir les ventes horaires de produits et les comparer aux ventes r\u00e9elles<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">L'id\u00e9e sous-jacente est d'estimer\/pr\u00e9dire la quantit\u00e9 de ventes r\u00e9guli\u00e8res que nous attendons d'un produit lorsqu'il n'y a pas d\u201c\u201danomalies\u201c dans le magasin, puis de les comparer \u00e0 ses ventes r\u00e9elles et d'\u00e9mettre une alerte si la diff\u00e9rence est \u201d\u00e9norme\". Ainsi, en appliquant notre mod\u00e8le tous les jours \u00e0 14 heures, nous pourrions pr\u00e9dire les ventes de chaque produit jusqu'\u00e0 14 heures, puis d\u00e9tecter les anomalies en comparant les ventes r\u00e9elles de chaque produit \u00e0 nos estimations.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Comme point de d\u00e9part, nous avons d\u00e9velopp\u00e9 un<\/span><b> Mod\u00e8le de moyenne mobile<\/b><span style=\"font-weight: 400;\">. Pour chaque heure, le mod\u00e8le \u00e9tablit ses pr\u00e9visions en prenant la moyenne des ventes du produit \u00e0 la m\u00eame heure au cours des 30 derniers jours. Nous comparons ensuite cette valeur aux ventes r\u00e9elles du produit pendant cette heure. Si l'in\u00e9galit\u00e9 suivante est v\u00e9rifi\u00e9e, nous lan\u00e7ons une alerte de rupture de stock.<\/span><\/p>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"cx cy ke\">\n<div class=\"ib s ht ic\">\n<div class=\"kf ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vm vn t u v hy aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1Dfw0v_eKAd3XlfMEW9hTtQ.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1Dfw0v_eKAd3XlfMEW9hTtQ.png\" data-sizes=\"auto\" data-orig-sizes=\"616px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27616%27%20height%3D%2722%27%20viewBox%3D%270%200%20616%2022%27%3E%3Crect%20width%3D%27616%27%20height%3D%2722%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1Dfw0v_eKAd3XlfMEW9hTtQ.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1Dfw0v_eKAd3XlfMEW9hTtQ.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1Dfw0v_eKAd3XlfMEW9hTtQ.png 616w\" alt=\"Image for post\" width=\"616\" height=\"22\" \/><\/p>\n<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"58da\" class=\"gm gn dn go b gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj df ek\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Cette approche est bas\u00e9e sur l'hypoth\u00e8se que les ventes horaires des produits suivent une courbe d'\u00e9volution.\u00a0<strong class=\"go jy\">Distribution normale\u00a0<\/strong>et vise \u00e0 alerter sur les produits situ\u00e9s en dehors du 95% de l'intervalle de confiance.<\/p>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"hr hs ht hu aj hv\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy kg\">\n<div class=\"ib s ht ic\">\n<div class=\"kh ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload alignnone size-full wp-image-21211\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/reducing-product.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/reducing-product.png\" alt=\"\" width=\"700\" height=\"439\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27700%27%20height%3D%27439%27%20viewBox%3D%270%200%20700%20439%27%3E%3Crect%20width%3D%27700%27%20height%3D%27439%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/reducing-product-200x125.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/reducing-product.png 700w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><figcaption class=\"ki kj cz cx cy kk kl ce b eu cg fx\" data-selectable-paragraph=\"\"><em>Figure 1 : Exemple de distribution normale<\/em><\/figcaption><\/figure>\n<p id=\"635c\" class=\"gm gn dn go b gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj df ek\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Et ce n'est pas du tout le cas ! En fait, nous avons tr\u00e8s peu de signaux de s\u00e9ries temporelles si nous examinons les ventes horaires dans un magasin, et ce simplement parce que la majorit\u00e9 des produits ont des ventes nulles pendant plusieurs heures au cours de la journ\u00e9e, de sorte que le mod\u00e8le pr\u00e9voirait une valeur proche de 0 (en prenant la moyenne des valeurs pass\u00e9es) pour l'heure donn\u00e9e. Par cons\u00e9quent, la mod\u00e9lisation des ventes horaires n'est clairement pas la bonne solution.<\/p>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"hr hs ht hu aj hv\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy km\">\n<div class=\"ib s ht ic\">\n<div class=\"kn ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vm vn t u v hy aj c\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27778%27%20height%3D%27374%27%20viewBox%3D%270%200%20778%20374%27%3E%3Crect%20width%3D%27778%27%20height%3D%27374%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0Y9NZMUJhdVXjJCM6.png 700w\" alt=\"Image for post\" width=\"778\" height=\"374\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><figcaption class=\"ki kj cz cx cy kk kl ce b eu cg fx\" data-selectable-paragraph=\"\"><em>Figure 2 : Quantit\u00e9 vendue par heure d'une boisson gazeuse<\/em><\/figcaption><\/figure>\n<p id=\"0d2b\" class=\"gm gn dn go b gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj df ek\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Nous avons essay\u00e9 de modifier l\u00e9g\u00e8rement notre approche en pr\u00e9disant\u00a0<strong class=\"go jy\">ventes quotidiennes<\/strong>\u00a0<strong class=\"go jy\">quantit\u00e9<\/strong> Cette approche aurait probablement fonctionn\u00e9 pour les produits \u00e0 forte rotation comme les sodas Coca-Cola, les bouteilles d'eau, etc. Cette approche aurait probablement fonctionn\u00e9 pour les produits \u00e0 forte rotation comme les sodas Coca-Cola, les bouteilles d'eau, etc. mais notre solution devait fonctionner pour tous les produits d'un hypermarch\u00e9, c'est pourquoi nous avons progressivement abandonn\u00e9 cette approche.<\/p>\n<\/div>\n<\/div>\n<\/section>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4\" style=\"--awb-text-color:#000000;\"><section class=\"df dg dh di dj\">\n<div class=\"n p\">\n<div class=\"ab ac ae af ag dk ai aj\" style=\"text-align: center;\">\n<p id=\"5aeb\" class=\"ip iq dn ce ir is jz gr iu iv ka gv ix iy kb ja jb jc kc je jf jg kd ji jj jk ek\" style=\"text-align: left;\"><strong><span style=\"color: #ff0066;\">D\u00e9tection d'anomalies \u00e0 l'aide de la distribution de Poisson<\/span><\/strong><\/p>\n<p class=\"ip iq dn ce ir is jz gr iu iv ka gv ix iy kb ja jb jc kc je jf jg kd ji jj jk ek\" style=\"text-align: left;\">Notre deuxi\u00e8me approche a consist\u00e9 \u00e0 essayer\u00a0<strong class=\"go jy\">mod\u00e9liser la fr\u00e9quence des ventes (et non la quantit\u00e9)<\/strong>,\u00a0<strong class=\"go jy\">c'est-\u00e0-dire le temps \u00e9coul\u00e9 entre 2 ventes cons\u00e9cutives d'un m\u00eame produit.<\/strong><\/p>\n<p class=\"ip iq dn ce ir is jz gr iu iv ka gv ix iy kb ja jb jc kc je jf jg kd ji jj jk ek\" style=\"text-align: left;\">Nous avons effectu\u00e9 des tests statistiques sur les ventes de certains produits data et nous avons r\u00e9alis\u00e9 que le temps \u00e9coul\u00e9 entre leurs deux ventes cons\u00e9cutives suit une distribution exponentielle, ce qui est intuitivement logique puisqu'une distribution exponentielle est g\u00e9n\u00e9ralement utilis\u00e9e pour mod\u00e9liser le temps \u00e9coul\u00e9 entre les diff\u00e9rentes occurrences d'un \u00e9v\u00e9nement.<\/p>\n<p class=\"ip iq dn ce ir is jz gr iu iv ka gv ix iy kb ja jb jc kc je jf jg kd ji jj jk ek\" style=\"text-align: left;\">La cons\u00e9quence logique est que <strong class=\"go jy\">nous<\/strong>\u00a0<strong class=\"go jy\">peut mod\u00e9liser le \u00abtaux de vente\u00bb d'un produit par une distribution de Poisson.<\/strong>\u00a0Par taux de vente, nous entendons le nombre de passages en caisse d'un produit au cours d'une heure, ind\u00e9pendamment de la quantit\u00e9 vendue.<\/p>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"hr hs ht hu aj hv\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy ko\">\n<div class=\"ib s ht ic\">\n<div class=\"kp ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vm vn t u v hy aj c\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27719%27%20height%3D%27379%27%20viewBox%3D%270%200%20719%20379%27%3E%3Crect%20width%3D%27719%27%20height%3D%27379%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0ukiXp84UQWCnJlQa.png 700w\" alt=\"Image for post\" width=\"719\" height=\"379\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><figcaption class=\"ki kj cz cx cy kk kl ce b eu cg fx\" data-selectable-paragraph=\"\"><em><strong>Figure 3 : Histogramme de la distribution du temps \u00e9coul\u00e9 entre chaque vente d'un biscuit sp\u00e9cifique<\/strong><\/em><\/figcaption><\/figure>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"hr hs ht hu aj hv\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy kq\">\n<div class=\"ib s ht ic\">\n<div class=\"kr ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vm vn t u v hy aj c\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27700%27%20height%3D%27526%27%20viewBox%3D%270%200%20700%20526%27%3E%3Crect%20width%3D%27700%27%20height%3D%27526%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0TL_yuefQkpDmu8tG.png 700w\" alt=\"Image for post\" width=\"700\" height=\"526\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><figcaption class=\"ki kj cz cx cy kk kl ce b eu cg fx\" data-selectable-paragraph=\"\"><em>Figure 4 : Exemple de distribution exponentielle<\/em><\/figcaption><\/figure>\n<p style=\"text-align: left;\">Par cons\u00e9quent, notre deuxi\u00e8me approche alternative consiste \u00e0 estimer le taux de vente r\u00e9gulier de chaque produit, qui est le taux de vente r\u00e9gulier de chaque produit, qui est le taux de vente r\u00e9gulier de chaque produit. <i>lambda<\/i> param\u00e8tre de la distribution de Poisson, puis comparez ce r\u00e9sultat \u00e0 ses ventes quotidiennes r\u00e9elles jusqu'\u00e0 14 heures.<\/p>\n<p style=\"text-align: left;\">Il s'agit d'une proc\u00e9dure en deux \u00e9tapes :<\/p>\n<p style=\"text-align: left;\"><strong><span style=\"text-align: center;\">Calcul de la <\/span><i style=\"text-align: center;\">lambda<\/i><\/strong><span style=\"text-align: center;\"><strong>:<\/strong> Au sein du <\/span><i style=\"text-align: center;\">lambda <\/i><span style=\"text-align: center;\">est la moyenne de la distribution de Poisson. Ainsi, pour l'estimer, nous devons calculer la moyenne de nos points data pass\u00e9s, c'est-\u00e0-dire le nombre moyen de passages en caisse par heure que le produit a eu dans le pass\u00e9. Nous avons pris une profondeur historique de 50 jours pour notre calcul afin de conserver les informations du pass\u00e9 proche. En outre, nous calculons la <\/span><i style=\"text-align: center;\">lambda<\/i><span style=\"text-align: center;\"> pour chaque jour de la semaine s\u00e9par\u00e9ment, car il existe une forte saisonnalit\u00e9 hebdomadaire dans les ventes de produits dans un hypermarch\u00e9.<\/span><\/p>\n<p style=\"text-align: left;\">Concr\u00e8tement, nous rassemblons les ventes data d'un produit au cours des 50 derniers jours, nous calculons son taux de vente pour chaque jour et nous calculons ensuite le taux de vente moyen pour chaque jour de la semaine ; notre calcul donne donc 7 <i>lambda <\/i>un pour chaque jour de la semaine. Ce calcul est effectu\u00e9 chaque semaine.<\/p>\n<p style=\"text-align: left;\"><strong>D\u00e9tection des anomalies :<\/strong> Chaque jour \u00e0 14 heures, nous recherchons la derni\u00e8re vente du produit. Nous calculons ensuite la probabilit\u00e9 (fonction de masse de probabilit\u00e9 de Poisson) de n'avoir aucune vente entre la derni\u00e8re vente et 14 heures, compte tenu des donn\u00e9es suivantes <i>lambda <\/i>param\u00e8tre. Si la probabilit\u00e9 est inf\u00e9rieure \u00e0 1%, nous consid\u00e9rons que le produit a un taux de vente anormalement bas.<\/p>\n<p style=\"text-align: left;\">Imaginons par exemple un soda Coca-Cola qui se vend r\u00e9guli\u00e8rement toutes les 20 minutes, et qui a donc une dur\u00e9e de vie de <i>lambda<\/i>=Nous calculons la fonction de masse de probabilit\u00e9 de Poisson d'avoir 0 vente pendant 3 heures sachant que le produit est vendu r\u00e9guli\u00e8rement 3 fois par heure.<\/p>\n<figure class=\"hl hm hn ho hp hq cx cy paragraph-image\">\n<div class=\"cx cy kt\">\n<div class=\"ib s ht ic\">\n<div class=\"ku ie s\">\n<div class=\"hw hx t u v hy aj bm hz ia\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vm vn t u v hy aj c\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/12nmsWSlgNgm56mhZMl35nw.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/12nmsWSlgNgm56mhZMl35nw.png\" data-sizes=\"auto\" data-orig-sizes=\"269px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27269%27%20height%3D%2753%27%20viewBox%3D%270%200%20269%2053%27%3E%3Crect%20width%3D%27269%27%20height%3D%2753%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"\" alt=\"Image for post\" width=\"269\" height=\"53\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<\/div>\n<\/div>\n<\/section>\n<div class=\"n p el ii ij ik\" style=\"text-align: left;\" role=\"separator\"><\/div>\n<section class=\"df dg dh di dj\">\n<div class=\"n p\">\n<div class=\"ab ac ae af ag dk ai aj\">\n<p id=\"a6bd\" class=\"ip iq dn ce ir is it gr iu iv iw gv ix iy iz ja jb jc jd je jf jg jh ji jj jk ek\" style=\"text-align: left;\"><span style=\"color: #ff0066;\"><strong>R\u00e9sultats<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons effectu\u00e9 des tests pr\u00e9liminaires sur notre mod\u00e8le de Poisson en essayant de mesurer sa capacit\u00e9 \u00e0 estimer les ventes \u00e0 14 heures. Le mod\u00e8le a \u00e9t\u00e9 capable d'estimer le nombre de caisses de produits avec une pr\u00e9cision de <\/span><b>67%<\/b><span style=\"font-weight: 400;\">. Ce r\u00e9sultat a confirm\u00e9 notre intuition selon laquelle un mod\u00e8le de Poisson pourrait \u00eatre l'outil ad\u00e9quat pour d\u00e9tecter avec pr\u00e9cision les p\u00e9nuries de produits. Nous avons donc d\u00e9cid\u00e9 de tester notre mod\u00e8le sur le terrain.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous nous sommes rendus dans deux magasins tous les deux jours pour tester et \u00e9valuer la pr\u00e9cision des alertes de notre mod\u00e8le sur 3000 produits que les magasins ont identifi\u00e9s comme prioritaires. Une alerte \u00e9tait consid\u00e9r\u00e9e comme pr\u00e9cise si le rayon \u00e9tait vide ou avait moins de 10% de sa capacit\u00e9 moyenne \u00e0 l'heure m\u00eame de l'envoi de l'alerte. Cette phase d'\u00e9valuation a dur\u00e9 2,5 mois et s'est traduite par une mesure de <\/span><b>taux de pr\u00e9cision de 58% (c'est-\u00e0-dire que 58% des alertes de rupture de stock de notre mod\u00e8le \u00e9taient exactes)<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">M\u00eame si la pr\u00e9cision du 58% n'est pas tr\u00e8s brillante, il faut comprendre que cette solution est <\/span><b>tr\u00e8s simple \u00e0 mettre en \u0153uvre<\/b><span style=\"font-weight: 400;\"> (il vous suffit d'avoir acc\u00e8s \u00e0 l'historique des ventes data et aux ventes data en temps quasi r\u00e9el dans les magasins) et peut <\/span><b>s'adapter facilement \u00e0 tous les magasins <\/b><span style=\"font-weight: 400;\">pour r\u00e9duire les risques de rupture de stock. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vous pouvez mettre en \u0153uvre cette solution pour chaque magasin dans <\/span><b>moins d'une semaine<\/b><span style=\"font-weight: 400;\"> et obtenez directement la pr\u00e9cision 58-60% ! Gardez \u00e0 l'esprit qu'un <\/span><b>un mod\u00e8le de classification al\u00e9atoire aurait une pr\u00e9cision de pr\u00e8s de 5%<\/b><span style=\"font-weight: 400;\"> car en g\u00e9n\u00e9ral, il y a environ 5% de produits en rupture de stock dans les rayons.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">De plus, cette solution pourrait faire partie d'un <\/span><b>un produit plus grand qui augmente<\/b> <b>toutes sortes d'alertes avec une boucle de r\u00e9troaction<\/b><span style=\"font-weight: 400;\">. Les alertes qui correspondent \u00e0 des ruptures de stock am\u00e8neront les employ\u00e9s du magasin \u00e0 prendre des mesures et \u00e0 r\u00e9approvisionner les rayons, tandis que les alertes qui ne correspondent pas \u00e0 des ruptures de stock pourront \u00eatre utilis\u00e9es pour une analyse plus approfondie afin de comprendre pourquoi le produit a eu un volume de ventes anormalement faible. On pourrait \u00e9galement envisager de construire un mod\u00e8le d'apprentissage automatique qui classerait les alertes comme des ruptures de stock ou autres, puisque nous commencerons \u00e0 collecter des donn\u00e9es \u00e9tiquet\u00e9es data.<\/span><\/p>\n<p><a href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\" target=\"_blank\" rel=\"noopener noreferrer\">Cet article a \u00e9t\u00e9 publi\u00e9 pour la premi\u00e8re fois sur The Artefact Tech Blog - une biblioth\u00e8que d'articles sur l'ing\u00e9nierie et la science data.<\/a><\/p>\n<\/div>\n<\/div>\n<\/section>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_hover_color: #ff0066;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-top:0px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"1057\" height=\"591\" title=\"data-driven\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271057%27%20height%3D%27591%27%20viewBox%3D%270%200%201057%20591%27%3E%3Crect%20width%3D%271057%27%20height%3D%27591%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/wp-content\/uploads\/2020\/06\/Global-Newsletter-Data-Digest_LinkedIn_600x315_april.jpg\" alt class=\"lazyload img-responsive wp-image-30246\"\/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_2 1_2 fusion-flex-column fusion-flex-align-self-center fusion-column-inner-bg-wrapper\" style=\"--awb-inner-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/go.pardot.com\/l\/597421\/2020-05-06\/2k5zzj\" target=\"_blank\" rel=\"noopener\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\"><p><b>Int\u00e9ress\u00e9 par le num\u00e9rique et le data marketing ?<\/b><\/p>\n<p>Inscrivez-vous \u00e0 Data Digest, la lettre d'information de Artefact, pour recevoir chaque mois dans votre bo\u00eete aux lettres \u00e9lectronique des conseils, des id\u00e9es et des avis utiles.<\/p>\n<p><b>Inscrivez-moi !<\/b><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>25 novembre 2020<br \/>\n Dans cet article, Kasra Mansouri et Camille Le Gonidec, chercheurs seniors chez Artefact, expliquent comment cr\u00e9er un produit scientifique data avec des ressources data limit\u00e9es et des contraintes m\u00e9tier importantes.\u00a0D\u00e9couvrez comment ils ont r\u00e9ussi \u00e0 r\u00e9duire les ruptures de stock dans les hypermarch\u00e9s gr\u00e2ce \u00e0 la mod\u00e9lisation de s\u00e9ries chronologiques.<\/p>","protected":false},"featured_media":21212,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[2995],"blog-language":[2991],"class_list":["post-21367","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-ai-technology","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/blog\/21367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/media\/21212"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/media?parent=21367"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/blog-category?post=21367"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/fr\/wp-json\/wp\/v2\/blog-language?post=21367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}