	{"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\/br\/blog\/reducing-product-stock-outs-in-hypermarkets-with-time-series-modelling\/","title":{"rendered":"Redu\u00e7\u00e3o da falta de estoque de produtos em hipermercados com modelagem de s\u00e9ries temporais"},"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=\"M\u00e9dio 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>NOT\u00cdCIAS \/ TECNOLOGIA AI<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>25 de novembro de 2020<br \/>\nNeste artigo, os cientistas s\u00eanior Artefact Kasra Mansouri e Camille Le Gonidec explicam como criar um produto cient\u00edfico data com restri\u00e7\u00f5es comerciais limitadas e elevadas. Descubra como eles conseguiram reduzir a falta de estoque de produtos em hipermercados com a modelagem de s\u00e9ries temporais. <\/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>Declara\u00e7\u00e3o do problema<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Todos n\u00f3s j\u00e1 sentimos aquela frustra\u00e7\u00e3o de domingo de manh\u00e3 quando n\u00e3o conseguimos encontrar nosso cereal ou refrigerante favorito na prateleira da loja local. Na verdade, a falta de estoque nas prateleiras \u00e9 um grande problema para as lojas de varejo: n\u00e3o se trata apenas de uma oportunidade perdida de vendas, mas tamb\u00e9m de uma queda na satisfa\u00e7\u00e3o do cliente, que estar\u00e1 mais propenso a mudar de loja.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dois fen\u00f4menos causam principalmente a falta de estoque em uma prateleira:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">A loja n\u00e3o tem o produto em quest\u00e3o, ou seja, at\u00e9 mesmo o dep\u00f3sito da loja est\u00e1 vazio do produto. Isso pode ser causado por uma demanda subestimada do cliente ou por problemas log\u00edsticos.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">A loja tem o produto em estoque, mas a prateleira est\u00e1 vazia. As prateleiras geralmente s\u00e3o abastecidas todas as manh\u00e3s, mas n\u00e3o h\u00e1 nenhum funcion\u00e1rio cuja tarefa espec\u00edfica seja cuidar do estoque durante o dia. Detectar uma falta ao passar pela prateleira pode ser sustent\u00e1vel para lojas pequenas, mas se torna um problema para hipermercados, considerando seu tamanho. Algumas prateleiras acabam ficando vazias (enquanto o n\u00edvel de estoque \u00e9 positivo) at\u00e9 que um funcion\u00e1rio as identifique ou at\u00e9 que as prateleiras sejam arrumadas na manh\u00e3 seguinte.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Vamos tratar desse segundo tipo de falta de estoque aqui, pois nosso objetivo era ajudar os funcion\u00e1rios de um hipermercado a identificar as faltas de estoque nas prateleiras durante o dia para que pudessem corrigi-las e reiniciar a venda do produto. Passamos muito tempo em campo para entender os pontos problem\u00e1ticos de nossos usu\u00e1rios e projetar a melhor solu\u00e7\u00e3o para atend\u00ea-los.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Descobrimos que a melhor op\u00e7\u00e3o para as equipes operacionais seria receber um alerta di\u00e1rio por volta das 14h (n\u00e3o h\u00e1 necessidade de tempo real), com uma lista de artigos fora da prateleira que eles deveriam corrigir.<\/span><\/p>\n<p><b>Mas o<\/b> <b>Como podemos identificar a falta de estoque nas prateleiras sem nenhuma pista visual?<\/b><span style=\"font-weight: 400;\">? Na verdade, a instala\u00e7\u00e3o de c\u00e2meras ou sensores visuais seria muito cara e n\u00e3o podemos pedir aos nossos funcion\u00e1rios que \u201cverifiquem\u201d o status das prateleiras todos os dias para coletar o data. Nosso maior desafio est\u00e1 no fato de que h\u00e1 <\/span><b>n\u00e3o h\u00e1 hist\u00f3rico do data dispon\u00edvel nas prateleiras - falta de estoque<\/b><span style=\"font-weight: 400;\"> (a \u00fanica informa\u00e7\u00e3o que temos \u00e9 o n\u00edvel de estoque global no final do dia), portanto, s\u00f3 podemos confiar em um conjunto restrito de recursos: <\/span><b>vendas em tempo real, atributos do item e caracter\u00edsticas da loja<\/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>Abordagens propostas<\/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=\"\">Conforme explicado acima, o principal desafio que enfrentamos foi a aus\u00eancia de data rotulado para a falta de estoque nas prateleiras, o que nos impediu de adotar a abordagem inicial de ML que t\u00ednhamos em mente. Portanto, consideramos uma abordagem alternativa para criar nosso modelo de detec\u00e7\u00e3o.<\/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>Previs\u00e3o de s\u00e9ries temporais de vendas por hora<\/strong><\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Nossa primeira abordagem alternativa consistia em <\/span><b>detec\u00e7\u00e3o de anomalias de vendas (vendas excepcionalmente baixas) por<\/b> <b>prever as vendas de produtos por hora e compar\u00e1-las com as vendas reais<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">A ideia por tr\u00e1s disso \u00e9 estimar\/prever a quantidade de vendas regulares que esperamos que um produto tenha quando n\u00e3o h\u00e1 \u201canomalias\u201d na loja, depois compar\u00e1-las com suas vendas reais e emitir um alerta se a diferen\u00e7a for \u201cenorme\u201d. Portanto, ao aplicar nosso modelo todos os dias \u00e0s 14h, prever\u00edamos as vendas de cada produto at\u00e9 as 14h e detectar\u00edamos anomalias comparando as vendas reais de cada produto com nossas estimativas.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Como ponto de partida, desenvolvemos um<\/span><b> Modelo de m\u00e9dia m\u00f3vel<\/b><span style=\"font-weight: 400;\">. Para cada hora, o modelo faria suas previs\u00f5es calculando uma m\u00e9dia das vendas do produto na mesma hora durante os \u00faltimos 30 dias. Em seguida, comparar\u00edamos esse valor com as vendas reais do produto durante aquela hora e, se a seguinte desigualdade fosse verificada, emitir\u00edamos um alerta de falta de estoque.<\/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=\"\">Essa abordagem se baseia na suposi\u00e7\u00e3o de que as vendas por hora dos produtos seguem uma\u00a0<strong class=\"go jy\">Distribui\u00e7\u00e3o normal\u00a0<\/strong>e tem como objetivo alertar sobre produtos fora do 95% intervalo de confian\u00e7a.<\/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>Figura 1: Exemplo de uma distribui\u00e7\u00e3o normal<\/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=\"\">E esse n\u00e3o \u00e9 o caso! Na verdade, temos muito pouco sinal de s\u00e9ries temporais se analisarmos as vendas por hora em uma loja, e isso ocorre simplesmente porque a maioria dos produtos tem vendas nulas por v\u00e1rias horas durante o dia, portanto, o modelo preveria um valor pr\u00f3ximo de 0 (fazendo a m\u00e9dia dos valores anteriores) para a hora em quest\u00e3o. Portanto, modelar as vendas por hora claramente n\u00e3o \u00e9 o caminho certo a seguir.<\/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>Figura 2: Quantidade de vendas por hora de uma bebida com g\u00e1s<\/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=\"\">Tentamos modificar ligeiramente nossa abordagem, prevendo\u00a0<strong class=\"go jy\">vendas di\u00e1rias<\/strong>\u00a0<strong class=\"go jy\">quantidade<\/strong> O senhor poderia ter usado a solu\u00e7\u00e3o da Coca-Cola at\u00e9 as 14 horas, mas ainda ter\u00edamos muitos produtos para os quais n\u00e3o t\u00ednhamos sinal suficiente, o que chamamos de \u00abprodutos de baixa rota\u00e7\u00e3o\u00bb. Essa abordagem provavelmente teria funcionado com produtos de alta rota\u00e7\u00e3o, como refrigerantes da Coca-Cola, garrafas de \u00e1gua etc., mas nossa solu\u00e7\u00e3o precisava funcionar com todos os produtos em um hipermercado, portanto, eliminamos essa abordagem.<\/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;\">Detec\u00e7\u00e3o de anomalias usando a distribui\u00e7\u00e3o 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;\">Nossa segunda abordagem foi tentar\u00a0<strong class=\"go jy\">modelar a frequ\u00eancia das vendas (e n\u00e3o a quantidade)<\/strong>,\u00a0<strong class=\"go jy\">ou seja, o tempo decorrido entre duas vendas consecutivas de um \u00fanico produto.<\/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;\">Realizamos testes estat\u00edsticos nas vendas de alguns produtos data e percebemos que o tempo entre suas duas vendas consecutivas segue uma distribui\u00e7\u00e3o exponencial, o que intuitivamente faz sentido, pois uma distribui\u00e7\u00e3o exponencial \u00e9 normalmente usada para modelar o tempo entre diferentes ocorr\u00eancias de um evento.<\/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;\">A consequ\u00eancia l\u00f3gica disso \u00e9 que <strong class=\"go jy\">n\u00f3s<\/strong>\u00a0<strong class=\"go jy\">pode modelar a \u00abtaxa de vendas\u00bb de um produto com uma distribui\u00e7\u00e3o de Poisson.<\/strong>\u00a0Por taxa de vendas, queremos dizer o n\u00famero de vezes que um produto passa pelo caixa durante uma hora, independentemente da quantidade vendida.<\/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>Figura 3: Histograma da distribui\u00e7\u00e3o do tempo entre cada venda de um biscoito espec\u00edfico<\/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>Figura 4: Exemplo de uma distribui\u00e7\u00e3o exponencial<\/em><\/figcaption><\/figure>\n<p style=\"text-align: left;\">Portanto, nossa segunda abordagem alternativa \u00e9 estimar a taxa de vendas regular de cada produto, que \u00e9 o <i>lambda<\/i> da distribui\u00e7\u00e3o de Poisson e, em seguida, compar\u00e1-lo com suas vendas di\u00e1rias reais at\u00e9 as 14 horas.<\/p>\n<p style=\"text-align: left;\">Esse \u00e9 um processo de duas etapas:<\/p>\n<p style=\"text-align: left;\"><strong><span style=\"text-align: center;\">C\u00e1lculo do <\/span><i style=\"text-align: center;\">lambda<\/i><\/strong><span style=\"text-align: center;\"><strong>:<\/strong> O <\/span><i style=\"text-align: center;\">lambda <\/i><span style=\"text-align: center;\">\u00e9 a m\u00e9dia da distribui\u00e7\u00e3o de Poisson. Portanto, para estim\u00e1-la, precisamos calcular a m\u00e9dia de nossos pontos data anteriores, ou seja, o n\u00famero m\u00e9dio de checkouts por hora que o produto teve no passado. Utilizamos uma profundidade hist\u00f3rica de 50 dias em nosso c\u00e1lculo para manter as informa\u00e7\u00f5es do passado pr\u00f3ximo. Al\u00e9m disso, calculamos o <\/span><i style=\"text-align: center;\">lambda<\/i><span style=\"text-align: center;\"> para cada dia da semana separadamente, pois h\u00e1 uma forte sazonalidade semanal nas vendas de produtos em um hipermercado.<\/span><\/p>\n<p style=\"text-align: left;\">Em termos concretos, reunimos as vendas data de um produto nos \u00faltimos 50 dias, calculamos sua taxa de vendas em cada dia e, em seguida, calculamos a taxa m\u00e9dia de vendas para cada dia da semana, portanto, nosso c\u00e1lculo resulta em 7 <i>lambda <\/i>n\u00fameros, um para cada dia da semana. Esse c\u00e1lculo \u00e9 feito toda semana.<\/p>\n<p style=\"text-align: left;\"><strong>Detec\u00e7\u00e3o de anomalias:<\/strong> Todos os dias, \u00e0s 14h, procuramos a \u00faltima vez que o produto foi vendido. Em seguida, calculamos a probabilidade (fun\u00e7\u00e3o de massa de probabilidade de Poisson) de n\u00e3o haver vendas entre a \u00faltima venda e as 14h, dado o <i>lambda <\/i>par\u00e2metro. Se a probabilidade for inferior a 1%, consideramos que o produto tem uma taxa de vendas excepcionalmente baixa.<\/p>\n<p style=\"text-align: left;\">Por exemplo, vamos imaginar um refrigerante da Coca-Cola que \u00e9 vendido regularmente a cada 20 minutos, tendo, portanto, um <i>lambda<\/i>=Calculamos a fun\u00e7\u00e3o de massa de probabilidade de Poisson de ter 0 vendas por 3 horas, sabendo que o produto \u00e9 vendido regularmente 3 vezes por hora.<\/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>Resultados<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Realizamos testes preliminares em nosso modelo de Poisson tentando medir a capacidade de estimar as vendas \u00e0s 14 horas. O modelo foi capaz de estimar o n\u00famero de checkouts de produtos com uma precis\u00e3o de <\/span><b>67%<\/b><span style=\"font-weight: 400;\">. Esse resultado confirmou nossa intui\u00e7\u00e3o de que um modelo de Poisson poderia ser a ferramenta certa para detectar com precis\u00e3o a falta de produtos. Por isso, decidimos testar nosso modelo em campo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fomos a duas lojas a cada dois dias para testar e avaliar a precis\u00e3o dos alertas de nosso modelo em 3.000 produtos que as lojas identificaram como prioridade m\u00e1xima. Um alerta seria considerado preciso se a prateleira estivesse vazia ou tivesse menos de 10% de sua capacidade m\u00e9dia na mesma hora em que o alerta foi enviado. Essa fase de avalia\u00e7\u00e3o durou 2,5 meses e resultou em uma medi\u00e7\u00e3o de <\/span><b>taxa de precis\u00e3o de 58% (ou seja, 58% dos alertas de falta de estoque do nosso modelo foram precisos)<\/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;\">Embora a precis\u00e3o do 58% possa n\u00e3o ser brilhante, o que se deve entender \u00e9 que essa solu\u00e7\u00e3o \u00e9 <\/span><b>muito simples de implementar<\/b><span style=\"font-weight: 400;\"> (o que o senhor s\u00f3 precisa \u00e9 ter acesso ao hist\u00f3rico de vendas data e \u00e0s vendas quase em tempo real data nas lojas) e pode <\/span><b>ser facilmente dimensionado para todas as lojas <\/b><span style=\"font-weight: 400;\">para reduzir os riscos de falta de estoque nas prateleiras. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">O senhor pode implementar essa solu\u00e7\u00e3o para cada loja em <\/span><b>menos de uma semana<\/b><span style=\"font-weight: 400;\"> e obtenha diretamente a precis\u00e3o 58-60%! Lembre-se de que um <\/span><b>modelo de classifica\u00e7\u00e3o aleat\u00f3ria teria uma precis\u00e3o de quase 5%<\/b><span style=\"font-weight: 400;\"> pois, em geral, h\u00e1 cerca de 5% de produtos fora de estoque nas prateleiras.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Al\u00e9m disso, essa solu\u00e7\u00e3o poderia fazer parte de um <\/span><b>produto maior que aumenta<\/b> <b>todos os tipos de alertas com um ciclo de feedback<\/b><span style=\"font-weight: 400;\">. Os alertas de falta de estoque far\u00e3o com que os funcion\u00e1rios da loja tomem provid\u00eancias e reabaste\u00e7am as prateleiras, e os alertas de falta de estoque poder\u00e3o ser usados para uma an\u00e1lise mais aprofundada para entender por que o produto teve um volume de vendas excepcionalmente baixo. Tamb\u00e9m \u00e9 poss\u00edvel pensar em criar um modelo de aprendizado de m\u00e1quina que classifique os alertas como falta de estoque nas prateleiras ou n\u00e3o, j\u00e1 que come\u00e7aremos a coletar o data rotulado.<\/span><\/p>\n<p><a href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\" target=\"_blank\" rel=\"noopener noreferrer\">Este artigo foi publicado pela primeira vez no The Artefact Tech Blog - uma biblioteca de artigos de engenharia e ci\u00eancia 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>O senhor tem interesse em digital e data marketing?<\/b><\/p>\n<p>Assine o Data Digest, o boletim informativo do Artefact, para receber conselhos pr\u00e1ticos, insights e opini\u00f5es em sua caixa de entrada todos os meses.<\/p>\n<p><b>O senhor pode me inscrever!<\/b><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>25 de novembro de 2020<br \/>\n Neste artigo, Kasra Mansouri e Camille Le Gonidec, cientistas s\u00eanior da Artefact, explicam como criar um produto cient\u00edfico data com recursos data limitados e elevadas restri\u00e7\u00f5es comerciais.\u00a0Descubra como eles conseguiram reduzir a falta de estoque de produtos em hipermercados por meio da modelagem de s\u00e9ries temporais.<\/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\/br\/wp-json\/wp\/v2\/blog\/21367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media\/21212"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media?parent=21367"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-category?post=21367"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-language?post=21367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}