Após os resultados obtidos no teste anterior colocou-se em cima da mesa a possibilidade de os classificadores estarem a efetuar overfitting, isto é a decorar as ligações. Esta situação é descrita em data mining como sobreaprender e é comum acontecer quando os mesmos dados se repetem, e o classificador memoriza dados concretos sem generalizar.
Assim, por forma a garantir que tal não seria possível acontecer nesta investigação, efetuou-se uma nova captura ( �� ) com mais de 100 dias de intervalo para a captura anterior ( �� ).
Começou-se então por se recolher uma amostra de 10000 linhas, desta vez da
�� , para teste, e utilizar o mesmo ficheiro de treino que no teste anterior.
Inicialmente os dados obtidos não foram nada favoráveis, tendo-se obtido apenas 6.66% de instâncias corretamente classificadas para o método do naive de Bayes, 4.53% para o método dos k-vizinhos ( = ) e 5.56% para a árvore de decisão C4.5.
Após uma detalhada observação das matrizes de correlação observou-se que o principal problema se encontrava na classe NOACTION, que era aquela que tinha maior número de instâncias “mal classificadas”.
Assim sendo, ponderou-se inicialmente a possibilidade destas ligações estarem a ser rejeitadas pela firewall sem que essa informação estivesse a ser registada. Passaram- se então todas as ações NOACTION dos ficheiros de treino e teste anteriores para DROP, e testaram-se novamente os dados. Obteve-se 62.39% de instâncias corretamente
classificadas para o método do naive de Bayes, 62.82% para o método dos k-vizinhos e 93.35% para a árvore de decisão C4.5. A Tabela 33 mostra a matriz de dispersão e a taxa de acerto obtidas para o último método.
Accept Drop Reject Decrypt Previsto Real
Taxa de acerto por classe (� � ) 27 286 0 0 Accept 8.6% 379 9308 0 0 Drop 96.1% 0 0 0 0 Reject - 0 0 0 0 Decrypt -
Tabela 33 – Teste com classe NOACTION substituída por Drop, matriz de dispersão e taxa de acerto por classe para o método das árvores de decisão (C4.5)
Conforme se pode observar, apesar dos aparentes bons resultados obtidos, a taxa de acerto para a classe Accept continuava muito baixa, ou seja existia algo que ainda não fazia sentido nestes dados.
Após alguma ponderação para se tentar compreender o porquê de existirem todas estas ligações NOACTION, e tendo-se em conta que o resultado da análise da firewall consiste apenas num resumo de ligações e que o software elaborado em pyton procura apenas num intervalo de 1 segundo, concluiu-se que estas ligações são ligações já anteriormente classificadas, motivo pelo qual não aparecem classificadas como DROP ou ACCEPT neste intervalo. Assim, para elaborar um classificador, não faria de todo sentido continuar a considerar estas ligações, motivo pelo qual estas foram eliminadas.
Após se eliminarem as linhas que continham a classe NOACTION nas BD, obtiveram-se então novos ficheiros, o de treino com as primeiras 30 mil linhas da
��� e o de teste com as últimas 10 mil da ��� . A Figura 52 ilustra a
distribuição dos dados por campo, no ficheiro de teste, onde se deve considerar o eixo das abcissas como sendo o valor de cada campo e o das ordenadas o número de vezes que esse valor ocorre. No último campo “Action” pode-se observar que 5114 estavam classificados como Accept (a azul), 4886 como Drop (a vermelho), 0 como Reject e 0 como Decrypt.
Figura 52 - Distribuição dos campos nas últimas 10000 instâncias da ���
Naive de Bayes
Começou-se novamente por testar os dados com o classificador naive de Bayes, obtendo-se os seguintes resultados:
Instâncias bem
classificadas 8165 81.65%
Instâncias mal classificadas 1835 18.35%
Tabela 34 – Teste 4, instâncias bem e mal classificadas para o método de naive de Bayes
Accept Drop Reject Decrypt Previsto Real
Taxa de acerto por classe (� � ) 3969 1145 0 0 Accept 77.6% 690 4196 0 0 Drop 85.9% 0 0 0 0 Reject - 0 0 0 0 Decrypt -
Figura 53 – Teste 3, gráfico com dispersão dos erros para o método de naive de Bayes
Figura 54 – Teste 4, gráfico com registo numérico das instâncias bem (verdadeiros positivos) e mal classificadas (falsos negativos) por classe real, para o método de naive de Bayes
K-vizinhos (IBK)
De seguida utilizou-se o classificador IBK, começando-se por testar qual o melhor , obtendo-se as seguintes taxas de acerto em função de :
0,00% 10,00% 20,00% 30,00% 40,00% 50,00% 60,00% 70,00% 80,00% 90,00% 100,00%
Instâncias bem classificadas Instâncias mal classificadas Accept Drop Reject Decrypt NOACTION
= 1 11 111 1111 11111 29999
(%) 83.19 83.1 83.97 80.67 55.65 48.86
Tabela 36 - Teste 4, taxa de acerto em função de k para o método dos k-vizinhos
Conforme se pode observar, contrariamente aos resultados anteriormente alcançados, e apesar de ser por uma pequena margem, o que obteve melhores desempenhos foi o = .
Assim, selecionando-se = obtiveram-se os seguintes resultados: Instâncias bem
classificadas 8397 83.97%
Instâncias mal classificadas 1603 16.03%
Tabela 37 – Teste 4, instâncias bem e mal classificadas para o método dos k-vizinhos
Accept Drop Reject Decrypt Previsto Real
Taxa de acerto por classe (� � ) 4228 886 0 0 Accept 82.7% 717 4169 0 0 Drop 85.3% 0 0 0 0 Reject - 0 0 0 0 Decrypt -
Figura 55 – Teste 4, gráfico com dispersão dos erros para o método dos k-vizinhos
Figura 56 – Teste 4, gráfico com registo numérico das instâncias bem (verdadeiros positivos) e mal classificadas (falsos negativos) por classe real, para o método dos k-vizinhos
Árvore de decisão C4.5 (J48)
Por fim testou-se com as árvores de decisão C4.5. Obtiveram-se os seguintes resultados: 0,00% 10,00% 20,00% 30,00% 40,00% 50,00% 60,00% 70,00% 80,00% 90,00% 100,00%
Instâncias bem classificadas Instâncias mal classificadas Accept Drop Reject Decrypt NOACTION
Instâncias bem
classificadas 8112 81.12%
Instâncias mal classificadas 1888 18.88%
Tabela 39 – Teste 4, instâncias bem e mal classificadas para o método das árvores de decisão (C4.5)
Accept Drop Reject Decrypt Previsto Real
Taxa de acerto por classe (� � ) 3933 1142 39 0 Accept 76.9% 707 4179 0 0 Drop 85.5% 0 0 0 0 Reject - 0 0 0 0 Decrypt -
Tabela 40 – Teste 4, matriz de dispersão e taxa de acerto por classe para o método das árvores de decisão (C4.5)
Figura 58 – Teste 4, gráfico com registo numérico das instâncias bem (verdadeiros positivos) e mal classificadas (falsos negativos) por classe real, para o método das árvores de decisão (C4.5)
Tendo em conta que o conjunto de treino já não apresenta a classe NOACTION, o número de nós reduziu para 155. A Figura 71 ilustra a árvore de decisão obtida.
Figura 59 – Teste 4, árvore de decisão obtida
Conforme se pode observar, mais uma vez, com a árvore ideal não é fácil ter uma perceção de quais são os critérios que estão a ser utilizados, pois a árvore tem muitos nós. Assim, por forma a ser possível visualizar os critérios, obrigou-se novamente a que cada
0,00% 10,00% 20,00% 30,00% 40,00% 50,00% 60,00% 70,00% 80,00% 90,00% 100,00%
Instâncias bem classificadas Instâncias mal classificadas Accept Drop Reject Decrypt NOACTION
nó tenha pelo menos 1000 objetos, o que diminuiu o número de nós para apenas 7 e ligeiramente a taxa de acerto, para 83.8%. Obteve-se a árvore seguinte:
Figura 60 – Teste 4, árvore de decisão com apenas 7 nós
Conclusões
Inicialmente surgiu um problema com a classe NOACTION, que foi posteriormente resolvido;
Os resultados obtidos foram bastante surpreendentes, face à separação temporal que existiu entre ambos os ficheiros;
O classificador que obteve melhores resultados foi o K-vizinhos (IBK), com 83.97% de instâncias bem classificadas.