IA com C# - Exemplo: Previsão de Vendas com Base em Investimento em Publicidade

juarezasjunior

Juarez Júnior

Posted on August 31, 2024

IA com C# - Exemplo: Previsão de Vendas com Base em Investimento em Publicidade

Olá pessoal!

Uma das técnicas de aprendizado supervisionado do Machine Learning é a Regressão Linear. No exemplo de hoje, veremos como criar um código em C# que utiliza essa técnica dentro de um cenário muito interessante.

Cenário: Você tem uma pequena loja e vem investindo em publicidade para aumentar as vendas. Nos últimos meses, você tem registrado o quanto gastou em publicidade e o quanto vendeu em reais. Agora, você quer prever quanto vai vender no próximo mês, dependendo de quanto você planeja investir em publicidade.

Dados Passados: Aqui estão os dados que você coletou nos últimos cinco meses:

Dados que você coletou nos últimos cinco meses

Pergunta: Se você investir R$ 3.500 em publicidade no próximo mês, quanto você espera vender?

Como a Regressão Linear Ajudaria:

Passo 1: Analisar os dados
Primeiro, olhamos para os dados que você coletou. Aqui, notamos que, conforme o investimento em publicidade aumenta, as vendas também aumentam. Isso sugere que há uma relação entre os dois.

Passo 2: Desenhar uma linha
Regressão Linear vai traçar uma linha reta que melhor se ajusta a esses pontos de dados. Essa linha tenta mostrar a tendência geral: "Se você investir X em publicidade, você provavelmente venderá Y".

Passo 3: Usar a linha para prever
Com base na linha que traçamos, podemos prever as vendas futuras. Se investíssemos R$ 3.500, quanto que iríamos vender?

Visualizando o Exemplo: Imagine que temos um gráfico, onde o eixo X representa o investimento em publicidade e o eixo Y representa as vendas. Os pontos de cada mês (janeiro, fevereiro, etc.) estão no gráfico, e a linha da regressão linear é desenhada para passar o mais próximo possível desses pontos. Agora, quando colocamos R$ 3.500 no eixo X, podemos subir até a linha e ver que corresponde a um valor de previsão de vendas no eixo Y.

Explicação Simples: É como desenhar uma linha que melhor explica a relação entre o que você gasta em publicidade e quanto você vende. Depois, você usa essa linha para adivinhar suas vendas futuras com base no quanto planeja gastar.

Agora, vamos ao código!

Vamos criar um código em C# que use o framework ML.NET no cenário que exemplificamos acima.

Para começar, crie um projeto Console em C#.

Projeto Console em C#

Instale no projeto o NuGet Package abaixo:

Install-Package Microsoft.ML

No arquivo Program.cs, cole o código a seguir.

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace LinearRegressionExample
{
    // Classe que define o formato dos dados, com os campos `Investment` (Investimento) e `Sales` (Vendas).
    public class SalesData
    {
        public float Investment { get; set; }  // Investimento em publicidade
        public float Sales { get; set; }       // Vendas
    }

    // Classe que define a previsão de vendas que o modelo irá produzir.
    public class SalesPrediction
    {
        [ColumnName("Score")]
        public float PredictedSales { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var mlContext = new MLContext();

            // Dados de exemplo com histórico de investimentos em publicidade e vendas correspondentes
            var data = new List<SalesData>
            {
                new SalesData { Investment = 1000f, Sales = 10000f },
                new SalesData { Investment = 1500f, Sales = 12000f },
                new SalesData { Investment = 2000f, Sales = 15000f },
                new SalesData { Investment = 2500f, Sales = 18000f },
                new SalesData { Investment = 3000f, Sales = 20000f }
            };

            // Carrega os dados no IDataView, que é o formato usado pelo ML.NET
            var dataView = mlContext.Data.LoadFromEnumerable(data);

            // Cria o pipeline de treinamento
            // Este pipeline concatena os dados de "Investment" em uma única coluna chamada "Features"
            // e aplica a técnica de regressão para prever as vendas ("Sales")
            var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "Investment" })
                .Append(mlContext.Regression.Trainers.LbfgsPoissonRegression(labelColumnName: "Sales", featureColumnName: "Features"));

            // Treina o modelo usando os dados de exemplo
            var model = pipeline.Fit(dataView);

            // Cria uma engine de previsão que pode ser usada para fazer previsões em novos dados
            var predictionEngine = mlContext.Model.CreatePredictionEngine<SalesData, SalesPrediction>(model);

            // Novo investimento para o qual queremos prever as vendas
            var newInvestment = new SalesData { Investment = 3500f };

            // Previsão das vendas para o novo investimento
            var prediction = predictionEngine.Predict(newInvestment);

            // Exibe a previsão
            Console.WriteLine($"Se você investir R$ {newInvestment.Investment}, a previsão de vendas é de R$ {prediction.PredictedSales}");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

No código acima temos a classe SalesData, que define o formato dos dados, com os campos Investment (Investimento) e Sales (Vendas). Temos também a classe SalesPrediction, que define a previsão de vendas que o modelo irá produzir. Dentro do método main, nós temos uma lista simulando os dados. Após isso, temos o processo que transforma os dados e aplica a técnica de regressão para criar o modelo. Por último, temos o código para fazer a previsão com base no novo valor de investimento.

Se você rodar esse código, você verá o quanto que a ML calculou de previsão.

Quanto que a ML calculou de previsão

Não se esqueça de que, para um ambiente real, talvez você tenha que considerar outros fatores ou fazer ajustes no código para ter um modelo mais preciso para o seu negócio.

Código fonte: GitHub

E é isso pessoal! Espero que tenham gostado :)

Abraços!

💖 💪 🙅 🚩
juarezasjunior
Juarez Júnior

Posted on August 31, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related