1
resposta

Modelagem Probabilística de Compras Online

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ávelCenário A (Fiel)Cenário B (Novo)
Histórico de ComprasSimNão
Tempo no SitePoucoPouco
Interação com PromoçãoSimSim
Prob. de Compra70%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.

1 resposta

Olá, Tiago! Tudo bem?

Excelente projeto!. A forma como você estruturou a Rede Bayesiana simplificada ficou muito didática e prática.

Parabéns pela dedicação! Continue explorando esses cenários.

Espero ter ajudado!

Bons estudos!

Sucesso

Imagem da comunidade