Utilizaremos uma Rede Bayesiana simplificada, onde a probabilidade da variável "Compra" depende do estado das outras três variáveis (evidências).
Para que o modelo funcione, defini probabilidades hipotéticas baseadas em padrões comuns de e-commerce (por exemplo: clientes com histórico e que interagem com promoções tendem a ter maior conversão).
Passo 1: Definição do Dicionário de Probabilidades
Aqui, definimos as probabilidades marginais para os comportamentos e as probabilidades condicionais para o evento final.
# Dicionário de probabilidades (Valores de exemplo para o modelo)
probabilidades = {
"HistoricoCompras": {"Sim": 0.40, "Nao": 0.60},
"TempoNoSite": {"Muito": 0.30, "Pouco": 0.70},
"InteracaoPromocao": {"Sim": 0.20, "Nao": 0.80},
# Probabilidade de Compra dado (Historico, Tempo, Promocao)
# Formato: (Hist, Tempo, Promo): P(Compra=Sim)
"Compra": {
("Sim", "Muito", "Sim"): 0.95,
("Sim", "Muito", "Nao"): 0.80,
("Sim", "Pouco", "Sim"): 0.70, # Cenário do seu teste
("Sim", "Pouco", "Nao"): 0.40,
("Nao", "Muito", "Sim"): 0.60,
("Nao", "Muito", "Nao"): 0.30,
("Nao", "Pouco", "Sim"): 0.25,
("Nao", "Pouco", "Nao"): 0.05
}
}
Passo 2: Função de Cálculo de Probabilidade
Esta função busca a combinação de evidências no nosso modelo e retorna tanto a probabilidade de conversão quanto a de desistência.
def calcular_probabilidade_compra(evidencias):
# Extraindo os valores das evidências
hist = evidencias.get("HistoricoCompras")
tempo = evidencias.get("TempoNoSite")
promo = evidencias.get("InteracaoPromocao")
# Chave para buscar no dicionário de probabilidades condicionais
chave = (hist, tempo, promo)
# Obtendo a probabilidade de compra (Sim)
prob_sim = probabilidades["Compra"].get(chave, 0.0)
prob_nao = 1 - prob_sim
return {
"Compra_Sim": prob_sim,
"Compra_Nao": prob_nao
}
Passo 3: Teste do Cenário
Cenário: Cliente com histórico (Sim), pouco tempo no site (Pouco) e clicou em promoções (Sim).
# Definindo as evidências do teste
cenario_teste = {
"HistoricoCompras": "Sim",
"TempoNoSite": "Pouco",
"InteracaoPromocao": "Sim"
}
# Executando o cálculo
resultado = calcular_probabilidade_compra(cenario_teste)
# Exibindo os resultados
print(f"--- Resultado da Análise ---")
print(f"Probabilidade de realizar a compra: {resultado['Compra_Sim'] * 100:.1f}%")
print(f"Probabilidade de NÃO realizar a compra: {resultado['Compra_Nao'] * 100:.1f}%")
Explicação do Resultado
Neste modelo, embora o cliente tenha passado pouco tempo (o que geralmente diminui a chance de compra), o fato de ele já ser um cliente antigo e ter clicado em uma promoção eleva a probabilidade de conversão para 70%. Isso reflete um comportamento de "compra decidida", onde o usuário entra no site especificamente para aproveitar uma oferta.
Cenário onde o cliente não tem histórico para compararmos o impacto da fidelidade na conversão
Ao remover a variável "Histórico de compras", podemos observar o peso que a fidelidade tem no modelo em comparação com o comportamento de um novo usuário.
Vamos manter as outras variáveis idênticas: o cliente passou pouco tempo no site e clicou em promoções, mas agora ele é um visitante novo (Não).
Comparação de Cenários
Utilizando a lógica do dicionário de probabilidades definido anteriormente, veja como os números se comportam:
| Variável | Cenário A (Fiel) | Cenário B (Novo) |
|---|---|---|
| Histórico de Compras | Sim | Não |
| Tempo no Site | Pouco | Pouco |
| Interação com Promoção | Sim | Sim |
| Prob. de Compra | 70% | 25% |
# Definindo as evidências para o novo cliente
cenario_novo_cliente = {
"HistoricoCompras": "Nao",
"TempoNoSite": "Pouco",
"InteracaoPromocao": "Sim"
}
# Calculando o resultado
resultado_novo = calcular_probabilidade_compra(cenario_novo_cliente)
print(f"--- Resultado: Novo Cliente ---")
print(f"Probabilidade de compra: {resultado_novo['Compra_Sim'] * 100:.1f}%")
print(f"Probabilidade de desistência: {resultado_novo['Compra_Nao'] * 100:.1f}%")
Análise Crítica
A queda de 70% para 25% na probabilidade de compra revela um insight importante para o negócio:
O impacto da confiança: Um cliente que já conhece a loja (Histórico = Sim) tem quase 3 vezes mais chances de converter em uma visita rápida do que um desconhecido.
Barreira de entrada: Para o novo cliente, o "clique na promoção" não é suficiente para compensar o pouco tempo de navegação. Ele provavelmente ainda está na fase de descoberta e hesita em finalizar a transação.