Escolar Documentos
Profissional Documentos
Cultura Documentos
Segurança da Informação
Aula 02
1 Introdução
4 Alternativas
5 Conclusão
Agenda
1 Introdução
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
Revisão Geral
– 3 tipos de atributos de análise estática
Vetor de funções
Opcodes
1 Introdução
4 Alternativas
5 Conclusão
Projeto de Classificação com Rede Neural
Visão Geral do Projeto
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.
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
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
4 Alternativas
5 Conclusão
Busca pelos melhores hiperparâmetros
GridSearch
– Realiza execuções do modelo com diversos
hiperparâmetros → salva o melhor.
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
4 Alternativas
5 Conclusão
Alternativas
Alternativa 01 – Novos Atributos
– Análise Estática
• 256 APIs mais frequentes
Vetor de funções
Opcodes
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
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
4 Alternativas
5 Conclusão
Conclusão
Trabalho