IWSHAP é uma ferramenta de seleção de características que combina o algoritmo Incremental Wrapper Subset Selection (IWSS) com valores SHAP (SHapley Additive exPlanations) com o objetivo de alcançar as melhores características para a detecção de ataques. A presente ferramenta permite identificar um conjunto de características reduzido ao mesmo tempo em que busca manter ou melhorar as métricas de desempenho do modelo. Ainda, a ferramenta dispõe de gráficos que visam a explicabilidade das características através dos valores SHAP. Dessa forma, busca-se alcançar um equilíbrio entre o desempenho do modelo de aprendizado de máquina e o tempo de otimização do conjunto de características analisados.
Todas as dependências serão instaladas junto ao docker, sendo elas:
- pandas==2.2.2
- numpy==1.26.4
- shap==0.45.1
- xgboost==2.0.3
- scikit-learn==1.5.0
- matplotlib==3.9.0
- pyarrow==16.1.0
Antes de tudo, é necessário clonar este repositório
git clone https://github.com/felipehscherer/iwshap-tool
Depois, entre no diretório clonado
cd sf24-IWSHAP
Você pode executar a ferramenta de algumas maneiras, sendo elas: a) Demonstração da ferramenta; b) Ambiente Docker; c) No seu computador (Linux)
Demonstração
-
- Esse script instalará os requisitos no seu sistema e executará a ferramenta IWSHAP
Dentro do diretório do IWSHAP:
./run_demo_app.sh
- Esse script instalará os requisitos no seu sistema e executará a ferramenta IWSHAP
Dentro do diretório do IWSHAP:
-
- Esse script baixará e executará a imagem sf24/iwshap:latest disponivel em: DockerHub.
Após isso é possivel executar a ferrameta diretamente utilizando o script da opção 1
./run_demo_docker.sh./run_demo_app.sh
- Esse script baixará e executará a imagem sf24/iwshap:latest disponivel em: DockerHub.
Docker 🐳
O IWSHAP disponibiliza um ambiente Docker com todas as configurações e dependências necessárias para a execução da ferramenta. Para isso, é necessário possuir uma instalação do Docker em execução no seu computador.
-
Linux 38ad4d51e477 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/LinuxPython 3.12.3
-
Linux:
apt install docker docker.ioWindows:
- Acesse o site oficial do Docker Desktop para Windows: Docker Desktop for Windows
-
Dentro do diretório do IWSHAP:
docker build . -t iwshap -
docker run -it iwshap
Linux 🐧
sudo apt-get install python3-venv
Dentro do diretório da ferramenta, execute:
python3 -m venv .venv
Dentro do diretório da ferramenta, execute:
source .venv/bin/activate
pip install -r requirements.txt
Exemplo de execução simples:
python3 IWSHAP.py -s your_dataset -a your_dataset
Exemplo de execução gerando gráfico summary plot:
python3 IWSHAP.py -s your_dataset -a your_dataset -x
Exemplo de execução gerando gráfico summary plot e o dataset reduzido:
python3 IWSHAP.py -s your_dataset -a your_dataset -x -n
| Flag | Parâmetro | Descrição | Obrigatória |
|---|---|---|---|
| -s | --safe-path | Caminho para o dataset benigno | Sim |
| -a | --attack-path | Caminho para o dataset maligno | Sim |
| -l | --log-path | Caminho para armazenamento dos logs | Não |
| -g | --graphics-path | Caminho para armazenamento dos gráficos | Não |
| -x | --explanable | Define a criação de um gráfico Summary Plot das features mais importantes | Não |
| -n | --newdata-reduced | Define a geração de um dataset reduzido com as melhores caracteristicas | Não |
python3 IWSHAP.py -s <safe_path> -a <attack_path>
python3 IWSHAP.py -s <safe_path> -a <attack_path> -l <log_path>
python3 IWSHAP.py -s <safe_path> -a <attack_path> -l <log_path> -g <graphics_path>
python3 IWSHAP.py -s <safe_path> -a <attack_path> -x
python3 IWSHAP.py -s <safe_path> -a <attack_path> -x -n
- Ambiente Docker com 32gb* de ram;
- Processador I5 (min 10º geração) ou equivalente.
*Considerando o conjunto de dados com alta dimensionalidade utilizado nos experimentos. *Para conjuntos menores, como o dataset reduzido disponibilizado, 8gb de ram(ambiente docker) é o sufiente para a execução completa da ferramenta.
Para ambiente de teste fez-se o uso de um servidor com:
- Ubuntu versão 22.04
- AMD Ryzen 7 5800x com 8 cores
- 64 GB de memória RAM