Este projeto implementa um pipeline completo de Inteligência Artificial para a detecção de ataques em fluxos de rede, utilizando técnicas de Aprendizado de Máquina Não Supervisionado. O objetivo é identificar padrões anômalos (ataques) sem a necessidade de rotular os dados para o treinamento.
A base de dados é composta por fluxos de tráfego de rede capturados e exportados em formato CSV.
- Arquivos:
output_bottom.csv,output_left.csv,output_right.csv. - Atributos: Originalmente 64 colunas, incluindo endereços IP, MACs, protocolos, contagem de pacotes, soma de bytes e taxas de transferência.
- Target (Gabarito): A coluna
IT_B_Label(0 = Normal, 1 = Ataque) é utilizada exclusivamente para a validação das métricas de desempenho.
Para elevar o Recall de 1,9% (inicial) para patamares competitivos, aplicamos as seguintes técnicas:
- Limpeza de Dados: Remoção de metadados (IPs, endereços MAC, timestamps) e colunas não numéricas.
- Tratamento de Missing Values: Preenchimento com a média das colunas.
- Log Transform (np.log1p): Essencial para dados de rede. Esta técnica "achata" atributos com alta variância (como bytes e pacotes), impedindo que valores extremos (outliers) distorçam o aprendizado.
- StandardScaler: Normalização para que todos os atributos tenham média 0 e desvio padrão 1.
- PCA (Principal Component Analysis): Redução de dimensionalidade mantendo 95% da variância. Isso remove ruídos e ajuda os modelos a focarem nos padrões estruturais de ataque.
Utilizamos uma abordagem de Ensemble Híbrido combinando três filosofias de detecção diferentes:
- K-Means (Clusterização): Agrupa os dados em dois centros. O menor grupo é rotulado como anomalia. Baseia-se na distância euclidiana.
- Isolation Forest (Isolamento): Baseado em árvores de decisão. Ele "isola" anomalias em vez de descrever pontos normais. É extremamente eficiente para dados de alta dimensão.
- Local Outlier Factor (LOF - Densidade Local): Analisa a densidade de um ponto em relação aos seus vizinhos. É ideal para detectar ataques "furtivos" que não estão longe do centro, mas estão em regiões pouco povoadas.
O pipeline evoluiu significativamente durante os experimentos:
| Modelo | Recall (Ataque) | Precisão | F1-Score |
|---|---|---|---|
| K-Means Inicial | 1,9% | 0.64 | 0.03 |
| K-Means + PCA | 23,3% | 0.68 | 0.34 |
| Isolation Forest + PCA | 43,2% | 0.71 | 0.53 |
| Ensemble (Maioria) | 55,5% | 0.70 | 0.61 |
Nota: O Ensemble por Voto de Maioria provou ser a estratégia mais robusta, alcançando o melhor equilíbrio entre detectar o maior número de ataques (Recall) e manter a confiabilidade dos alertas (Precisão).
- Criar Ambiente Virtual:
python3 -m venv .venv source .venv/bin/activate - Instalar Dependências:
pip install pandas scikit-learn matplotlib jupyter nbconvert
- Rodar o Notebook:
Abra o arquivo
notebook/anomaly_detection.ipynbvia Jupyter ou execute via CLI:jupyter nbconvert --to notebook --execute --inplace notebook/anomaly_detection.ipynb
├── data/ # Arquivos CSV de entrada
├── notebook/ # Jupyter Notebook com o código principal
├── .venv/ # Ambiente virtual Python
└── README.md # Documentação do projeto
Projeto desenvolvido como parte da disciplina de IA para Detecção de Anomalias.