Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Detecção de Anomalias em Tráfego de Rede (Unsupervised ML)

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.

📊 Base de Dados

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.

🛠️ Pipeline de Pré-processamento

Para elevar o Recall de 1,9% (inicial) para patamares competitivos, aplicamos as seguintes técnicas:

  1. Limpeza de Dados: Remoção de metadados (IPs, endereços MAC, timestamps) e colunas não numéricas.
  2. Tratamento de Missing Values: Preenchimento com a média das colunas.
  3. 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.
  4. StandardScaler: Normalização para que todos os atributos tenham média 0 e desvio padrão 1.
  5. 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.

🤖 Modelos de Detecção

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.

🏆 Resultados e Métricas

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).

🚀 Como Executar

  1. Criar Ambiente Virtual:
    python3 -m venv .venv
    source .venv/bin/activate
  2. Instalar Dependências:
    pip install pandas scikit-learn matplotlib jupyter nbconvert
  3. Rodar o Notebook: Abra o arquivo notebook/anomaly_detection.ipynb via Jupyter ou execute via CLI:
    jupyter nbconvert --to notebook --execute --inplace notebook/anomaly_detection.ipynb

📂 Estrutura do Projeto

├── 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages