Aula 9: Redes Bayesianas e Modelos Gráficos Probabilísticos (PGMs) para Mineração de Itens Frequentes

Aprendizado Não Supervisionado

Marcos M. Raimundo — Instituto de Computação, UNICAMP

2026-10-13

Revisão e Introdução

O Fracasso do Espaço Contínuo em Dados Discretos

O Que Construímos até Aqui: O Mundo Contínuo \(\mathbb{R}^D\)

  • Geometria Métrica: Distâncias euclidianas, normas e projeções lineares (PCA).
  • Variedades Curvas: Espaços latentes densos e contínuos (VAEs e t-SNE).
  • Pressuposto Base: Pontos vizinhos compartilham características geométricas suaves.
  • A Ruptura de Paradigma (Parte 3): Transição para dados discretos, categóricos e transações esparsas \(\mathbf{x} \in \{0, 1\}^D\).
  • O Colapso da Métrica:
    • O que significa a distância euclidiana entre comprar Pão e comprar Sabão? Nada.
    • A média de transações é uma ficção aritmética sem existência no catálogo.

O Novo Objetivo Não Supervisionado

Em vez de estimar variedades contínuas, queremos descobrir a estrutura de dependência: quais eventos co-ocorrem, quais condicionam outros e como distinguir associações reais de correlações ilusórias.

Ideia Central: 1. Minerar Co-ocorrências e Padrões

O Ponto de Partida Não Supervisionado

  • Em dados transacionais e discretos (\(\mathbf{x} \in \{0, 1\}^D\)), o primeiro objetivo é: Quais itens aparecem juntos com frequência?
  • Mineração de regras de associação (ESL §14.2): \(\{A\} \Rightarrow \{B\}\).
  • Métricas empíricas: Suporte, Confiança e Lift.
  • O Algoritmo Apriori (Agrawal & Srikant, 1994):
    • Explora o princípio da antimonotonicidade do suporte.
    • Varre o espaço combinatorial e gera a lista de candidatos frequentes.

Ideia Central: 2. Padrões Encontrados são Realmente Válidos?

Co-ocorrência Empírica \(\neq\) Associação Direta Real

Encontrar alto suporte e alto Lift na base bruta não garante que a relação seja verdadeira:

  • 1. Causas Comuns Latentes (Confounding):
    • Café Gourmet e Torradeira co-ocorrem com frequência apenas porque clientes de alta renda compram ambos. A regra direta é espúria!
  • 2. Atalhos Transitivos Redundantes:
    • Se \(A \Rightarrow B\) e \(B \Rightarrow C\), a regra agregada \(A \Rightarrow C\) é um atalho dispensável.
  • 3. Vieses de Seleção:
    • Amostras restritas criam correlações artificiais entre variáveis independentes.

Ideia Central: 3. O Teste da Probabilidade Condicional

A Régua Formal: Independência Condicional (PRML §8.2)

Como separar associações estruturais genuínas de ilusões estatísticas? \[P(A, B \mid C) = P(A \mid C) P(B \mid C) \quad \iff \quad \mathbf{A \perp\!\!\!\perp B \mid C}\]

  • O “Truque” Condicional:
    • Estratificamos ou controlamos pela variável de contexto \(C\).
    • Se a dependência entre \(A\) e \(B\) desaparece (\(A \perp\!\!\!\perp B \mid C\)), a regra direta é descartada como espúria ou redundante!
    • Se a dependência resiste, temos evidência de uma conexão local direta.

Ideia Central: 4. O Grafo de Dependências (DAG)

Redes Bayesianas e Modelos Gráficos (Pearl, 1988)

  • Nós: Itens ou variáveis do sistema (\(R, C, T, P, M\)).
  • Arestas: Relações diretas locais.
  • Ausência de arestas: Declaração formal de independência condicional!
  • A Fatoração Conjunta: \[p(x_1, \dots, x_K) = \prod_{k=1}^K p(x_k \mid \text{pa}_k)\] Cada variável só precisa olhar para os seus pais diretos \(\text{pa}_k\), reduzindo drasticamente o número de parâmetros.

Ideia Central: O DAG do Varejo na Prática

Roteiro da Aula

  1. Mineração de Regras: Suporte, Confiança, Lift e o Teorema de Antimonotonicidade.
  2. O Algoritmo Apriori na Prática: Mecânica de junção, poda de candidatos e execução em Python.
  3. Redes Bayesianas como Filtro Estrutural: As 3 geometrias canônicas podando regras espúrias e redundantes.
  4. Montagem do Grafo e I-Equivalência: Componentes do Grafo Essencial (CPDAG) e o teto da observação passiva.

Problema Motivador

O Caso Empírico das \(10.000\) Transações

Avaliando Café Gourmet (\(A\)) e Torradeira Elétrica (\(B\)): - \(P(A) \approx 0{,}24\), \(P(B) \approx 0{,}18\), \(P(A \cap B) \approx 0{,}116\). - \(\text{Lift}(A \Rightarrow B) \approx \frac{0{,}116}{0{,}24 \times 0{,}18} \approx \mathbf{2{,}69}\).

  • A Decisão Ingênua: O Lift de \(2{,}69\) sugere forte complementaridade comercial.
  • A Revelação Condicional: Estratificando por Perfil de Renda (\(C \in \{0, 1\}\)): \[\text{Lift}(A \Rightarrow B \mid C=1) = \mathbf{1{,}00} \quad \text{e} \quad \text{Lift}(A \Rightarrow B \mid C=0) = \mathbf{1{,}00}\]

O Paradoxo de Simpson em Ação

A associação de \(2{,}69\) é puramente espúria. Café e torradeira nunca interagiram: ambos são efeitos independentes da causa comum latente \(C\).

Pausa 1: O Espaço Binário e a Ruptura Métrica

V ou F: Espaços Discretos e Métricas

Julgue V ou F — a questão só conta se acertar os 4 itens:

  • □ A distância euclidiana entre dois vetores de compra binários penaliza igualmente a ausência conjunta de um item e a presença discordante de um item.
  • □ Em um catálogo de \(D=50\) produtos, o número total de possíveis cestas distintas de compras é superior a \(10^{15}\).
  • □ Se duas variáveis \(A\) e \(B\) apresentam \(\text{Lift}(A \Rightarrow B) > 1\) em uma base transacional agregada, é matematicamente impossível que elas sejam condicionalmente independentes dado um terceiro fator \(C\).
  • □ Modelos baseados em gradiente contínuo e projeções ortogonais podem ser aplicados diretamente a matrizes binárias esparsas sem perdas conceituais ou semânticas.

Pausa 1: Resposta

V ou F: Resposta

  • ✗ F: A distância euclidiana só soma \((1-0)^2 = 1\); a ausência conjunta \((0-0)^2 = 0\) não adiciona distância, mas catálogos esparsos tornam quase todos os vetores ortogonais a distância fixa \(\sqrt{2}\).
  • ✔ V: \(2^{50} \approx 1{,}12 \times 10^{15}\).
  • ✗ F: O Paradoxo de Simpson comprova exatamente o oposto: o Lift agregado pode ser \(> 1\) enquanto o Lift condicional em cada estrato é estritamente \(1\).
  • ✗ F: Variáveis binárias violam a topologia contínua; projeções produzem frações contínuas sem correspondência em transações reais.

Voltando à pergunta: \(\|\mathbf{x}_1 - \mathbf{x}_2\| = \sqrt{1^2 + 1^2} = \sqrt{2} \approx 1{,}41\). Já \(\|\mathbf{x}_1 - \mathbf{x}_3\| = \sqrt{8} \approx 2{,}83\). Geometricamente, o Cliente 1 está muito mais próximo de quem comprou apenas uma Torradeira (\(\sqrt{2}\)) do que de quem comprou Café junto com outros 8 itens de café da manhã (\(\sqrt{8}\))! A métrica euclidiana mede tamanho de cesta, e não afinidade de consumo.

Intuição — O Mercado, a Cesta e a Busca Combinatória

A Explosão Combinatória e o Funil de Frequências

O Desafio da Escala Combinatória

  • Catálogo com \(D\) itens \(\implies 2^D - 1\) combinações possíveis.
  • Para \(D = 100\): \(2^{100} \approx 1{,}26 \times 10^{30}\) conjuntos candidatos.
  • A busca por força bruta é computacionalmente impossível.
  • A Intuição do Funil:
    • A quase totalidade das combinações aleatórias tem probabilidade praticamente nula.
    • Para um quarteto \(\{A, B, C, D\}\) ser frequente, é indispensável que o par \(\{A, B\}\) e o trio \(\{A, B, C\}\) já sejam frequentes.

A Ideia de Poda em Árvore

Se um item ou par falhar no critério mínimo de frequência, nenhum de seus superconjuntos precisa ser testado. Cortamos o galho na raiz antes de olhar para a base de dados.

Bloco 1: Mineração de Itens Frequentes — Suporte, Confiança e Antimonotonicidade

Da Cesta de Compras à Matriz Binária

Da Cesta Qualitativa ao Vetor Binário

  • Universo de Itens: \(\mathcal{I} = \{P\tilde{a}o, Leite, Manteiga, Caf\acute{e}, Cerveja\}\).
  • Cada compra vira uma linha indicadora \(\mathbf{x}_n \in \{0, 1\}^D\): \(x_{nj} = 1\) se o item \(j\) foi adquirido.
TID Cesta de Compras Pão Leite Manteiga Café Cerveja
\(T_1\) \(\{P\tilde{a}o, Leite, Manteiga\}\) 1 1 1 0 0
\(T_2\) \(\{P\tilde{a}o, Caf\acute{e}\}\) 1 0 0 1 0
\(T_3\) \(\{Leite, Manteiga, Caf\acute{e}\}\) 0 1 1 1 0
\(T_4\) \(\{P\tilde{a}o, Leite, Caf\acute{e}\}\) 1 1 0 1 0
\(T_5\) \(\{Cerveja\}\) 0 0 0 0 1

Conceito de Itemset

  • Itemset (\(I\)): Subconjunto de itens \(I \subseteq \mathcal{I}\) (ex.: \(I = \{P\tilde{a}o, Leite\}\)).
  • Condição de Presença: O itemset está contido na transação \(n \iff \prod_{j \in I} x_{nj} = 1\).
  • O par \(\{P\tilde{a}o, Leite\}\) ocorre em \(T_1\) e \(T_4\) (Suporte \(= 2/5 = 40\%\)).

Formalização de Itens e Transações

Formalismo: Transações e Suporte (ESL §14.2)

  • Vetor binário de transação: \(\mathbf{x} = (x_1, \dots, x_D)^T \in \{0, 1\}^D\).
  • Base com \(N\) observações: \(\mathcal{D} = \{\mathbf{x}_1, \dots, \mathbf{x}_N\}\).
  • Suporte de um itemset \(I \subseteq \mathcal{I}\): \[s(I) = P\left(\bigwedge_{j \in I} x_j = 1\right) = \frac{1}{N}\sum_{n=1}^N \prod_{j \in I} x_{nj}\]
  • Um itemset é frequente se \(s(I) \ge s_{\min}\).
  • O espaço de busca bruto contém \(2^D - 1\) combinações.

Teorema da Antimonotonicidade do Suporte

Teorema 1: Antimonotonicidade do Suporte

Para quaisquer itemsets \(A\) e \(B\): \[A \subseteq B \implies s(B) \le s(A)\]

  • Demonstração em 1 passo: Transações que contêm \(B\) contêm obrigatoriamente \(A \subseteq B\). \[\mathcal{T}_B \subseteq \mathcal{T}_A \implies |\mathcal{T}_B| \le |\mathcal{T}_A| \implies \frac{|\mathcal{T}_B|}{N} \le \frac{|\mathcal{T}_A|}{N}\]

A Contrapositiva (Regra de Poda)

\[s(A) < s_{\min} \implies \forall B \supseteq A, \quad s(B) < s_{\min}\] Se \(\{Caf\acute{e}, Ch\acute{a}\}\) é infrequente, \(\{Caf\acute{e}, Ch\acute{a}, A\text{ç}\acute{u}car\}\) é eliminado sem ser testado!

Regras de Associação: Confiança e Lift

Métricas de Associação: Confiança e Lift (ESL §14.2)

  • Regra \(A \Rightarrow B\): antecedente \(A\), consequente \(B\) (\(A \cap B = \emptyset\)).
  • Confiança: Probabilidade condicional empírica: \[c(A \Rightarrow B) = \frac{s(A \cup B)}{s(A)} = \frac{P(A \cap B)}{P(A)} = P(B \mid A)\]
  • Lift: Razão sobre a independência estocástica: \[\text{Lift}(A \Rightarrow B) = \frac{P(A \cap B)}{P(A)P(B)} = \frac{P(B \mid A)}{P(B)}\]
  • Escala de Interpretação:
    • \(\text{Lift} = 1 \iff\) Independência estatística (\(P(B \mid A) = P(B)\)).
    • \(\text{Lift} > 1 \iff\) Co-ocorrência acima da independência aleatória.
    • \(\text{Lift} < 1 \iff\) Relação de substituição ou concorrência mútua.

A Falácia da Simetria do Lift

Demonstração Analítica da Simetria

\[\text{Lift}(A \Rightarrow B) = \frac{P(A \cap B)}{P(A)P(B)} \equiv \frac{P(B \cap A)}{P(B)P(A)} = \text{Lift}(B \Rightarrow A)\]

  • A métrica é estritamente comutativa: atribui o mesmo número exato a \(A \Rightarrow B\) e \(B \Rightarrow A\).
  • O Lift não carrega informação de direcionalidade, tempo ou causalidade.
  • A Conexão com as Confianças: \[c(A \Rightarrow B) = \text{Lift} \times P(B) \quad \text{e} \quad c(B \Rightarrow A) = \text{Lift} \times P(A) \implies \mathbf{\frac{c(A \Rightarrow B)}{c(B \Rightarrow A)} = \frac{P(B)}{P(A)}}\]

Simetria do Lift: Smartphone (\(A\)) vs. Capinha (\(B\)):

  • Marginais: \(P(A) = 1\%\) e \(P(B) = 20\%\). O Lift é idêntico nas duas direções: \(\text{Lift} = \mathbf{4{,}75}\).
  • \(c(A \Rightarrow B) = 4{,}75 \times 0{,}20 = \mathbf{95\%}\) (“quem compra celular quase sempre leva capinha”).
  • \(c(B \Rightarrow A) = 4{,}75 \times 0{,}01 = \mathbf{4{,}75\%}\) (“quem compra capinha quase nunca leva celular”).

A Falácia Causal

Interpretar Lift elevado como atração causal mútua induz a erros graves: promover o consequente popular (\(B\)) não atrai compradores do antecedente raro (\(A\)).

Pausa 2: Suporte, Confiança e a Falácia da Simetria

V ou F: Métricas de Regras de Associação

Julgue V ou F — a questão só conta se acertar os 4 itens:

  • □ Pela propriedade de antimonotonicidade, se o itemset \(\{P\tilde{a}o, Caf\acute{e}\}\) tem suporte de \(0{,}30\), o item isolado \(\{P\tilde{a}o\}\) tem suporte maior ou igual a \(0{,}30\).
  • □ A confiança \(c(A \Rightarrow B)\) é uma métrica simétrica, satisfazendo sempre \(c(A \Rightarrow B) = c(B \Rightarrow A)\).
  • □ Se um produto \(B\) for comprado em \(90\%\) de todas as transações de uma loja, qualquer regra \(A \Rightarrow B\) terá confiança mínima de \(90\%\), mesmo que \(A\) e \(B\) sejam completamente independentes.
  • □ Um valor de \(\text{Lift}(A \Rightarrow B) = 3{,}0\) prova que comprar \(A\) causa diretamente um aumento de \(300\%\) nas vendas de \(B\).

Pausa 2: Resposta

V ou F: Resposta

  • ✔ V: \(A \subseteq B \implies s(B) \le s(A)\), logo \(s(\{P\tilde{a}o\}) \ge s(\{P\tilde{a}o, Caf\acute{e}\}) = 0{,}30\).
  • ✗ F: Confiança é \(P(B \mid A)\), que depende de \(P(A)\), enquanto \(c(B \Rightarrow A) = P(A \mid B)\), sendo fortemente assimétrica.
  • ✔ V: Se \(A \perp\!\!\!\perp B\), \(P(B \mid A) = P(B) = 0{,}90\). A confiança é alta apenas pela popularidade de \(B\).
  • ✗ F: O Lift mede correlação marginal simétrica; não estabelece relação causal nem direcionalidade.

Voltando à pergunta: \(\text{Lift} = \frac{P(B \mid A)}{P(B)} = \frac{P(A \mid B)}{P(A)}\). Como quase todos que compram tablet levam sacola, \(P(Sacola \mid Tablet) \approx 1\). Mas como quase todos na loja compram sacola (\(P(Sacola) \approx 0{,}95\)), o Lift é próximo de \(1\). Abaixar o preço da sacola não atrairá compradores de tablet; a alta confiança decorre exclusivamente da onipresença da sacola.

Bloco 2: O Algoritmo Apriori na Prática

Um Cenário Concreto: A Mini-Base de 5 Transações

O Problema Concreto: 5 Transações de Supermercado

Base didática com 5 compras (\(N=5\)) e 5 produtos:

  • \(T_1: \{Café, Leite, Pão\}\)
  • \(T_2: \{Café, Leite, Manteiga\}\)
  • \(T_3: \{Café, Leite, Manteiga, Pão\}\)
  • \(T_4: \{Leite, Manteiga, Pão\}\)
  • \(T_5: \{Café, Cerveja, Pão\}\)
  • Parâmetro de Corte:
    • Suporte mínimo: \(s_{\min} = 60\% \implies \text{contagem } \ge \mathbf{3 \text{ cestas}}\).
  • A Meta do Apriori:
    • Encontrar todos os conjuntos de itens frequentes sem testar as \(2^5 - 1 = 31\) combinações possíveis.
    • Como? Operando nível a nível com poda antecipada!

Nível 1 (\(k=1\)): Contagem Individual e a Primeira Poda

Nível 1 (\(k=1\)): Contagem e Poda na Raiz

Varremos as 5 transações contando cada item isolado (\(s_{\min} = 3\)):

  • \(\{Café\}: 4/5 = 80\%\) ✔
  • \(\{Leite\}: 4/5 = 80\%\) ✔
  • \(\{Manteiga\}: 3/5 = 60\%\) ✔
  • \(\{Pão\}: 4/5 = 80\%\) ✔
  • \(\{Cerveja\}: 1/5 = 20\%\) ✗ Eliminada!
  • Resultado do Nível 1: \[L_1 = \{\{Café\}, \{Leite\}, \{Manteiga\}, \{Pão\}\}\]

A Poda da Cerveja

Como \(\{Cerveja\}\) é infrequente, nenhum superconjunto com cerveja pode ser frequente. Eliminamos instantaneamente 16 das 31 combinações do catálogo!

Nível 2 (\(k=2\)): Geração de Pares e Contagem

Nível 2 (\(k=2\)): Junção de Pares e Contagem

Combinamos os 4 itens de \(L_1\) gerando \(\binom{4}{2} = 6\) candidatos em \(C_2\):

  • Contagem nas 5 transações:
    • \(\{Café, Leite\}: 3/5\) ✔ (\(T_1, T_2, T_3\))
    • \(\{Café, Manteiga\}: 2/5\) ✗ (\(T_2, T_3\)) \(\implies\) Reprovado!
    • \(\{Café, Pão\}: 3/5\) ✔ (\(T_1, T_3, T_5\))
    • \(\{Leite, Manteiga\}: 3/5\) ✔ (\(T_2, T_3, T_4\))
    • \(\{Leite, Pão\}: 3/5\) ✔ (\(T_1, T_3, T_4\))
    • \(\{Manteiga, Pão\}: 2/5\) ✗ (\(T_3, T_4\)) \(\implies\) Reprovado!

Resultado do Nível 2 (\(L_2\))

\[L_2 = \{\{Café, Leite\}, \{Café, Pão\}, \{Leite, Manteiga\}, \{Leite, Pão\}\}\] Atenção: \(\{Café, Manteiga\}\) e \(\{Manteiga, Pão\}\) foram reprovados!

Nível 3 (\(k=3\)): O Passo de Junção (\(L_{k-1} \bowtie L_{k-1}\))

A Regra do Prefixo Comum (\(L_{k-1} \bowtie L_{k-1}\))

Dois itemsets só se unem se compartilharem os primeiros \(k-2\) itens (\(k=3 \implies k-2=1\) item de prefixo):

  • Aplicando aos pares de \(L_2\):
    • Prefixo \(Café\): \[\{Café, Leite\} \bowtie \{Café, Pão\} \implies \mathbf{c_1 = \{Café, Leite, Pão\}}\]
    • Prefixo \(Leite\): \[\{Leite, Manteiga\} \bowtie \{Leite, Pão\} \implies \mathbf{c_2 = \{Leite, Manteiga, Pão\}}\]

Candidatos Gerados (\(C_3\))

\[C_3 = \{\{Café, Leite, Pão\}, \{Leite, Manteiga, Pão\}\}\] Cada candidato foi gerado uma única vez, sem duplicatas!

O Passo de Poda (Pruning Step) em Memória RAM

O Filtro de Poda (Prune Step) em Memória

Todo subconjunto de tamanho 2 de um candidato deve estar em \(L_2\). Testamos em RAM antes de ler o disco:

  • Teste de \(c_1 = \{Café, Leite, Pão\}\):
    • \(\{Café, Leite\} \in L_2\)? ✔ Sim.
    • \(\{Café, Pão\} \in L_2\)? ✔ Sim.
    • \(\{Leite, Pão\} \in L_2\)? ✔ Sim. \(\implies\) SOBREVIVE à poda!
  • Teste de \(c_2 = \{Leite, Manteiga, Pão\}\):
    • \(\{Leite, Manteiga\} \in L_2\)? ✔ Sim.
    • \(\{Leite, Pão\} \in L_2\)? ✔ Sim.
    • \(\{Manteiga, Pão\} \in L_2\)? ✗ NÃO! (falhou no Nível 2) \(\implies\) PODADO IMEDIATAMENTE EM RAM!

Zero Acesso a Disco

O candidato \(c_2\) é descartado sem ler nenhuma transação. Apenas \(c_1\) vai para a contagem!

Varredura Final e o Critério de Parada

Varredura de \(C_3\) e Encerramento

  • Apenas \(c_1 = \{Café, Leite, Pão\}\) sobreviveu à poda em RAM.
  • Leitura do disco: aparece em \(T_1\) e \(T_3 \implies \text{contagem } = \mathbf{2 < 3}\).
  • Como \(2 < 3\), o trio é reprovado!
  • Resultado do Nível 3: \[L_3 = \emptyset\]

Critério de Parada

Quando \(L_k = \emptyset\), o algoritmo encerra imediatamente!

  • Não testa quartetos nem quintetos.
  • Varreu o disco apenas 3 vezes.
  • Encontrou o resultado exato com um mínimo de esforço computacional.

Da Poda de Itens à Extração de Regras

Como Gerar Regras a partir de um Itemset \(I\)

  • Para cada itemset frequente \(I\), particiona-se em \(A \Rightarrow (I \setminus A)\).
  • O suporte conjunto no numerador é constante: \(s(I)\).
  • A Confiança varia com o antecedente: \(c = \frac{s(I)}{s(A)}\).
  • Exemplo com \(I = \{Caf\acute{e}, Leite, P\tilde{a}o\}\) (\(s(I) = 0{,}30\)):
    • \(\{Caf\acute{e}, Leite\} \Rightarrow \{P\tilde{a}o\}: \quad c = \frac{0{,}30}{0{,}35} = \mathbf{85{,}7\%}\) (Aprovada para \(c_{\min} = 70\%\)).
    • \(\{Leite, P\tilde{a}o\} \Rightarrow \{Caf\acute{e}\}: \quad c = \frac{0{,}30}{0{,}50} = \mathbf{60{,}0\%}\) (Reprovada!).
    • \(\{P\tilde{a}o\} \Rightarrow \{Caf\acute{e}, Leite\}: \quad c = \frac{0{,}30}{0{,}75} = \mathbf{40{,}0\%}\) (Reprovada!).

A Poda de Regras (Rule Pruning)

\[A' \subset A \implies s(A') \ge s(A) \implies c(A' \Rightarrow B') \le c(A \Rightarrow B)\] Mover itens do antecedente para o consequente só reduz a confiança. Se uma regra com consequente de 1 item falha no limiar \(c_{\min}\), nenhum de seus desdobramentos com consequentes maiores precisa ser testado!

Aplicação Prática: Minerando Transações de Mercado

Mineração Prática de Cestas de Compras

  • Base com \(N=20\) transações de supermercado.
  • Parâmetros: \(s_{\min} = 0{,}20\) (\(20\%\)) e \(c_{\min} = 0{,}60\) (\(60\%\)).
  • Execução do pipeline: \(L_1 \to C_2 \to L_2 \to C_3 \to L_3 \to \text{Regras}\).
# Exibição das regras mineradas pelo algoritmo Apriori
print(f"Total de regras mineradas: {len(df_regras_pratico)}")
df_regras_display = df_regras_pratico.copy()
df_regras_display["Suporte"] = df_regras_display["Suporte"].apply(lambda v: brl(v, 2))
df_regras_display["Confiança"] = df_regras_display["Confiança"].apply(lambda v: brl(v, 2))
df_regras_display["Lift"] = df_regras_display["Lift"].apply(lambda v: brl(v, 2))
df_regras_display.head(8)
Total de regras mineradas: 7
Antecedente Consequente Suporte Confiança Lift
0 Cerveja Fralda 0,25 0,83 2,38
1 Fralda Cerveja 0,25 0,71 2,38
2 Manteiga Pão 0,35 0,87 1,46
3 Café Pão 0,25 0,83 1,39
4 Manteiga Leite 0,25 0,62 1,39
5 Leite, Manteiga Pão 0,20 0,80 1,33
6 Leite Pão 0,35 0,78 1,30

O Que a Tabela Prática Mostra

  • Regras clássicas como \(\{Cerveja\} \Rightarrow \{Fralda\}\) emergem com \(\text{Lift} > 2\).
  • Regras de café da manhã \(\{Leite, Manteiga\} \Rightarrow \{P\tilde{a}o\}\) com confiança de \(100\%\).

O Apriori como Gerador de Candidatos

O Apriori gera uma lista plana de regras empíricas. Mas ele é incapaz de distinguir:

  • Dependências diretas vs. atalhos transitivos redundantes (\(A \Rightarrow B \Rightarrow C\));
  • Associações genuínas vs. correlações espúrias por causas comuns (\(A \Leftarrow B \Rightarrow C\));
  • Vieses de seleção ao recortar subconjuntos da base (\(A \Rightarrow C \Leftarrow B\)).

\(\implies\) Precisamos de Modelos Gráficos Probabilísticos para filtrar e validar as regras candidatas!

Pausa 3: A Poda do Apriori e a Mineração Prática

V ou F: Mecânica do Algoritmo Apriori

Julgue V ou F — a questão só conta se acertar os 4 itens:

  • □ No algoritmo Apriori, o passo de poda (prune step) exige varrer novamente o banco de dados em disco para checar a frequência dos subconjuntos.
  • □ Se um candidato de tamanho 3 tem um subconjunto de tamanho 2 que não está em \(L_2\), ele é descartado imediatamente pela antimonotonicidade.
  • □ O algoritmo Apriori garante encontrar todos os itemsets frequentes da base de dados para o limiar \(s_{\min}\) escolhido.
  • □ Se uma base transacional contiver \(1\) milhão de compras, o Apriori realizará \(1\) milhão de varreduras na base de dados.

Pausa 3: Resposta

V ou F: Resposta

  • ✗ F: O passo de poda consulta apenas a tabela \(L_{k-1}\) já em memória RAM; não há leitura de disco.
  • ✔ V: Pela antimonotonicidade, se um subconjunto é infrequente, o candidato não pode ser frequente.
  • ✔ V: A poda do Apriori é exata (não heurística ou aproximada); nenhum itemset frequente é omitido.
  • ✗ F: O número de varreduras é igual ao tamanho do maior itemset frequente (\(k_{\max} + 1\)), tipicamente entre 3 e 6 passadas.

Voltando à pergunta: Para o trio \(\{A, B, C\}\), seus subconjuntos \(\{A, B\}, \{A, C\}, \{B, C\}\) estão em \(L_2\), logo ele sobrevive. Para o trio \(\{A, B, D\}\), \(\{A, B\}, \{A, D\}, \{B, D\} \in L_2\), sobrevivendo. Mas para qualquer candidato contendo \(\{C, D\}\) (como \(\{A, C, D\}\) ou \(\{B, C, D\}\)), a ausência de \(\{C, D\} \in L_2\) causa descarte imediato! O quarteto \(\{A, B, C, D\}\) sequer é gerado.

Bloco 3: Redes Bayesianas como Filtro Estrutural de Regras

O DAG como Mapa de Dependências

Por Que Precisamos de Grafos?

  • O Apriori produz uma lista plana de candidatos empíricos.
  • Tentar estimar a distribuição conjunta completa de 30 itens por força bruta exigiria: \[2^{30} - 1 > \mathbf{1 \text{ bilhão de parâmetros!}}\]
  • A Solução das Redes Bayesianas (PRML §8.1):
    • Cada variável depende apenas dos seus pais imediatos \(\text{pa}_k\) no DAG: \[p(x_1, \dots, x_K) = \prod_{k=1}^K p(x_k \mid \text{pa}_k)\]

A Leitura Visual do DAG

  • Nós: Itens ou variáveis.
  • Arestas direcionadas: Relações diretas.
  • Ausência de arestas: Independência condicional formal!

As Três Geometrias Canônicas do Fluxo de Informação

Independência Condicional (PRML §8.2)

\[A \perp\!\!\!\perp B \mid C \iff p(A, B \mid C) = p(A \mid C)p(B \mid C) \iff p(A \mid B, C) = p(A \mid C)\] - Conhecer \(B\) não traz nenhuma informação sobre \(A\) quando \(C\) já é conhecido.

  • As Três Geometrias Canônicas em 3 Nós:
    1. Cadeia (\(A \to B \to C\)): Bloqueada por \(B \implies \mathbf{A \perp\!\!\!\perp C \mid B}\).
    2. Causa Comum (\(A \leftarrow B \to C\)): Bloqueada por \(B \implies \mathbf{A \perp\!\!\!\perp C \mid B}\).
    3. Colisor (\(A \to C \leftarrow B\)): Bloqueado marginalmente (\(\mathbf{A \perp\!\!\!\perp B}\)), mas aberto dado \(C\) (\(\mathbf{A \not\perp\!\!\!\perp B \mid C}\)).

A Assinatura Única do Colisor (Explaining Away)

Cadeias e causas comuns são bloqueadas pelo condicionamento. O colisor é a única geometria ativada ao condicionar no efeito comum!

Comparação das Três Geometrias Canônicas

Resumo do Fluxo de Informação

  • Cadeia (\(A \to B \to C\)): Aberto marginalmente \(\to\) Bloqueado dado \(B\) (\(A \perp\!\!\!\perp C \mid B\)).
  • Causa Comum (\(A \leftarrow B \to C\)): Aberto marginalmente \(\to\) Bloqueado dado \(B\) (\(A \perp\!\!\!\perp C \mid B\)).
  • Colisor (\(A \to C \leftarrow B\)): Bloqueado marginalmente (\(A \perp\!\!\!\perp B\)) \(\to\) Aberto dado \(C\) (\(A \not\perp\!\!\!\perp B \mid C\)).

Visualização das Três Geometrias Canônicas

As Geometrias Canônicas como Filtro de Regras

O Que Fazer com a Regra em Cada Geometria?

  • 1. Causa Comum (\(A \leftarrow B \to C\)):
    • Teste: \(Café \perp\!\!\!\perp Torradeira \mid Renda\).
    • Ação no Grafo: Eliminar aresta direta.
    • Decisão no Negócio: Descartar a regra do sistema de recomendação (espúria!).
  • 2. Cadeia / Transitividade (\(A \to B \to C\)):
    • Teste: \(Manteiga \perp\!\!\!\perp Café \mid Pão\).
    • Ação no Grafo: Podar a aresta de atalho \(\{Manteiga\} \to \{Café\}\).
    • Decisão no Negócio: Arquivar regra redundante; sugerir apenas o próximo passo.

3. Colisor / Seleção (\(A \to C \leftarrow B\))

Condicionar em subamostras (ex: “Clientes VIP” \(C=1\)) induz dependências artificiais via explaining away. - Ação no Grafo: Manter \(A\) e \(B\) desconectados. - Decisão no Negócio: Rejeitar promoções gerais baseadas em recortes amostrais!

Pausa 4: As Geometrias Canônicas como Filtro de Regras

O Alarme e o Terremoto

Considere três variáveis: \(A\) (Ocorreu um terremoto), \(B\) (Houve uma tentativa de assalto) e \(C\) (O alarme da casa tocou). Terremotos e assaltos são independentes na natureza (\(A \perp\!\!\!\perp B\)).

Se você estiver viajando e receber uma notificação de que o alarme tocou (\(C=1\)), e dez segundos depois ouvir no rádio que um terremoto acabou de ocorrer na sua cidade (\(A=1\)), o que acontece com a probabilidade de que sua casa tenha sido assaltada (\(B=1\))?

V ou F: As Três Geometrias Canônicas

Julgue V ou F — a questão só conta se acertar os 4 itens:

  • □ Na cadeia \(A \to B \to C\), condicionar no nó intermediário \(B\) torna \(A\) e \(C\) condicionalmente independentes (\(A \perp\!\!\!\perp C \mid B\)).
  • □ Na causa comum \(A \leftarrow B \to C\), condicionar em \(B\) induz dependência espúria entre \(A\) e \(C\).
  • □ No colisor \(A \to C \leftarrow B\), as causas \(A\) e \(B\) são marginalmente independentes sem nenhum condicionamento (\(A \perp\!\!\!\perp B\)).
  • □ Se \(C\) for um colisor entre \(A\) e \(B\), condicionar no nó \(C\) (ou em qualquer de seus descendentes) mantém o caminho bloqueado.

Pausa 4: Resposta

V ou F: Resposta

  • ✔ V: Condicionar no intermediário bloqueia o canal head-to-tail.
  • ✗ F: Condicionar na causa comum dissipa a correlação espúria e restaura a independência condicional.
  • ✔ V: Sem condicionamento no colisor nem em seus descendentes, o canal está naturalmente fechado.
  • ✗ F: Condicionar no colisor ou em qualquer de seus descendentes abre o caminho e induz dependência estatística.

Voltando à pergunta: A confirmação do terremoto (\(A=1\)) “explica e afasta” (explains away) o disparo do alarme, fazendo com que a probabilidade a posteriori de um assalto despenque (\(P(B=1 \mid C=1, A=1) \ll P(B=1 \mid C=1)\)). É a assinatura matemática do colisor.

Bloco 4: Montando o Grafo e os Limites dos Dados Observacionais

Montando o Grafo por Componentes Locais

Por Que Montar por Componentes Locais?

  • Ajustar um DAG global entre dezenas de itens por força bruta é intratável (espaço super-exponencial).
  • Em vez de buscar o grafo inteiro de uma vez, montamos o grafo validando cada componente local (abordagem baseada em restrições / Algoritmo PC).
  • O Pipeline de Montagem em 3 Etapas:
    1. Esqueleto: O Apriori fornece os pares frequentes (\(L_2\)) como conexões candidatas.
    2. Poda Local: Testes de independência condicional (\(A \perp\!\!\!\perp C \mid B\)) eliminam regras espúrias e atalhos transitivos.
    3. Orientação de Colisores: Pares independentes que se tornam dependentes dado \(C\) orientam setas unívocas (\(A \to C \leftarrow B\)).

O Resultado

Obtemos o Grafo Essencial (CPDAG): esqueleto limpo com as direções identificáveis fixadas!

Exemplo Prático: Da Lista de Regras ao DAG

Exemplo: As 6 Regras Candidatas do Apriori

  1. \(\{R\} \Rightarrow \{C\}\) (\(\text{Lift} = 2{,}5\))
  2. \(\{R\} \Rightarrow \{T\}\) (\(\text{Lift} = 2{,}8\))
  3. \(\{C\} \Rightarrow \{T\}\) (\(\text{Lift} = 2{,}69\)) — Espúrio!
  4. \(\{P\} \Rightarrow \{M\}\) (\(\text{Lift} = 2{,}2\))
  5. \(\{M\} \Rightarrow \{C\}\) (\(\text{Lift} = 1{,}8\))
  6. \(\{P\} \Rightarrow \{C\}\) (\(\text{Lift} = 1{,}7\)) — Atalho redundante!
  • O esqueleto inicial do Apriori forma dois triângulos densos e sobrepostos.

Visualização: 1. Esqueleto Bruto do Apriori

Montando o DAG Passo a Passo

1. Poda de Causa Comum (Filtro de Espúrios)

  • Teste: \(P(C, T \mid R) = P(C \mid R)P(T \mid R) \implies \mathbf{C \perp\!\!\!\perp T \mid R}\).
  • Ação: Aresta direta \(C - T\) é removida do grafo!

2. Poda de Transitividade (Cadeia)

  • Teste: \(P(C \mid P, M) = P(C \mid M) \implies \mathbf{P \perp\!\!\!\perp C \mid M}\).
  • Ação: Atalho redundante \(P - C\) é podado! Resta \(P \to M \to C\).
  • Resultado: De 6 regras ruidosas para 4 dependências essenciais!

Visualização: 2. O DAG Final Validado

I-Equivalência e o Limite Epistemológico Observacional

O Limite Epistemológico dos Dados Observacionais

  • Três estruturas com orientações distintas: \[A \to B \to C \quad \Longleftrightarrow \quad A \leftarrow B \leftarrow C \quad \Longleftrightarrow \quad A \leftarrow B \to C\]
  • Todas as três codificam exatamente a mesma declaração: \(A \perp\!\!\!\perp C \mid B\).
  • Nenhum algoritmo sobre dados puramente passivos consegue separá-las!

Teorema de I-Equivalência (Verma & Pearl, 1990)

Dois DAGs pertencem à mesma classe de equivalência de Markov se e somente se: 1. Compartilham o mesmo esqueleto; E 2. Compartilham as mesmas v-structures (\(A \to C \leftarrow B\)).

Causalidade Exige Intervenção (\(do(x)\))

Dados observacionais passivos constroem o CPDAG e orientam colisores. Para determinar a direção causal de arestas reversíveis, é indispensável a intervenção experimental ativa (teste A/B no varejo, forçando \(do(A)\)).

Pausa 5: Componentes do Grafo e o Teto Observacional

O Teto dos Dados Passivos

Suponha que, analisando 500 mil transações de varejo com os produtos \(A\), \(B\) e \(C\), seus testes estatísticos comprovem rigorosamente que \(A \perp\!\!\!\perp C \mid B\), e nenhuma outra independência exista. É possível afirmar apenas com esses dados se \(A\) causa \(B\) ou se \(B\) causa \(A\)? O que seria necessário fazer na loja para desvendar a seta com certeza científica?

V ou F: Componentes e Equivalência Observacional

Julgue V ou F — a questão só conta se acertar os 4 itens:

  • □ O Apriori fornece o esqueleto inicial de conexões frequentes, enquanto os testes locais de independência condicional podam regras espúrias e atalhos transitivos.
  • □ Dois DAGs com o mesmo esqueleto e as mesmas v-structures pertencem à mesma classe de equivalência de Markov e são indistinguíveis por dados puramente observacionais.
  • □ O grafo de colisor \(A \to B \leftarrow C\) gera a mesma distribuição de independência condicional que a cadeia \(A \to B \to C\).
  • □ Apenas com dados passivos de compras de supermercado, sem qualquer experimento ativo (\(do(x)\)), é sempre possível determinar a direção de causa e efeito de todas as arestas do grafo.

Pausa 5: Resposta

V ou F: Resposta

  • ✔ V: Essa é a estratégia computacionalmente tratável de algoritmos baseados em restrições (como o PC).
  • ✔ V: Teorema de Verma & Pearl (1990); ambos produzem exatamente as mesmas independências condicionais.
  • ✗ F: O colisor possui assinatura observacional única (\(A \perp\!\!\!\perp C\) marginalmente, mas dependente dado \(B\)).
  • ✗ F: Dados observacionais encontram apenas a classe de equivalência (CPDAG); causalidade exige intervenção ativa (\(do(x)\)) ou premissas temporais externas.

Voltando à pergunta: É impossível determinar a direção causal apenas com dados observacionais passivos, pois \(A \to B \to C\), \(A \leftarrow B \leftarrow C\) e \(A \leftarrow B \to C\) geram exatamente as mesmas independências condicionais. Para descobrir a seta causal, seria indispensável uma intervenção ativa: intervir no preço, vitrine ou estoque de \(B\) (forçar \(do(B)\)) e observar se as compras de \(A\) e \(C\) se alteram.

Fechamento

A Síntese: Candidato Bruto vs. Validação Gráfica

1. O Apriori como Gerador de Candidatos

  • Rápido, exaustivo e escalável via antimonotonicidade do suporte.
  • Produz a lista inicial de regras frequentes com suporte e confiança.
  • 2. PGMs e Independência Condicional como Validador e Filtro:
    • Causa Comum (\(A \leftarrow B \to C\)): descarta regras espúrias (\(A \perp\!\!\!\perp C \mid B\)).
    • Cadeia (\(A \to B \to C\)): poda atalhos redundantes (\(A \perp\!\!\!\perp C \mid B\)).
    • Colisor (\(A \to C \leftarrow B\)): previne vieses de seleção e orienta setas essenciais.

3. Montando o Grafo por Componentes Locais

Não ajustamos um DAG global intratável: validamos cada componente local. A união desses blocos forma o esqueleto e os colisores (CPDAG) da Rede Bayesiana!

Retomando as Quatro Perguntas

1. Suporte é frequência empírica conjunta; antimonotonicidade (\(A \subseteq B \implies s(B) \le s(A)\)) permite a poda exponencial de superconjuntos. O Lift é simétrico e vulnerável a variáveis de confusão latentes.

2. O Apriori executa junção \(L_{k-1} \bowtie L_{k-1}\), poda candidatos em memória RAM e varre o disco apenas para conjuntos válidos.

3. Redes Bayesianas fatoram a conjunta nos pais imediatos. As três geometrias canônicas filtram regras espúrias (causa comum), podam redundâncias (cadeia) e alertam sobre viés de seleção (colisor).

4. O grafo é montado por componentes locais gerando o CPDAG. Pela I-Equivalência de Markov, dados puramente observacionais não revelam causalidade plena sem intervenção experimental ativa (\(do(x)\)).

O Que Fica em Aberto

  • Aprendizado de Estrutura: Achar o melhor DAG é NP-difícil (algoritmos gulosos e algoritmo PC).
  • Variáveis Ocultas: Exigem o ferramental do \(do\)-calculus de Pearl.
  • Esparsidade Massiva em Varejo: Catálogos com milhões de itens pedem representações matriciais contínuas.

Ponte para a Aula 10

  • Aula 10: Sistemas de Recomendação — Fatoração de Matrizes (SVD e NMF).
  • Como fatorar matrizes massivas com mais de \(99\%\) de valores ausentes e extrair fatores latentes interpretáveis baseados em partes aditivas.