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.
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.
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:
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.
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.
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.
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.
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.
| 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 |
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:
Seleção de Variáveis: Separação das variáveis explicativas (features) e da variável alvo (Spam), removendo a coluna que representa a classe para o cálculo das correlações.
Normalização: Aplicação de técnicas de padronização (scale) para que todas as variáveis estejam na mesma escala. Essa etapa é crucial, pois evita que atributos com maiores amplitudes influenciem de forma desproporcional o modelo.
Divisão em Treino e Teste: O conjunto de dados
foi particionado em 80% para treinamento e 20% para teste, utilizando
uma semente fixa (set.seed(123)) para garantir a
reprodutibilidade. Essa divisão possibilita a avaliação da performance
do modelo em dados não vistos.
2. Treinamento da Rede Neural
A construção do modelo preditivo foi baseada em uma rede neural artificial, com os seguintes pontos teóricos:
Arquitetura da Rede: O modelo utiliza uma camada
oculta com um número ajustável de neurônios (definido pelo parâmetro
size). Inicialmente, foi configurado com 16 neurônios,
refletindo uma escolha intermediária para capturar padrões complexos nos
dados.
Parâmetros de Treinamento: O treinamento é controlado por:
maxit: o número máximo de iterações para o algoritmo
de otimização.
decay: uma taxa de regularização que penaliza pesos
excessivamente grandes, ajudando a prevenir o overfitting.
Conversão de Probabilidades: Após o treinamento, as probabilidades geradas pelo modelo são convertidas em predições binárias por meio de um threshold, o que permite controlar a sensibilidade na classificação e reduzir a incidência de falsos positivos.
Avaliação do Modelo: A performance do modelo é avaliada por meio da matriz de confusão e de métricas como Precisão, Recall e F1-score, que fornecem uma visão abrangente da capacidade do modelo em diferenciar entre e-mails spam e não spam.
3. Otimização de Hiperparâmetros com Grid Search
Para aperfeiçoar o modelo, foi utilizada uma abordagem Grid Search associada à validação cruzada:
Definição do Grid: Foram definidos diferentes
valores para os hiperparâmetros size (número de neurônios
na camada oculta) e decay (regularização), criando um
conjunto de combinações a serem testadas.
Validação Cruzada: A validação cruzada com 5 folds foi empregada para avaliar a performance de cada configuração de hiperparâmetros de forma robusta, garantindo que os resultados não fossem dependentes de uma única divisão dos dados.
Critério de Seleção: O melhor modelo foi selecionado com base na especificidade, uma métrica que enfatiza a correta identificação dos e-mails não spam, contribuindo para a redução dos falsos positivos.
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 |
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.
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} \]
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.
A otimização dos hiperparâmetros da rede neural foi realizada utilizando a técnica de Grid Search com validação cruzada, a fim de encontrar a melhor combinação de parâmetros para maximizar a especificidade do modelo.
Foram definidos três hiperparâmetros principais para a busca:
Número de neurônios na camada oculta
(size): Testados valores de 3, 8, 12 e 16
neurônios. Esse parâmetro influencia a capacidade de aprendizado da
rede, afetando diretamente sua expressividade e potencial para capturar
padrões complexos.
Parâmetro de regularização (decay):
Testados valores de 0.001, 0.01, 0.1 e 0.5. Esse hiperparâmetro controla
a penalização dos pesos da rede para evitar overfitting.
Número máximo de iterações (maxit):
Foram avaliados valores de 50, 150, 300 e 1000, determinando a
quantidade de épocas para o treinamento da rede neural.
A busca pelos melhores hiperparâmetros foi realizada através da validação cruzada com 5 folds, garantindo que o modelo fosse avaliado de forma robusta e minimizando a dependência de um único conjunto de treino. A métrica utilizada para selecionar o melhor modelo foi a especificidade (Specificity), pois o objetivo central era reduzir o número de falsos positivos.
Melhor Modelo selecionado:
Número de neurônios na camada oculta
(size): 3
Parâmetro de regularização (decay):
0.01
Número máximo de iterações (maxit):
300
As medidas obtidas por esse modelo foram:
ROC: 0.999
Sensibilidade: 0.994
Especificidade: 0.998
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.