0
respostas

Implementação de uma Rede Bayesiana para Análise de Comportamento de Clientes

Estrutura do Modelo
A rede considera três variáveis influenciadoras:

Histórico de compras (sim/não)

Tempo no site (muito/pouco)

Interação com promoções (sim/não)

A relação é: Histórico → Tempo → Promoção → Compra

Probabilidades Definidas
Variável Probabilidades
Histórico P(sim)=0,35; P(não)=0,65
Tempo P(muito|sim)=0,70; P(pouco|sim)=0,30; P(muito|não)=0,40; P(pouco|não)=0,60
Promoção P(sim|muito)=0,80; P(não|muito)=0,20; P(sim|pouco)=0,30; P(não|pouco)=0,70
Compra P(sim|promoção sim, histórico sim)=0,85; P(sim|promoção sim, histórico não)=0,50; P(sim|promoção não, histórico sim)=0,60; P(sim|promoção não, histórico não)=0,15
Implementação em Python
python
class RedeBayesianaCompras:
def init(self):
self.prob_historico = {'sim': 0.35, 'nao': 0.65}
self.prob_tempo = {('sim','muito'):0.70, ('sim','pouco'):0.30,
('nao','muito'):0.40, ('nao','pouco'):0.60}
self.prob_promocao = {('muito','sim'):0.80, ('muito','nao'):0.20,
('pouco','sim'):0.30, ('pouco','nao'):0.70}
self.prob_compra = {('sim','sim','sim'):0.85, ('sim','sim','nao'):0.50,
('sim','nao','sim'):0.60, ('sim','nao','nao'):0.15}

def inferir_compra(self, evidencias):
    prob_sim, prob_nao = 0, 0
    for hist in ['sim','nao']:
        for temp in ['muito','pouco']:
            for prom in ['sim','nao']:
                if ('historico' in evidencias and evidencias['historico']!=hist): continue
                if ('tempo' in evidencias and evidencias['tempo']!=temp): continue
                if ('promocao' in evidencias and evidencias['promocao']!=prom): continue
                
                p = self.prob_historico[hist]
                p *= self.prob_tempo[(hist,temp)]
                p *= self.prob_promocao[(temp,prom)]
                
                prob_sim += p * self.prob_compra[('sim',prom,hist)]
                prob_nao += p * (1 - self.prob_compra[('sim',prom,hist)])
    
    total = prob_sim + prob_nao
    return prob_sim/total if total>0 else 0

Resultados para Diferentes Perfis
Perfil do Cliente Probabilidade de Compra
Novo, pouco tempo, não clicou promoção 1,2%
Com histórico, muito tempo, clicou promoção 85%
Com histórico, pouco tempo (promoção desconhecida) 20,8%
Apenas clicou em promoção 46,3%
Nenhuma informação disponível 27%
Principais Insights
Clientes com histórico e engajamento alto têm 85% de chance de compra

Clientes novos e desengajados representam apenas 1,2% de chance

Apenas saber que o cliente clicou em promoção já eleva a chance para 46,3%

Tempo no site sozinho não é tão preditivo quanto combinado com histórico

Aplicações Práticas
Personalizar ofertas conforme perfil do cliente

Decidir quais promoções exibir para cada visitante

Priorizar follow-up para clientes com alta probabilidade

Economizar recursos evitando disparos desnecessários