Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: construindo uma Rede Bayesiana

Para essa atividade, organizei a Rede Bayesiana separando as probabilidades individuais das variáveis de entrada (histórico, tempo no site e clique em promoção) da tabela de probabilidades condicionais que define a chance de compra para cada combinação possível dessas evidências.

# Probabilidades individuais das variáveis (priors)
prior_historico = {0: 0.7, 1: 0.3}       # 0 = sem histórico, 1 = com histórico
prior_tempo_site = {0: 0.6, 1: 0.4}      # 0 = pouco tempo, 1 = muito tempo
prior_promocao = {0: 0.8, 1: 0.2}        # 0 = não clicou, 1 = clicou

# Tabela condicional: P(Compra | Histórico, Tempo, Promoção)
tabela_compra = {
    (0, 0, 0): 0.1,
    (0, 0, 1): 0.3,
    (0, 1, 0): 0.2,
    (0, 1, 1): 0.6,
    (1, 0, 0): 0.4,
    (1, 0, 1): 0.7,
    (1, 1, 0): 0.8,
    (1, 1, 1): 0.9,
}

def prob_de_compra(historico, tempo_site, clicou_promocao):
    """Retorna a probabilidade de compra e de não compra dado o perfil do cliente."""
    chave = (historico, tempo_site, clicou_promocao)
    p_compra = tabela_compra[chave]
    return {"Comprar": p_compra, "Não comprar": 1 - p_compra}

# Cenário: cliente com histórico, pouco tempo no site e clicou na promoção
perfil_cliente = prob_de_compra(historico=1, tempo_site=0, clicou_promocao=1)

for evento, prob in perfil_cliente.items():
    print(f"{evento}: {prob:.0%}")
1 resposta

Oi, Everton. Tudo bem com você?

Obrigado por compartilhar sua implementação. As probabilidades individuais foram definidas de forma organizada, a tabela de probabilidades condicionais contempla todas as combinações possíveis das evidências e a função retorna tanto a probabilidade de compra quanto a de não compra, facilitando a interpretação dos resultados.

Como sugestão de evolução, você pode experimentar diferentes valores na tabela condicional para simular outros cenários de negócio. Por exemplo, um cliente sem histórico de compras, mas que permaneceu bastante tempo no site e clicou em uma promoção, pode apresentar uma probabilidade intermediária de compra. Também seria interessante criar vários perfis de clientes e comparar os resultados obtidos para avaliar como cada evidência influencia a decisão final do modelo.

Na sua opinião, qual dessas variáveis teria o maior impacto na probabilidade de compra caso fosse necessário remover uma das evidências da Rede Bayesiana?

Parabéns pela atividade e por compartilhar sua solução com a comunidade. Continue praticando e contribuindo com suas implementações. O fórum permanece à disposição sempre que precisar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!