Laboratório Interativo de Aprendizagem de Máquina

Guia Didático & Simulador: Otimização Bayesiana

Associação entre Código Python, Conceitos Teóricos, Fórmulas e Entrega AVA

Atenção para a Entrega da Atividade!

Ao final do exercício, clique no botão "Baixar .ipynb (AVA)" para exportar seu arquivo e envie-o pelo Ambiente Virtual de Aprendizagem (AVA).

Conexão Didática: Código $\rightarrow$ Conceito $\rightarrow$ Matemática

Explore como cada linha de comando em Português se traduz em uma equação e em um conceito estatístico.


Pré-processamento
Normalização (MinMaxScaler)
normalizador = MinMaxScaler()

Conceito: Transforma os dados para ficarem dentro de um intervalo fixo $[0, 1]$. Garante que variáveis com grande amplitude não dominem o aprendizado.

Fórmula Matemática

$$x_{\text{escalado}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}}$$
Classificador
Naive Bayes Gaussiano
modelo = GaussianNB()

Conceito: Classificador probabilístico que assume que as variáveis contínuas seguem uma Distribuição Normal (Gaussiana) para cada classe $y$.

Fórmula da Verossimilhança

$$P(x_i \mid y) = \frac{1}{\sqrt{2\pi\sigma_y^2}} \exp\left(-\frac{(x_i - \mu_y)^2}{2\sigma_y^2}\right)$$
Hiperparâmetro
Suavização da Variância
'var_smoothing': (1e-9, 1e-5)

Conceito: Adiciona uma pequena parcela da variância máxima à variância calculada para evitar divisões por zero e probabilidades nulas.

Ajuste da Variância

$$\sigma_i^2 \leftarrow \sigma_i^2 + \epsilon \cdot \max(\sigma^2)$$ onde $\epsilon = \text{var\_smoothing}$
Métricas de Avaliação
F1-Score (Ponderado)
f1_score(average='weighted')

Conceito: Média harmônica entre Precisão e Revocação, ponderando pela quantidade de ocorrências de cada classe.

Fórmula do F1-Score

$$F_1 = 2 \cdot \frac{\text{Precisão} \cdot \text{Revocação}}{\text{Precisão} + \text{Revocação}}$$
Otimização
Busca Bayesiana (BayesSearchCV)
BayesSearchCV(cv=5, n_iter=20)

Conceito: Otimização probabilística sequencial. Utiliza o histórico de testes para escolher os melhores hiperparâmetros.

Teorema de Bayes Aplicação

$$P(f \mid D_{1:t}) \propto P(D_{1:t} \mid f) \cdot P(f)$$

Estrutura Completa do Código em Português

Acompanhe a lógica do script com variáveis e comentários em português:

Separamos as variáveis explicativas (atributos) do vetor alvo (classe).

X_dados = dados.drop(columns=['Classe']) # Atributos explicativos
y_dados = dados['Classe']                # Variável Alvo

Os dados são divididos em 80% treino e 20% teste. O MinMaxScaler ajusta os dados ao intervalo $[0, 1]$.

X_treino, X_teste, y_treino, y_teste = train_test_split(X_dados, y_dados, test_size=0.2, random_state=12)

normalizador = MinMaxScaler()
X_treino_normalizado = normalizador.fit_transform(X_treino)
X_teste_normalizado = normalizador.transform(X_teste)

Definição do espaço de busca na escala log-uniforme entre $10^{-9}$ e $10^{-5}$ com validação cruzada.

espaco_parametros = {'var_smoothing': (1e-9, 1e-5, 'log-uniform')}
avaliador_f1 = make_scorer(f1_score, average='weighted')

busca_bayesiana = BayesSearchCV(
    estimator=GaussianNB(),
    search_spaces=espaco_parametros,
    scoring=avaliador_f1,
    cv=5,
    n_iter=20,
    random_state=42
)
busca_bayesiana.fit(X_treino_normalizado, y_treino)

Predição no conjunto de teste para gerar o relatório final de classificação e a matriz de confusão.

melhor_modelo = busca_bayesiana.best_estimator_
y_predito = melhor_modelo.predict(X_teste_normalizado)

print(classification_report(y_teste, y_predito))
print(confusion_matrix(y_teste, y_predito))

Simulador de Execução Real em Python

Pyodide WebAssembly
Inicializando ambiente Python e bibliotecas estatísticas...
Aguardando comando de execução...

Desempenho Visual & Métricas

Acompanhe graficamente o efeito da escolha do hiperparâmetro e os resultados da classificação.

Busca do var_smoothing vs. F1-Score
Matriz de Confusão (Transações Normais vs Fraudes)

Gabarito Didático do Roteiro

1. Qual técnica de otimização foi utilizada?

Foi utilizada a Otimização Bayesiana, implementada através da classe BayesSearchCV. A técnica constrói um modelo estatístico substituto para mapear a relação entre o hiperparâmetro e o desempenho ($F_1\text{-score}$), escolhendo de forma inteligente os pontos a serem testados ao invés de testar todas as combinações aleatoriamente ou em grade fixa.

2. Qual foi o critério para escolha dos valores do hiperparâmetro var_smoothing?

O critério foi adotar uma distribuição log-uniforme no intervalo contínuo entre $10^{-9}$ e $10^{-5}$ ((1e-9, 1e-5, 'log-uniform')). Como o var_smoothing afeta a variância exponencialmente em Ordens de Grandezas, a escala logarítmica assegura que ordens de grandeza muito pequenas (ex: $10^{-9}, 10^{-8}$) tenham a mesma chance de amostragem e exploração do que ordens maiores (ex: $10^{-6}, 10^{-5}$).

Checklist de Envio no AVA:
  • [X] Executou o código em português e analisou as métricas de saída.
  • [X] Compreendeu o papel do hiperparâmetro var_smoothing e da escala log-uniforme.
  • [ ] Clicou em "Baixar .ipynb (AVA)" para gerar seu arquivo de notebook.
  • [ ] Anexou e enviou o arquivo .ipynb na tarefa correspondente do seu AVA.