Introdução

O aumento do uso de e-mails como meio de comunicação tem levado a um crescimento significativo de mensagens indesejadas, conhecidas como spam. Esses e-mails podem conter propagandas, tentativas de fraude ou mesmo ameaças à segurança digital dos usuários. A classificação automática de e-mails como spam ou não spam é essencial para melhorar a experiência do usuário e aumentar a segurança das comunicações eletrônicas.

Definição do problema

Este estudo visa desenvolver um modelo de aprendizado de máquina baseado em redes neurais artificiais para classificar e-mails como spam ou não spam. O foco está na minimização de falsos positivos, garantindo que e-mails importantes não sejam incorretamente classificados como spam.

Descrição do conjunto de dados

A base de dados utilizada é a “Spambase”, disponibilizada pela UCI Machine Learning Repository. O conjunto de dados contém 4601 emails, com suas informações detalhadas, incluindo a frequência de palavras-chave, caracteres especiais e atributos estatísticos.

Os atributos do conjunto de dados podem ser categorizados em três grupos principais:

  1. Frequência de palavras-chave

    • 48 atributos numéricos contínuos no intervalo [0,100], representando a porcentagem de palavras específicas encontradas no e-mail.

    • Cada atributo segue a estrutura word_freq_WORD, onde WORD é uma palavra específica. O valor indica a porcentagem de vezes que essa palavra aparece em relação ao total de palavras do e-mail.

  2. Frequência de caracteres especiais

    • 6 atributos numéricos contínuos no intervalo [0,100], representando a porcentagem de ocorrências de caracteres especiais no e-mail.

    • Cada atributo segue a estrutura char_freq_CHAR, onde CHAR é um caractere específico. O valor indica a porcentagem de ocorrências desse caractere em relação ao total de caracteres do e-mail.

  3. Medições de sequências de letras maiúsculas

    • capital_run_length_average: valor contínuo que representa o comprimento médio das sequências ininterruptas de letras maiúsculas.

    • capital_run_length_longest: valor inteiro que indica o comprimento da maior sequência ininterrupta de letras maiúsculas.

    • capital_run_length_total: valor inteiro que corresponde à soma do comprimento de todas as sequências ininterruptas de letras maiúsculas em um e-mail.

  4. Variável Alvo

    • Spam: atributo binário (0 ou 1) indicando se o e-mail foi classificado como spam (1) ou não spam (0). Esta é a variável que o modelo busca prever.

A estrutura dos dados foi projetada para capturar padrões característicos de e-mails spam, permitindo que modelos de aprendizado de máquina utilizem essas informações para classificação com alta precisão.

Análise descritiva

A distribuição da variável alvo no conjunto de dados mostra que aproximadamente 60% dos e-mails são classificados como não spam (2788 ocorrências) e 40% como spam (1813 ocorrências). Isso indica que há uma proporção considerável de mensagens indesejadas na base analisada.

A matriz de correlação entre os atributos revela a existência de variáveis altamente correlacionadas. Em particular, word_freq_415 e word_freq_857 possuem uma correlação de 0.996, indicando uma forte relação entre essas duas variáveis. Outras combinações também apresentam correlações elevadas, como word_freq_direct com word_freq_857 (0.848) e word_freq_telnet com word_freq_415 (0.735). Essa forte associação entre certos atributos pode sugerir que algumas palavras ou padrões específicos ocorrem frequentemente juntos nos e-mails analisados.

Correlação entre variáveis (acima de 0.7 ou abaixo de -0.7)
Variável 1 Variável 2 Correlação
X.word_freq_415. X.word_freq_857. 0.996
X.word_freq_857. X.word_freq_direct. 0.848
X.word_freq_415. X.word_freq_direct. 0.845
X.word_freq_857. X.word_freq_telnet. 0.738
X.word_freq_415. X.word_freq_telnet. 0.735
X.word_freq_857. X.word_freq_technology. 0.730
X.word_freq_415. X.word_freq_technology. 0.727

Metodologia

Nesta seção, detalhamos os métodos e técnicas aplicados para construir o modelo RNA de detecção de e-mails spam, abordando desde o pré-processamento dos dados até a otimização do modelo. Cada etapa é fundamentada em conceitos teóricos para a construção de modelos de aprendizado de máquina robustos.

1. Pré-processamento dos Dados

Para garantir que o modelo receba dados compatíveis e bem estruturados, foram realizadas as seguintes operações:

2. Treinamento da Rede Neural

A construção do modelo preditivo foi baseada em uma rede neural artificial, com os seguintes pontos teóricos:

3. Otimização de Hiperparâmetros com Grid Search

Para aperfeiçoar o modelo, foi utilizada uma abordagem Grid Search associada à validação cruzada:

Resultados

Pré-Processamento

O pré-processamento dos dados é uma etapa fundamental na construção de um modelo de aprendizado de máquina, garantindo que os dados estejam devidamente preparados para o treinamento e a avaliação do modelo.

Para evitar que atributos com diferentes escalas de valores impactem desproporcionalmente o modelo, todas as variáveis explicativas foram normalizadas utilizando a técnica de padronização (z-score). Essa transformação foi realizada da seguinte forma:

\[ X_{normalizado} = \frac{X - \mu}{\sigma} \]

Onde:

  • \(X\) representa o valor original da variável.

  • \(\mu\) é a média da variável.

  • \(\sigma\) é o desvio padrão da variável.

A normalização permite que todas as variáveis tenham média zero e desvio padrão unitário, garantindo que o modelo não seja influenciado por escalas diferentes entre os atributos.

Após a normalização, os dados foram divididos em dois subconjuntos:

  • Conjunto de Treino (80%): Utilizado para ajustar os parâmetros do modelo.

  • Conjunto de Teste (20%): Utilizado para avaliar a capacidade de generalização do modelo.

A separação foi realizada de maneira estratificada, garantindo que a proporção de e-mails classificados como spam e não spam se mantivesse semelhante em ambos os conjuntos.

Distribuição da variável alvo no Conjunto de Treino
Proporção de e-mails Spam e Não Spam
Classe do E-mail Proporção
0 0.609
1 0.391
Distribuição da variável alvo no Conjunto de Teste
Proporção de e-mails Spam e Não Spam
Classe do E-mail Proporção
0 0.593
1 0.407

Treinamento da Rede

O treinamento da rede neural foi realizado utilizando o pacote nnet no R, que permite a construção de redes neurais artificiais de camada única.

A rede neural foi configurada com os seguintes hiperparâmetros (a partir de testes empíricos):

  • Número de neurônios na camada oculta: 16 neurônios

  • Número máximo de iterações (maxit): 300

  • Parâmetro de regularização (decay): 0.1

  • Saída não linear (linout = FALSE): Como a variável alvo é binária, a ativação sigmoide foi utilizada na camada de saída para produzir probabilidades entre 0 e 1.

A função de custo otimizada durante o treinamento foi a entropia cruzada, apropriada para classificação binária.

Previsão e Ajuste do Threshold

Após o treinamento do modelo, as predições foram realizadas no conjunto de teste, gerando probabilidades que indicam a chance de um e-mail ser classificado como spam. Para converter essas probabilidades em classes binárias, é necessário definir um threshold que determine o ponto de corte entre as duas classes.

Em vez de usar um valor fixo (como 0.9), utilizamos o pacote cutpointr para encontrar automaticamente o melhor threshold. O cutpointr avalia diversos pontos de corte e seleciona aquele que maximiza uma métrica de desempenho — neste caso, o índice de Youden, que combina sensibilidade e especificidade. Assim, o threshold ideal é aquele que equilibra a taxa de verdadeiros positivos e verdadeiros negativos, otimizando a classificação do modelo.

\[ \hat{y} = \begin{cases} 1, & \text{se } P(\text{Spam}) > \text{Ponto Ótimo} \\ 0, & \text{caso contrário} \end{cases} \]

Avaliação do Modelo

A avaliação do modelo foi realizada através da matriz de confusão e das métricas derivadas, apresentadas a seguir:

Matriz de Confusão
Resultado da Classificação do Modelo de Rede Neural
Observado 0 - Predito 1 - Predito
Não Spam (0) 542 2
Spam (1) 4 372

Interpretação:

  • 542 e-mails foram corretamente classificados como Não Spam (Verdadeiro Negativo - TN).

  • 372 e-mails foram corretamente classificados como Spam (Verdadeiro Positivo - TP).

  • 2 e-mails foram classificados como Spam erroneamente (Falso Positivo - FP).

  • 4 e-mail foi classificado como Não Spam erroneamente (Falso Negativo - FN).

Métricas de Avaliação da Rede Neural
Foco em minimizar falsos positivos
Métrica Valor Obtido
Precisão 0.9894
Recall 0.9947
F1-Score 0.9920

Entre as principais métricas calculadas, destacam-se:

  • Acurácia: 99,35% – Indicando que a grande maioria das predições foi correta.

  • Sensibilidade (Recall): 99,47% – O que demonstra que o modelo identifica quase todos os e-mails spam corretamente.

  • Especificidade: 99,27% – Indicando uma excelente capacidade em reconhecer e-mails não spam.

  • Kappa: 0,9865 – Um valor que evidencia uma concordância quase perfeita entre as predições e os rótulos reais.

Esses resultados indicam que o modelo apresenta um desempenho excepcional tanto na detecção de e-mails spam quanto na identificação de e-mails legítimos, refletindo uma robustez na classificação que atende aos objetivos propostos para o estudo.

Conclusão e discussões

O presente estudo teve como objetivo a construção de um modelo de rede neural para a classificação de e-mails como spam ou não spam, utilizando um conjunto de dados baseado na frequência de palavras-chave e características do texto.

Os resultados indicaram que o modelo apresentou um alto desempenho desde a primeira versão, com uma acurácia já elevada antes mesmo da otimização dos hiperparâmetros. A aplicação do Grid Search contribuiu para um ajuste fino da rede neural, simplificando o modelo (apenas 3 neurônios na camada oculta) e melhorando o desempenho.

Apesar do sucesso do modelo, algumas limitações devem ser consideradas. O conjunto de dados utilizado é baseado em palavras-chave em inglês, o que significa que a abordagem pode não ser diretamente aplicável a e-mails escritos em outros idiomas, como o português. Como os atributos de entrada incluem a contagem de palavras específicas comuns em spams em inglês, sua relevância pode ser reduzida em um contexto linguístico diferente.

Outro ponto crítico é que o modelo depende fortemente da presença de palavras-chave específicas para identificar spam. Isso abre uma vulnerabilidade potencial, pois remetentes mal-intencionados podem modificar suas mensagens para evitar o uso dessas palavras, utilizando sinônimos ou caracteres especiais para enganar o filtro. Esse é um desafio comum em sistemas de detecção de spam, exigindo abordagens mais robustas, como o uso de modelos de processamento de linguagem natural (PLN) mais avançados, que considerem o contexto geral da mensagem em vez de apenas palavras individuais.

Em conclusão, o modelo desenvolvido demonstrou um excelente desempenho desde o início, com melhorias incrementais proporcionadas pelo ajuste de hiperparâmetros. No entanto, o problema do spam é dinâmico e evolutivo, exigindo soluções cada vez mais sofisticadas e adaptáveis para lidar com novas estratégias de evasão utilizadas por remetentes de e-mails indesejados.