Pular para o conteúdo principal

Previsão de demanda com machine learning

Ilustração sobre zoologia IA, migração animais, ecologia

Prever o que o consumidor desejará comprar amanhã, na próxima semana ou no mês seguinte é um dos maiores desafios para qualquer profissional envolvido com gestão de estoque, processos de produção ou estratégias de marketing. Já perdi a conta de quantas vezes observei empresas enfrentarem dificuldades severas por não possuírem uma estimativa de demanda precisa. Cria-se um ciclo prejudicial: o excesso de pedidos resulta em estoque parado e capital imobilizado; a falta, por sua vez, acarreta perda de vendas e insatisfação do cliente. É um equilíbrio delicado.

Recordo-me de uma ocasião em que trabalhava em um pequeno e-commerce. Comercializávamos peças de vestuário bastante específicas. No início, nossa previsão beirava a adivinhação. Consultávamos a planilha de vendas do mês anterior no Google Sheets, algumas anotações esparsas sobre promoções e tentávamos "sentir" o mercado. A realidade é que, na maior parte do tempo, estávamos apenas reagindo: "Putz, acabou o P da camiseta azul! Liga pro fornecedor!". Ou pior: "Meu Deus, por que pedimos tanto M daquela blusa roxa? Ninguém comprou isso!". Era um cenário de estresse constante, e eu passava horas atualizando planilhas, buscando padrões que simplesmente não se manifestavam de forma óbvia.

Eu sabia que precisava haver um método superior. Algo que utilizasse os dados que já *possuíamos* — histórico de vendas, detalhes dos produtos, datas, preços promocionais — de uma forma mais inteligente. Foi então que a ideia de incorporar machine learning à equação começou a fervilhar em minha mente. Não se tratava de construir um modelo ultracomplexo, digno de um cientista de dados com doutorado, mas sim algo pragmático. Um sistema que pudéssemos implementar com as ferramentas que já utilizávamos no dia a dia: Python para o processamento pesado, Google Sheets para a entrada e saída de dados, e Apps Script para conectar tudo e automatizar. Minha meta era transformar a conjectura em uma estimativa fundamentada, e o processo manual e demorado em algo que operasse de forma autônoma.

Desvendando a Demanda: Como Comecei a Integrar Python e Sheets

O primeiro passo, e talvez o mais tedioso, é a coleta e organização dos dados. Sem um histórico de vendas consistente e bem estruturado, nenhum algoritmo de machine learning opera milagres. Eu precisava de, no mínimo, seis a doze meses de registros, e quanto mais dados disponíveis, mais robusta seria a análise.

Coletando e Preparando os Dados: A Base de Tudo

No cenário do e-commerce, os dados de vendas estavam dispersos: parte vinha da plataforma da loja (que felizmente contava com uma API!), outra parcela estava em planilhas de promoções gerenciadas pelo marketing, e havia ainda alguns ajustes manuais realizados pelo financeiro. Minha tarefa inicial consistiu em unificar todas essas fontes de informação.

  • API da Plataforma: Utilizei Python, empregando a biblioteca requests, para interagir com a API da plataforma de e-commerce e extrair os registros de vendas diários. A cada requisição, coletava o SKU do produto, a respectiva quantidade vendida, o preço unitário e a data da transação. Enfrentei alguns obstáculos relacionados aos limites de requisição da API e à paginação, o que me levou a implementar laços com time.sleep() para evitar bloqueios e assegurar a recuperação completa dos dados.
  • Google Sheets Complementares: Para as informações sobre promoções e feriados, já tínhamos planilhas organizadas no Google Sheets. Recorri à biblioteca gspread em Python para acessar e ler esses Sheets, o que se mostrou uma abordagem mais prática do que desenvolver uma API personalizada do zero.
  • O Desafio da Limpeza: Ah, a limpeza de dados... Esta é a etapa frequentemente negligenciada ou subestimada, mas de extrema importância. Deparei-me com SKUs inconsistentes para o mesmo produto (variações como presença ou ausência de hífen), registros de vendas com valores negativos (indicando estornos incorretos) e datas em formatos divergentes. Foram dias dedicados à padronização com Pandas, aplicando operações como df.drop_duplicates(), df.fillna(0) e pd.to_datetime() para homogeneizar as datas. Recordo-me de uma situação em que um SKU de um item de alta demanda era registrado de duas maneiras distintas, induzindo o modelo a interpretá-los como produtos separados e, consequentemente, distorcendo toda a previsão. Foi necessário desenvolver um mapeamento manual para retificar essa inconsistência.

Ao término desse procedimento, obtive um DataFrame em Python contendo as seguintes colunas: Data, SKU_Produto, Quantidade_Vendida, Preco_Promocional, Feriado (sim/não).

Escolhendo o Modelo Certo (ou pelo menos um que funcione)

Não possuo formação avançada em ciência de dados, então minha estratégia é sempre iniciar de forma simplificada, validar o que funciona e refinar conforme a necessidade. No contexto de previsão de demanda, a análise de séries temporais se apresenta como a abordagem mais indicada. Explorei diversas alternativas:

  • Regressão Linear (scikit-learn): Minha abordagem inicial, bastante elementar. Embora funcional, falhava em capturar adequadamente as sazonalidades, resultando em previsões excessivamente lineares para dados que exibiam flutuações.
  • Random Forest Regressor (scikit-learn): Representou uma melhoria considerável! Demonstrou capacidade de identificar algumas interações entre variáveis (por exemplo, maior volume de vendas de um produto em promoção durante feriados). Contudo, ainda não era o ideal para modelar o componente temporal.
  • Prophet (da Meta/Facebook): Este se revelou um divisor de águas em minha jornada. Desenvolvido especificamente para dados de séries temporais, o Prophet gerencia eficientemente tendências, sazonalidades (diárias, semanais, anuais) e eventos como feriados. É relativamente intuitivo e dispensa um vasto conhecimento estatístico. Ele requer apenas duas colunas: ds (data) e y (o valor a ser previsto, que em nossa aplicação era a Quantidade_Vendida). Adicionamos regressores extras, como indicadores de promoção ou feriado, para aprimorar a acurácia da previsão.

    A configuração do Prophet seguiu este padrão:

    from prophet import Prophet
            
            # Para cada produto:
            df_produto = df[df['SKU_Produto'] == 'SKU001'].copy()
            df_produto = df_produto.rename(columns={'Data': 'ds', 'Quantidade_Vendida': 'y'})
            
            model = Prophet(
                seasonality_mode='multiplicative', # Sazonalidade que muda de intensidade
                weekly_seasonality=True,
                yearly_seasonality=True
            )
            
            # Adiciona regressões extras (nossas variáveis de promoção/feriado)
            model.add_regressor('Preco_Promocional')
            model.add_regressor('Feriado')
            
            model.fit(df_produto)
            
            # Cria um dataframe com as datas futuras para prever
            future = model.make_future_dataframe(periods=30, freq='D')
            future['Preco_Promocional'] = 0 # Assumindo sem promoção no futuro
            future['Feriado'] = 0 # Assumindo sem feriado no futuro, mas poderia ser ajustado
            
            forecast = model.predict(future)
            

    Treinei um modelo Prophet individualmente para *cada* SKU de produto, considerando que cada item apresentava um padrão de venda distinto. Embora isso tenha implicado em uma complexidade adicional na automação, era essencial para alcançar previsões mais exatas.

Automação e Integração: De Python para Google Sheets (e vice-versa)

O propósito transcendia a mera criação de um modelo; buscava-se um sistema autônomo, capaz de entregar as projeções onde eram mais úteis: no Google Sheets.

  • Orquestrando com Python: Meu script Python central executava as seguintes etapas:
    1. Extraía dados históricos da API da plataforma e das planilhas de feriados/promoções usando requests e gspread.
    2. Realizava a limpeza e preparação desses dados com Pandas.
    3. Iterava por cada SKU de produto, treinava um modelo Prophet e gerava a previsão para os próximos 30 dias.
    4. Consolidava todas essas previsões em um novo DataFrame.
  • Escrevendo no Google Sheets: A satisfação de observar as previsões surgindo "magicamente" na planilha era imensa. Mantinha um Sheet dedicado a essa finalidade, com abas organizadas por tipo ou categoria de produto. Recorri novamente ao gspread para registrar os resultados. O procedimento envolvia primeiro limpar a aba de destino e, em seguida, utilizar sheet.update([df.columns.values.tolist()] + df.values.tolist()) para inserir o cabeçalho e todos os dados de uma só vez.
  • Agendando com Apps Script (ou Cloud Functions): Para que o script Python fosse executado diariamente ou semanalmente, explorei algumas alternativas.
    • Opção 1 (mais simples, para testar): Um script Python básico, executado em minha própria máquina e agendado pelo sistema operacional. Embora funcional, carecia de robustez (exigia que meu computador estivesse sempre ligado).
    • Opção 2 (mais robusta, a que eu uso hoje): A solução mais sólida, e que adotei atualmente, envolve o deploy do script Python como uma Google Cloud Function (ou uma alternativa como AWS Lambda/Azure Function, conforme o ecossistema). Sendo uma arquitetura serverless, ela opera sob demanda e oferece maior resiliência. Para que o Apps Script pudesse "acionar" essa Cloud Function, desenvolvi uma função no Google Apps Script que enviava uma requisição HTTP (UrlFetchApp.fetch()) para o endpoint da Cloud Function. Essa função do Apps Script, por sua vez, pode ser programada para execução automática (via Triggers no Apps Script), por exemplo, diariamente às 3 da manhã, assegurando que a previsão mais atualizada esteja sempre acessível antes do início do expediente.

Essa integração capacitou as equipes de compras, estoque e marketing a visualizar as projeções atualizadas sem a necessidade de compreender uma única linha de código Python. Para esses departamentos, a planilha passava a "se atualizar" de forma quase imperceptível.

O Poder da Automação em Números (e desafios inesperados)

Essa transição do manual para o automatizado não se limitou à esfera tecnológica, mas representou, sobretudo, uma otimização substancial de tempo e a base para tomadas de decisão significativamente mais precisas.

Aspecto Método Manual/Demorado Método Automatizado (Python + ML)
Fonte de Dados Múltiplas planilhas, processos de copiar e colar, sistemas diversos e desintegrados. APIs conectadas, Google Sheets dedicados para entrada, dados centralizados e homogeneizados via Python.
Processamento Longas horas de manipulação manual em Google Sheets, fórmulas intrincadas, suscetibilidade a erros de digitação. Python automatiza processamento, limpeza, engenharia de features, treinamento e geração de previsões em poucos minutos.
Modelo de Previsão Conjecturas, médias simples, intuição gerencial, projeções lineares rudimentares. Machine Learning (Prophet) que identifica tendências, sazonalidades e a influência de variáveis externas.
Tempo Gasto Variável de 4 a 8 horas semanais, conforme a complexidade do catálogo. Menos de 1 hora semanal para supervisão e ajustes (o script opera em segundo plano).
Precisão Subjetiva, alta variabilidade, erros significativos de estoque (ruptura ou excesso). Mensurável (MAE, RMSE), margem de erro reduzida, otimização de estoque média de 15-20%.
Atualização Semanal ou quinzenal, exigindo esforço manual substancial. Diária (ou conforme a demanda), automatizada via Apps Script/Cloud Function.
Custo de Erro Vendas perdidas, obsolescência de estoque, capital de giro imobilizado. Minimização de perdas, otimização da alocação de recursos, aprimoramento das aquisições.

O Que Pode Dar Errado (e com certeza dará)

Por mais meticuloso que seja o planejamento, a realidade insiste em nos surpreender. No universo da automação e do Machine Learning, essa máxima se mantém. Apresento alguns dos desafios que encontrei:

  • Dados Inconsistentes são um Problema Constante: Após limpeza e padronização minuciosas, a equipe de vendas pode introduzir um novo código de produto sem comunicação prévia. Ou, por vezes, a integração com o ERP falha, gerando um volume excessivo de linhas duplicadas. O modelo, então, começa a produzir previsões desatinadas, e leva-se horas para identificar que a origem do problema é um mero erro de digitação. Essa é uma situação que demanda monitoramento constante e validações rigorosas nos scripts.
  • APIs Quebrando ou Modificando: As APIs das plataformas (seja de e-commerce ou marketing) não permanecem imutáveis. Uma atualização em seus sistemas pode alterar o endpoint utilizado ou o formato da resposta, resultando na falha do seu script. Recordo-me de uma madrugada inteira dedicada a corrigir um script porque a API do fornecedor modificou seu método de autenticação, invalidando meu token.
  • Overfitting e Underfitting: O modelo performa excelentemente nos dados de treinamento, mas ao ser aplicado a novos dados, a previsão é insatisfatória. Isso pode ocorrer por memorização excessiva do histórico (overfitting) ou por ser excessivamente simplista para capturar as nuances (underfitting). Tal cenário exige o ajuste de hiperparâmetros, a experimentação com outro modelo, ou mesmo a coleta de dados adicionais. Dediquei dias a otimizar os parâmetros do Prophet para que se alinhasse de forma mais precisa às sazonalidades características de certos produtos.
  • Fatores Externos Imprevisíveis: Nenhuma previsão de demanda baseada em Machine Learning, por mais sofisticada que se apresente, é capaz de antecipar eventos como uma pandemia, uma crise econômica repentina, ou a explosão de vendas de um produto devido a um meme viral. O modelo fundamenta-se em padrões históricos. Eventos sem precedentes exigem intervenção humana para ajustar a projeção, ou o re-treinamento do modelo com os dados (atípicos) recém-adquiridos.
  • Limitações das Ferramentas: Inicialmente, tentei centralizar *todas* as operações no Google Apps Script. Embora excelente para automações de menor escala e integração com o ecossistema Google, ele se mostra insuficiente para o processamento intensivo de Pandas e Prophet. Sua execução é lenta, possui limites de tempo e carece das robustas bibliotecas de Python. Compreender os pontos fortes e fracos de cada ferramenta é vital para evitar frustrações. Daí a escolha do Python para o núcleo do Machine Learning e do Apps Script para a orquestração e a interface no Sheets.
  • Permissões de Acesso: Autenticar o Python para interagir com o Google Sheets ou a API da plataforma pode se revelar um processo extremamente complexo. Arquivos de credenciais com prazo de validade expirado, chaves inválidas, permissões configuradas incorretamente. Dediquei horas a depurar as permissões de serviço do Google Cloud para que o gspread funcionasse adequadamente.

FAQ - Dúvidas Frequentes

1. Qual o volume mínimo de dados históricos necessários para iniciar com machine learning em previsão de demanda?

Para que se obtenha alguma relevância e capacidade de capturar tendências e sazonalidades elementares, recomendo um mínimo de seis meses de dados diários de vendas como ponto de partida para testes. Contudo, para um modelo mais robusto, capaz de identificar sazonalidades anuais e tendências de longo prazo, o ideal seria de um a dois anos de histórico. Quanto maior o volume de dados, melhor, desde que estes sejam de qualidade e reflitam o contexto atual de sua operação.

2. É indispensável um servidor dedicado para a execução dos scripts Python de machine learning?

Não é estritamente necessário um servidor dedicado. Para as fases iniciais de desenvolvimento e testes, a execução pode ser feita em sua própria máquina. Entretanto, visando automação e maior robustez, recomendo fortemente o uso de plataformas serverless, como Google Cloud Functions, AWS Lambda ou Azure Functions. Essas plataformas executam o código Python sob demanda, escalam automaticamente e cobram apenas pelo tempo de execução, o que se torna muito mais econômico do que manter um servidor ativo ininterruptamente para uma tarefa que pode rodar apenas uma vez ao dia.

3. De que forma posso verificar a eficácia do meu modelo de previsão e assegurar que ele não está gerando resultados enganosos?

É fundamental empregar métricas de avaliação. As métricas mais usuais para previsão são o MAE (Mean Absolute Error) e o RMSE (Root Mean Squared Error), que fornecem uma indicação da discrepância entre as previsões e as vendas efetivas. Monitore-as periodicamente. Adicionalmente, uma validação visual é indispensável: trace os dados reais e as previsões em um gráfico (inclusive no Google Sheets), observando se as linhas demonstram um acompanhamento consistente. Caso o modelo apresente desvios consistentes, seja superestimando ou subestimando, pode ser o momento de re-treiná-lo ou refinar seus parâmetros.

Conclusão

Implementar previsão de demanda com machine learning não se trata de mágica, nem de um desafio intransponível. Trata-se de um processo contínuo de coleta, higienização, modelagem, automação e, naturalmente, de muitos ajustes finos. Enfrentei diversos percalços ao longo do trajeto, incluindo dados inconsistentes que me causavam grande frustração, APIs que alteravam sem aviso e modelos que persistentemente geravam previsões ilógicas. No entanto, a satisfação de observar a planilha se atualizando autonomamente com projeções significativamente mais assertivas, sem a necessidade de minha intervenção manual, é recompensadora.

Essa otimização liberou um tempo considerável para que pudéssemos concentrar esforços no que é verdadeiramente essencial: a compreensão do cliente, o planejamento de estratégias de marketing mais eficazes e a otimização da própria linha de produtos. O intuito não é substituir a inteligência humana, mas sim munir-la de ferramentas superiores para a tomada de decisões. Se eu, que iniciei copiando e colando dados de vendas entre diferentes abas do Google Sheets, fui capaz de desenvolver tal sistema, você também pode. Basta engajar-se, experimentar e não temer os erros.

Comentários

Postagens mais visitadas deste blog

Claude Code gastando muito? Como otimizar o consumo de tokens na prática e não falir usando a API

A primeira vez que vi a fatura do Claude, confesso que me deu um frio na espinha. Era para ser uma automação "simples": pegar dados de umas 500 linhas de uma Google Sheet, fazer um resumo rápido de cada uma e categorizar. Algo que, se eu fosse fazer na mão, levaria uns dois dias chatos e repetitivos. Pensei: "Vou jogar no Claude, ele resolve em minutos e a conta vai ser irrisória". Que nada. Quando vi o consumo de tokens, a tal 'irrisória' virou um valor que me fez questionar se valia a pena continuar. A automação funcionou, sim, mas o preço foi maior do que o esperado. Foi aí que percebi que não bastava saber mandar um prompt; eu precisava aprender a economizar. E economizar de verdade, na prática, sem cair em papo furado de "otimização estratégica". A real é que a API do Claude, com seus modelos potentes como Opus, Sonnet e até o Haiku, é uma mão na roda para muita coisa – desde gerar textos complexos até extrair insights de montanhas de dados....

Modelos de IA open source para desenvolvimento

Se tem uma coisa que me tira do sério é ficar fazendo trabalho manual repetitivo. Sabe aquela planilha que chega toda semana com um monte de texto solto, tipo feedback de cliente, descrições de produto ou anotações de reunião? E aí você tem que ler tudo, categorizar, resumir, ou extrair umas informações específicas? É um inferno. Eu já gastei horas da minha vida nisso, e a frustração só aumenta quando a empresa começa a falar de "IA para produtividade", mas no fundo a solução que te dão custa o olho da cara ou não se encaixa direito na tua stack. Foi exatamente por causa de uma dessas tarefas chatas – categorizar milhares de comentários de clientes de um e-commerce em Google Sheets – que eu mergulhei de cabeça nos modelos de IA open source para desenvolvimento. Precisava de algo que rodasse, que eu pudesse controlar, e que não me cobrasse por token. E, claro, que se integrasse com o que eu já usava: Python para o backend pesado, Apps Script para a ponte com as Sheets, e API...

Melhores ferramentas de IA gratuitas para pequenas empresas

Melhores Ferramentas de IA Gratuitas para Pequenas Empresas A inteligência artificial (IA) deixou de ser um luxo para grandes corporações e tornou-se uma ferramenta acessível que pode transformar a maneira como pequenas empresas operam. Desde a criação de conteúdo até o atendimento ao cliente, a IA pode otimizar processos, economizar tempo e impulsionar o crescimento. O melhor de tudo é que você não precisa gastar uma fortuna para começar. Existem diversas ferramentas de IA gratuitas que podem fazer uma diferença significativa. Este artigo explora as melhores opções para pequenas empresas que desejam aproveitar o poder da IA sem custos iniciais. IA para Criação de Conteúdo e Marketing Gerar conteúdo relevante e atraente é crucial para qualquer pequena empresa. As ferramentas de IA podem ajudar a criar textos, ideias e até mesmo aprimorar a comunicação com seus clientes e público, tudo de forma eficiente e sem custo. ChatGPT / Google Gemini (Free Tiers): ...