IA com C# - Exemplo: Previsão de Vendas com Base em Investimento em Publicidade
Juarez Júnior
Posted on August 31, 2024
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:
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#.
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}");
}
}
}
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.
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!
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
August 31, 2024
August 31, 2024