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.
Normalização (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}}$$Naive Bayes Gaussiano
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)$$Suavização da Variância
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}$F1-Score (Ponderado)
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}}$$Busca Bayesiana (BayesSearchCV)
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 WebAssemblyDesempenho 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_smoothinge da escala log-uniforme. - [ ] Clicou em "Baixar .ipynb (AVA)" para gerar seu arquivo de notebook.
- [ ] Anexou e enviou o arquivo
.ipynbna tarefa correspondente do seu AVA.