Você está na página 1de 60

Data Sciente aplicado à

Segurança da Informação

Aula 02

Ricardo Sant’Ana – PhD


ricksant2003@gmail.com
Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Introdução


Revisão Geral

http://www.bengballard.com/uncategorized/data-science/
Introdução


Revisão Geral
– Análise Estática
• Executável → Funções das Bibliotecas → LabelEncoder →
Número

GetLocalTime 47
ExitThread 32
CloseHandle 33
WriteFile 45
Kernel32.dll CreateFileA 78
ExitProcess 61
CreateProcessA 92
User32.dll GetTickCount
GetModuleFileNameA
100
17
GetSystemDirectoryA 16
Sleep 9

MessageBoxA 12
Introdução


Revisão Geral
– Análise Estática
• Executável → Seção de Código → Disassembly →
Opcodes
– Contagem de 100 Opcodes mais frenquentes → vetor
com dimensão 100

… 75 F9 51 53
56 B8 A0 55 01
00 E8 68 D7 FF
FF 8B 1D C4 60
01 00 33 C0 55
68 6D 5B 01 00
...
Introdução


Revisão Geral
– Análise Estática

… 75 F9 51 53
56 B8 A0 55 01
00 E8 68 D7 FF
FF 8B 1D C4 60
01 00 33 C0 55
68 6D 5B 01 00
...
Introdução


Revisão Geral
– 3 tipos de atributos de análise estática

Vetor de funções

Opcodes

Histograma dos hex


Introdução


Revisão Geral
– 3 tipos de atributos de análise estática

Vetor de funções

Opcodes

Histograma dos hex


Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Projeto de Classificação com Rede Neural


Visão Geral do Projeto

Entrada 3 camadas Saída


escondidas

Pre 0 -Not Win32


processing 1 - Win32

Histograma
256 hex
Projeto de Classificação com Rede Neural


Arquivo 02 - Rede Neural histograma.ipynb
– Primerias duas células
• Realizar os imports necessários
• Carregar o X e y gerados
Projeto de Classificação com Rede Neural


Conjunto de treinamento, validação e teste
– 3251 amostras no total.

Treinamento Validação Teste

2081 amostras 519 amostras 651 amostras


Projeto de Classificação com Rede Neural


Arquivo 02 - Rede Neural.ipynb
– Realizar o train_test_split ESTRATIFICADO
• Vamos gerar o MESMO conjunto de treinamento, validação
e teste a partir de X, conforme apresentado na última aula.
– Como garantir que será o mesmo ?
• Uso do mesmo random_state=42
Projeto de Classificação com Rede Neural


Dados de treinamento: matriz Xh_train e Xh_val

256 “features”

2080 amostras
Projeto de Classificação com Rede Neural


Dados de treinamento: matriz Xh_train e Xh_val

256 “features”

2080 amostras
Projeto de Classificação com Rede Neural


Dados de treinamento: matriz Xh_train e Xh_val

256 “features” 256 “features”

520 amostras
2080 amostras

Xh_train Xh_val
Projeto de Classificação com Rede Neural


Arquivo 02 - Rede Neural.ipynb
– Célula 04 e 05
– Carrega os histogramas armazenados no diretório
histogramahex para gerar a matriz Xh_train e Xh_val
Projeto de Classificação com Rede Neural


Pré-Processamento: Normalização dos Dados

Normalizer:
– Quantidade de hex
– todos os dados entre 0-1

https://www.geeksforgeeks.org/standardscaler-minmaxscaler-and-robustscaler-techniques-ml/
Projeto de Classificação com Rede Neural


Arquivo 02 - Rede Neural.ipynb
– Realiza a normalização de Xh_train. Esta normalização é
aplicada em Xh_train e Xh_val.
• Verificar os valores de máximo e mínimo da matriz antes e
depois da transformação (normalização)
Projeto de Classificação com Rede Neural


Check Point
Projeto de Classificação com Rede Neural


Modelo da Rede Neural

sklearn.neural_network.MLPClassifier
– https://scikit-learn.org/stable/modules/generated/
sklearn.neural_network.MLPClassifier.html

mlp = MLPClassifier(solver="adam",
activation="relu",
hidden_layer_sizes=(10,20,10),
max_iter=8000,verbose=False)
Projeto de Classificação com Rede Neural


Modelo da Rede Neural

sklearn.neural_network.MLPClassifier
– https://scikit-learn.org/stable/modules/generated/
sklearn.neural_network.MLPClassifier.html

mlp = MLPClassifier(solver="adam",
activation="relu",
hidden_layer_sizes=(10,20,10),
max_iter=8000,verbose=False)
Projeto de Classificação com Rede Neural
https://www.kaggle.com/mirichoi0218/ann-slp-making-model-for-multi-classification


Modelo da Rede Neural

Visão Geral de Redes Neurais
Camadas
escondidas

Entrada Saída
Projeto de Classificação com Rede Neural
https://www.kaggle.com/mirichoi0218/ann-slp-making-model-for-multi-classification


Modelo da Rede Neural

Visão Geral de Redes Neurais
Projeto de Classificação com Rede Neural
https://www.kaggle.com/mirichoi0218/ann-slp-making-model-for-multi-classification


Modelo da Rede Neural

Visão Geral de Redes Neurais
Projeto de Classificação com Rede Neural
https://medium.com/@toprak.mhmt/activation-functions-for-deep-learning-13d8b9b20e


Modelo da Rede Neural

Visão Geral de Redes Neurais
Projeto de Classificação com Rede Neural
https://ichi.pro/pt/funcoes-de-ativacao-relu-e-softmax-148521511785096


Modelo da Rede Neural

Visão Geral de Redes Neurais
Projeto de Classificação com Rede Neural


Modelo da Rede Neural

sklearn.neural_network.MLPClassifier
– https://scikit-learn.org/stable/modules/generated/
sklearn.neural_network.MLPClassifier.html

mlp = MLPClassifier(solver="adam",
activation="relu",
hidden_layer_sizes=(10,20,10),
max_iter=8000,verbose=False)
Projeto de Classificação com Rede Neural


Check Point
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

sklearn.neural_network.MLPClassifier
– https://scikit-learn.org/stable/modules/generated/
sklearn.neural_network.MLPClassifier.html
plt.plot(mlp.loss_curve_)
plt.show()

loss

Epoch ou iterações
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

sklearn.neural_network.MLPClassifier
– https://scikit-learn.org/stable/modules/generated/
sklearn.neural_network.MLPClassifier.html

Função de custo (perda):
• “This model optimizes the log-loss function using LBFGS or
stochastic gradient descent.”
• Cross entropy
– Quanto temos apenas duas classes (0 ou 1), cross-entropy
mede o desempenho de classificação do modelo onde as
saídas são valores de probabilidades (entre 0 e 1) .
– Como o modelo calcula probabilidades (internamente), se a saída for
ŷ1=0.3 então ŷ0=0.7 → ou seja, o modelo irá predizer 0 (maior
probabilidade)
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”
 ŷ1 e ŷ0 → por exemplo: ŷ1=0.3 e ŷ0=0.7

Entrada 3 camadas
escondidas Saída

Pre
processing 0 - Not Win32

Histograma
256 hex
ŷ0=0.7
ŷ1=0.3
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

Log loss:


Para o caso de existirem APENAS duas saídas possíveis (0 ou 1)
L = - y1.log(ŷ1) – y0.log(ŷ0)
L = -1. log(ŷ1) – 0.log(ŷ0)
L = - log(ŷ1) → ou seja, -log do valor predito para 1.
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

Portanto, temos que o erro será dado por:
L = - log(ŷ1)


Quando vocês espera de erro logo que se inicia o treinamento da rede
neural ?
Entrada 3 camadas Saída
escondidas

???
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

Portanto, temos que o erro será dado por:
L = - log(ŷ1)


Quando vocês espera de erro logo que se inicia o treinamento da rede
neural ?
Entrada 3 camadas Saída
escondidas

CHUTE
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

Quando vocês espera de erro na primeira rodada ?
Simples, se os neurônios ainda não aprenderam NADA, então ŷ1=0.5
Portanto, L ≈ -log (0.5) ≈ 0.69
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”
Linicial ≈ -log (0.5) ≈ 0.69

Observe os dois exemplos a seguir. Pode ?
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”
Linicial ≈ -log (0.5) ≈ 0.69
Observe os dois exemplos a seguir. PODE!!!!!!!!!!
O que não pode: 4, 10, 1e-10, etc.
Projeto de Classificação com Rede Neural


Loss Curve → Curva de “Erro”

Quando vocês espera de erro na primeira rodada ?
Simples, se os neurônios ainda não aprenderam NADA, então ŷ1=0.5
Portanto, L ≈ -log (0.5) ≈ 0.69


Ainda, se pegarmos o primeiro valor do erro (mlp.loss_curve[0] )
podemos calcular a saída com math.exp(-mlp.loss_curve[0]) e o valor
deve ser aproximadamente 0,5:

import math
print(math.exp(-mlp.loss_curve_[0]))
Projeto de Classificação com Rede Neural


Matriz de Confusão
– É uma forma de observar o desempenho do classificador
– 0 → negativo, 1 → positivo

https://medium.com/@dtuk81/confusion-matrix-visualization-fc31e3f30fea
Projeto de Classificação com Rede Neural


Matriz de Confusão: dados de treinamento
– cf_matrix=confusion_matrix(y_train,y_pred_train)

y_pred_train

y_train
Projeto de Classificação com Rede Neural


Salvar e Carregar o Modelo
– Biblioteca pickle
• Dump
• Load

https://pythontic.com/modules/pickle/introduction
Projeto de Classificação com Rede Neural


Modificar Hiperparâmetros e ver resultado
– Processo tentativa/erro ?
• Mesmo ?
Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Busca pelos melhores hiperparâmetros


GridSearch
– Realiza execuções do modelo com diversos
hiperparâmetros → salva o melhor.

– Supondo que queremos avaliar as seguintes opções:


• Otimizador: adam e sgd
• hidden_layer_sizes: (40,80,40), (50,100,50),
(128,256,128),(10,20,10) e (16,32,16)
• função de ativação: logistic, tanh e relu

Qual o melhor subconjunto ?
Busca pelos melhores hiperparâmetros


GridSearch
– Visão Geral
• Criar um dicionário com o PIPELINE
• Criar um dicionário com o GRID
• Executar o gridsearch
– Melhor modelo pode ser recuperado com:
– gs.best_estimator_[“estimator”]
Busca pelos melhores hiperparâmetros


GridSearch
– Alternativas

https://community.alteryx.com/t5/Data-Science/Hyperparameter-Tuning-Black-Magic/ba-p/449289
Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Alternativas


Alternativa 01 – Novos Atributos
– Análise Estática
• 256 APIs mais frequentes

Vetor de funções

Opcodes

Histograma dos hex


Alternativas


Alternativa 01 – Novos Atributos
– Análise Estática
• 256 APIs mais frequentes
– Cada artefato → vetor de 256:
» 0 se tem API,
» 1 se não tem

Top 256 APIs


1 ExitProcess
0 GetModuleHandleA
0 GetProcAddress
0 MessageBoxA
1 CloseHandle
. .
Extrai API . .
. .
. .
. .
1 FindWindowA
Alternativas


Alternativa 01

Arquivo 02 – Top 256 APIs All → identifica quais são as
256 APIs mais frequentes

Arquivo 02 – Rede Neural APIs → cria rede neural para
estes atributos
– Não necessita normalizar
Alternativas


Alternativa 02a – Juntando atributos

Arquivo 02 - Rede Neural Histograma APIs.ipynb
Entrada 3 camadas
(512) Saída
Histograma escondidas
256 hex

Pre
processing

0 -Not Win32

1 - Win32
Top 256 APIs
ExitProcess 1
GetModuleHandleA 0
GetProcAddress 0
MessageBoxA 0
CloseHandle 1
. .
. .
. .
. .
. .
FindWindowA 1
Alternativas


Alternativa 02b – Um classificador por tipo de atributo

Arquivo 02 - Rede Neural Histograma API Esemble.ipynb

Histograma
256 hex

Pre
processing

0 -Not Win32

1 - Win32
Top 256 APIs
ExitProcess 1
GetModuleHandleA 0
GetProcAddress 0
MessageBoxA 0
CloseHandle 1
. .
. .
. .
. .
. .
FindWindowA 1
Alternativas


A parte interessante de você conhecer o algoritmo, suas
características e hiperparâmetros é que você consegue
inferir sobre possíveis problemas e comportamentos do
mesmo ao londo do aprendizado para seu conjunto de
dados.

E como seria se quiséssemos modificar e utilizar, ao invés
do Multi Layer Perceptron, o Support Vector Machine (sem
entrar em detalhes do mesmo).
Alternativas


Dica

https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
Agenda

1 Introdução

2 Projeto de Classificação com Rede Neural

3 Busca pelos melhores hiperparâmetros

4 Alternativas

5 Conclusão
Conclusão
Trabalho

Escolher um dos arquivos de implementação de rede


neural e desenvolver o código para aplicar o modelo
ao conjunto de testes. Obter o resultado
Enviar:
– O nome do arquivo utilizado
– O trecho do código que aplica o modelo ao
conjunto de testes
– Compara o resultado obtido no conjunto de
testes com o conjunto de validação.
Conclusão
Obrigado!!!

Você também pode gostar