O conjunto de dados utilizado foi o Phishing Dataset for Machine Learning disponibilizado no Kaggle pelo seu proprietário Shashwat Tiwari e possui licença Attribution 4.0 International (CC BY 4.0). O conjunto de dados contém aproximadamente 1,34 MB, disposto em 1 planilha do tipo csv nomeada "Phishing_Legitimate_full".
Conforme sua descrição no Kaggle, este conjunto de dados contém 48 features (atributos) extraídos de 5.000 webpages de phishing e de 5.000 webpages legítimas, que foram baixadas de janeiro a maio de 2015 e de maio a junho de 2017.
Foi verificado o seguinte:
- Todas as features do dataset são do tipo numérico, não houve necessidade de utilizar técnicas como get dummies ou one-hot-encoding.
- Esse dataset não possui valores nulos ou erros, não foi necessária a etapa de limpeza dos dados.
- A classe target (variável alvo) é definida pela feature CLASS_LABEL, que assume valor 1 em caso de phishing e 0 caso contrário.
- Como o objetivo é identificar se é phishing ou não, a métrica de avaliação se dará por classificação.
- O dataset está bastante balanceado: 50% das observações do tipo phishing e 50% do tipo legítimo.
Foi escolhido o método SelectKBest que seleciona as melhores "K" features com base em uma métrica específica, que nesse caso foi a função f_classif que é adequada quando os dados são numéricos e a variável alvo é categórica. Foi definido que seria utilizado um total de 30 features. Não foi utilizada a matriz de correlação pois em casos onde há um relacionamento não-linear, a matriz geralmente não é uma boa medida.
Foi definido 80% para treinamento e 20% para teste.
Para esse problema de classificação foi escolhido o algoritmo Random Forest. Não foi necessário aplicar um método de padronização (normalização/escalonamento) aos atributos. A maioria dos algoritmos baseados em árvores são invariantes à escala das features, o que significa que a mudança na escala das features não afeta seu desempenho.
Foram utilizadas as seguintes métricas de avaliação de desempenho1 :
- Precision: Número de exemplos classificados como pertencentes a uma classe, que realmente são daquela classe (positivos verdadeiros), dividido pela soma entre este número, e o número de exemplos classificados nesta classe, mas que pertencem a outras (falsos positivos).
- Recall: Número de exemplos classificados como pertencentes a uma classe, que realmente são daquela classe, dividido pela quantidade total de exemplos que pertencem a esta classe, mesmo que sejam classificados em outra. No caso binário, positivos verdadeiros divididos por total de positivos.
- F1-Score: é uma média harmônica entre precisão e recall.
- Accuracy: É o número de acertos (positivos) divido pelo número total de exemplos.
- Support: O support não é uma métrica de desempenho, mas sim uma contagem das instâncias de cada classe no conjunto de dados.
Foi gerada uma learning curve (curva de aprendizado) para detectar overfitting ou underfitting e avaliar a necessidade de mais dados.
A partir desses valores pode-se chegar às seguintes conclusões:
- Precision: Um valor de 0.98 indica que o modelo raramente faz falsos positivos, ou seja, quando ele prevê uma classe como positiva, é altamente provável que seja realmente positiva.
- Recall: Um valor de 0.98 indica que o modelo captura quase todos os exemplos positivos e tem um desempenho excelente em identificar a classe positiva.
- F1-Score: Um valor de 0.98 indica um ótimo equilíbrio entre precisão e revocação.
- Accuracy: Um valor de 0.98 indica que o modelo é altamente preciso em sua classificação global.
Com esses resultados satisfatórios foi decidido que não será necessário realizar o ajuste dos hiperparâmetros nem de testar algum outro algoritmo de machine learning.
A partir do gráfico pode-se observar que o training score permanece alto independentemente do tamanho do conjunto de treinamento. Por outro lado, o cross-validation score aumenta com o tamanho do conjunto de dados de treinamento. Na verdade, aumenta até um ponto em que atinge um patamar. Observar tal patamar é uma indicação de que pode não ser útil adquirir novos dados para treinar o modelo, uma vez que o desempenho do modelo não aumentará mais. Conclui-se também que o modelo não apresenta under/overfitting.
Footnotes
-
Referência: FILHO, Mario. As Métricas Mais Populares para Avaliar Modelos de Machine Learning. 2018. Disponível em: https://mariofilho.com/as-metricas-mais-populares-para-avaliar-modelos-de-machine-learning/ ↩