Buscar

TCC - wallace (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

AVALIAÇÃO DO DESEMPENHO DO CLASSIFICADOR NAIVE BAYES NOS 
MICRODADOS DO ENEM 2018 
 
Wallace Fidelis Morais 
Discente do Curso de Engenharia da Computação 
DCEL/CEUNES?UFES 
wallacefid@gmail.com 
Silvia das Dores Rissino 
Professora do Departamento de Computação e Eletrônica 
DCEL/CEUNES/UFES 
silvia.rissino@ufes.br 
 
 
 
 
Resumo - Esse trabalho tem como objetivo avaliar o desempenho de um classificador Naive Bayes 
nos microdados do ENEM de 2018. É criado um protótipo de ferramenta na Linguagem Python para 
realizar o pré-processamento. Na etapa de mineração de dados utiliza-se o algoritmo classificador 
Naive Baye para relacionar os dados socioeconômicos dos participantes do exame com as suas 
respectivas notas. Aplicam-se técnicas de cross-validation, hold-out e random seed para separação dos 
dados de treino e teste. Usa-se o coeficiente Kappa para avaliar a eficiência da classificação, os quais 
são exibidos em formato de tabelas e indicam que na maioria dos casos o grau de concordância obtido 
está entre considerável e quase perfeito, demonstrando assim que o classificador Naive Bayes é um 
bom classificador de dados para este tipo de análise. 
Keywords—Naive Bayes, desempenho, Microdados enem, Kappa, Cross-validation, Hold-out, 
Python. 
 
I. INTRODUÇÃO 
O Exame Nacional do Ensino Médio é uma prova realizada pelo INEP (Instituto Nacional de Pesquisas 
Educacionais Anísio Teixeira). A prova tem como objetivo avaliar a qualidade do ensino médio no país, 
além de ser utilizada como acesso ao ensino superior em universidades brasileiras e até no exterior [1]. 
Todos os anos o INEP divulga em seu sítio eletrônico os microdados da prova do ano anterior. Esses 
microdados possuem informações de número de inscrição, informações sobre a escola, situação de 
conclusão do ensino médio, dados socieconômicos e várias outras informações dos participantes da prova. 
É nesse cenário, de grandes quantidades de dados disponibilizados pelo governo, que a mineração de 
dados apresenta-se como solução para análises de conjuntos de dados maiores. Esse é um processo de 
exploração e análise de grandes quantidades de dados visando descobrir regras e padrões presentes neles. 
A Gartner Group, empresa de pesquisa que trabalha na área da tecnologia da informação, define a 
mineração de dados como sendo: 
[Mineração de dados é] o processo de descobrir correlações, padrões e tendências 
significativas através da peneiração de grandes quantidades de dados armazenados em 
repositórios. A mineração de dados emprega tecnologias de reconhecimento de padrões, 
como técnicas estatísticas e matemáticas [2]. 
 
Algoritmos de mineração de dados conhecidos como classificadores consistem em predizer uma 
variável categórica, através de uma função que mapeie um conjunto de registros de dados em um conjunto 
 
de variáveis, denominadas classes. A função encontrada pode ser aplicada em outros registros de dados 
com o objetivo de prever em qual classe esse novo registro se enquadra [3]. Entre os algoritmos 
classificadores podemos citar o Naive Bayes. 
 A ampla divulgação dos dados públicos juntamente com um trabalho de mineração de dados pode 
revelar padrões e regras que auxiliem na gestão pública. É nessa interseção que esse trabalho visa atuar: 
avaliar o desempenho de um classificador Naive Bayes nos microdados do ENEM de 2018 
disponibilizados pelo INEP. 
 
II. DESCOBERTA DE CONHECIMENTO EM BASE DE DADOS (KDD) 
 A diferença entre a mineração de dados e a descoberta de conhecimento em base de dados 
(também chamada de KDD) é muitas vezes nebulosa. Alguns autores inserem a mineração de dados como 
sendo uma etapa do KDD enquanto outros consideram que os termos são sinônimos. Com o objetivo de 
facilitar o entendimento do tema e evitar confusão entre os termos, para esse trabalho vamos considerar a 
definição de mineração de dados de Shmueli, Patel e Bruce [4] que não faz uma clara distinção entre os 
termos, como é exibido na Figura 1, que apresenta o esquema do processo de mineração de dados, no qual 
o mesmo é dividido em 8 etapas apresentadas a seguir: 
A. Definir o objetivo 
Nessa etapa são realizados o desenvolvimento e o entendimento do propósito desse projeto de 
mineração de dados. É definido qual ou quais respostas serão procuradas durante o processo. 
 
B. Obter os dados 
Etapa responsável pela identificação de quais informações dentre as bases de dados existentes, devem 
ser efetivamente consideradas durante o processo de KDD [5]. Considerando que os dados estejam 
reunidos em uma mesma estrutura, a função de seleção de dados pode ser divida em dois tipos: escolha de 
atributos e escolha de registros a serem considerados no processo de KDD. 
Quando o assunto é escolha de atributos, o principal objetivo é encontrar um conjunto mínimo de 
atributos de tal forma que a informação original seja preservada. As principais motivações para a escolha 
de atributos são: um conjunto de atributos bem selecionados pode conduzir a modelos de conhecimento 
mais concisos e com maior precisão; redução do tempo de aplicação dos algoritmos se comparado com a 
Fig. 1. Esquema do processo de mineração de dados. 
Fonte: Adaptado de Shmueli, Patel e Bruce [4] 
 
 
aplicação dos algoritmos em toda a base; e por fim, a redução de um atributo, na maioria dos casos, é 
muito mais significativo do que a exclusão de um registro, com relação ao tamanho do conjunto de dados 
[5]. 
Já quando o assunto é escolha de registros, a caracterização é feita pela escolha de registros que o 
algoritmo será aplicado. Dentre as operações de redução de dados podem ser citadas: 
• Amostragem aleatória, que se baseia em sortear de uma base de dados um número preestabelecido 
de registros que seja menor do que a quantidade de registros da base de dados [5]; 
• Eliminação direta de casos ou segmentação do banco de dados, nessa operação escolhe-se um ou 
mais atributos para nortear o processo de redução de dados. Por exemplo: realizar uma análise com 
todos os moradores de uma região que são maiores de 18. Nesse caso, os moradores da região que 
são menores de idade, não são levados em conta durante o processo de KDD [5]; e 
• Agregação de informações, se baseia em consolidar dados com maior nível de detalhamento em 
novas informações com menor detalhe. Por exemplo, somar os valores de todas as compras de cada 
cliente, obtendo o total de despesas por ele realizadas durante um determinado período [5]. 
C. Exploração e limpeza dos dados 
Os dados no mundo real tendem a ser incompletos, possuir ruídos e serem inconsistentes. A etapa de 
limpeza de dados tenta preencher valores ausentes, suavizar ruídos ao identificar outliers e corrigir 
inconsistências nos dados [6]. 
Para a resolução dos caso de valores ausentes, é possível utilizar diferentes métodos. Dentre eles 
podemos citar: exclusão do registro, preenchimento do valor manualmente, preenchimento com um valor 
de medida central para o atributo (média ou mediana podem ser usadas nesse caso) ou utilizar um valor 
provável para preencher o valor ausente (regressão, árvore de decisão e etc). 
O termo outliers representa valor(es) discrepante(s) no próprio conjunto de dados coletados, ou seja, 
valor(es) que diverge(m) bastante do padrão global dos demais dados observados [7]. Técnicas de 
descrição estatística e métodos de visualização de dados podem ser usados para identificar discrepâncias 
que podem ser identificados como ruídos [6]. Técnicas de categorização, regressão e análise de outliers 
podem ser utilizadas para suavização desses ruídos. 
Outra tarefa presente nessa etapa do processo de Mineração de dados é a codificação de dados. A 
codificação de dados é uma operação de pré-processamentoresponsável pela forma como os dados serão 
representados durante o processo de KDD [5]. O objetivo é compreender como os dados devem ser 
codificados visando atender às necessidades específicas dos algoritmos de MD. 
 
A codificação pode ser divida em duas classes: Numérica – Categórica e Categórica – Numérica. No 
primeiro caso, codificação numérica – categórica, o objetivo é dividir atributos contínuos em intervalos 
codificados. Para isso pode-se utilizar as técnicas: 
• Mapeamento Direto, que consiste na simples substituição dos valores numéricos por valores 
categóricos. Por exemplo: 
0 → Masculino; 
1 → Feminino. 
• Mapeamento em Intervalos, também conhecida como discretização, pode ser obtida a partir de 
métodos que dividam o domínio de uma variável numérica em intervalos [5]. 
 No caso da codificação categórica – numérica os valores de atributos categóricos são representados por 
códigos numéricos. Como exemplo podemos citar a técnica de representação binária padrão, a técnica de 
representação binária 1-de-N, e por fim, a técnica de representação binária por temperatura [5]. 
D. Determinar qual tarefa será realizada 
Com o objetivo específico determinado e os dados obtidos, é necessário determinar qual ou quais 
técnicas serão utilizadas. Essa etapa é necessária pois existem inúmeras técnicas, cada uma com suas 
vantagens e desvantagens. A escolha do método deve levar em consideração vários fatores, entre os quais: 
o tamanho da base de dados, os tipos de padrões que existem nos dados, o quanto de ruído pode existir 
entre os dados e principalmente o objetivo da análise. 
A técnica de mineração de dados indicada é a Classificação, que consiste em predizer uma variável 
categórica através de uma função que mapeie um conjunto de registros de dados em um conjunto de 
variáveis, denominadas classes. A função encontrada pode ser aplicada em outros registros de dados com 
o objetivo de prever qual classe esse novo registro se enquadra [3]. 
E. Determinar a técnica de mineração de dados 
Essa etapa envolve traduzir o objetivo geral da letra A deste item na questão estatística específica que 
será trabalhada. 
F. Aplicação da técnica 
Nessa etapa são aplicadas as técnicas de mineração sobre os dados que são o objeto de estudo. 
G. Avaliação dos resultados 
Nessa etapa é realizada a interpretação do resultado dos algoritmos. É feita a verificação se o algoritmo 
fornece respostas para as perguntas realizadas na letra A deste item. Caso o cenário não possibilite uma 
resposta, é necessário que volte à letra B deste item e reveja as decisões de projeto que foram tomadas 
buscando melhorar o método para atingir o objetivo proposto. 
 
Durante a criação de um modelo de predição é usual entender o desempenho do modelo. Para isso, 
utiliza-se técnicas de validação que definem qual parte do conjunto de dados será utilizado para 
treinamento e qual a parte será utilizada para validação do modelo. 
Um exemplo de técnicas de validação que podemos citar é a hold-out. No ambiente de aprendizado, os 
dados são separados em treino e validação. Dados de treino são submetidos ao classificador e produzem o 
modelo. Então os dados de validação são submetidos ao modelo para que seja feita a previsão. Como são 
dados históricos já classificados, é possível avaliar a classe real e a prevista, produzindo uma avaliação de 
desempenho [8]. 
Uma técnica um pouco mais elaborada do que a hold-out é a validação cruzada, também conhecida 
como cross-validation. A validação cruzada é uma técnica de validação que utiliza múltiplas subamostras 
aleatórias de treinamento e testes. A vantagem da validação cruzada é que todas as observações são 
utilizadas para treinamento e validação. Essa análise produz informações sobre a confiabilidade do 
sistema no que diz respeito à variação amostral [9]. 
Na validação cruzada K-fold o conjunto de dados é dividido em k subconjuntos mutualmente 
exclusivos. Um dos grupos é escolhido de forma aleatória para ser o grupo de validação, enquanto os 
outros k-1 subconjuntos são utilizados para treinar o modelo. Após o treinamento do modelo, o grupo de 
validação é aplicado e a taxa de erro verificada. O método se repete por k vezes até que todos os 
subconjuntos tenham sido usadas como validação. Ao fim, calcula-se o erro médio do modelo que é a 
média aritmética dos erros de cada subconjunto. 
É válido ressaltar que tanto para a validação cruzada quanto para hold-out os dados são reordenados 
aleatoriamente a cada execução. O parâmetro que realiza essa ordenação aleatória normalmente é 
chamado de random seed. 
H. Implementar o modelo 
Última etapa do processo e envolve integrar o modelo ao sistema para produzir decisões e ações 
baseadas nas respostas obtidas. 
III. CONTEXTUALIZAÇÃO DO AMBIENTE DE DADOS 
Todos os anos o INEP divulga em seu sítio eletrônico http://portal.inep.gov.br/ os microdados do 
resultado da prova do ENEM do ano anterior. Os dados retirados para esse estudo foram obtidos através 
do caminho “Página Inicial > Dados Abertos > Microdados > ENEM > 2018, os quais foram atualizados 
em 13/08/2019”. 
O arquivo é disponibilizado em formato .zip e dividido em 6 pastas, sendo elas: 
• DADOS – Onde são disponibilizados os itens das provas e os microdados dos participantes, este 
último possuindo aproximadamente 5.513.77 linhas de dados 
 
• DICIONÁRIO – Apresentação do dicionário de dados do arquivo de microdados da pasta DADOS, 
disponibilizado tanto em formato .ods quanto .xlsx. 
• INPUTS – Arquivos de entrada dos itens das provas e os microdados dos participantes para sistemas 
que consigam ler dados no formato R, SAS e SPS. 
• LEIA-ME e DOCUMENTOS TÉCNICOS – Disponibilização do edital do ENEM de 2018, o manual 
de redação, a matriz de referência e, por fim, o arquivo Leia-me, que apresenta uma breve descrição do 
Enem, informações sobre as bases e os arquivos disponibilizados nos Microdados. 
• PLANILHAS_TS_ITEM – Pasta vazia. 
 • PROVAS E GABARITOS – Arquivos com as provas e os gabaritos de todos os tipos de prova 
aplicados. 
IV. LINGUAGEM DE PROGRAMAÇÃO E BIBLIOTECAS DE APOIO 
 
A. Linguagem Python 
A linguagem Python é uma linguagem de programação multiparadigma criada em 1991, tendo como 
principal objetivo a produtividade e legibilidade. É uma linguagem de programação interpretada, com 
semântica dinâmica, de alto nível e orientada a objetos. Python suporta módulos e pacotes, que encoraja a 
programação modularizada e reuso de códigos [10]. A Figura 2 apresenta o prompt de comandos da 
Linguagem Python. 
A linguagem oferece suporte a desktops, desenvolvimento web, aplicações mobile, geoprocessamento, 
processamento de imagens, robótica, data science, programação para hardware (Arduíno e RaspbarryPi), 
desenvolvimento de jogos, biotecnologia e também no desenvolvimento científico, pois, trabalha com 
números grandes e complexos, além de possuir diversas bibliotecas para essa finalidade como Scipy e 
NumPy [11]. 
Fig. 2: Prompt de comandos da Linguagem Pythno. 
Fonte: https://learn.sparkfun.com/tutorials/python-programming-tutorial-getting-started-
with-the-raspberry-pi/hello-
world 
 
O tratamento dos dados coletados e aplicação das técnicas de mineração de dados utiliza a linguagem 
Python, essa escolha é justificada e motivada pela ampla utilização em ambientes de estudo sobre 
mineração de dados, além da facilidade proporcionada pelas inúmeras bibliotecas amplamente conhecidas 
para a exibição dos resultados. 
B. Bibliotecas de Apoio 
1) Biblioteca Pandas 
Pandas é uma biblioteca Python que fornece estruturas de dados rápidas e flexíveis projetadas para 
facilitar o trabalho com dados relacionais ou rotulados, ambos de forma simples eintuitiva. A Biblioteca 
tem como objetivo se tornar a ferramenta de código aberto mais poderosa e flexível disponível em 
qualquer linguagem de programação [12]. 
Segundo McKinney & Team [12], a biblioteca Pandas é adequada para diferentes tipos de dados, entre 
eles pode-se citar: 
• Dados tabulares com colunas de tipo heterogêneo, como uma tabela SQL ou planilha do Excel; 
• Séries temporais ordenadas ou não ordenadas, não necessariamente com frequência fixa; 
• Dados de matriz arbitrária com rótulos de linha e coluna. 
As estruturas de dados principais dos pandas são Series e DataFrame. As séries são usadas para 
trabalhar com dados unidimensionais enquanto o DataFrame pode ser usado com matrizes 
bidimensionais. O DataFrame possui dois índices diferentes, ou seja, índice de coluna e índice de linha, 
enquanto os rótulos de linha em uma série são chamados apenas de índice. Qualquer lista, tupla e 
dicionário podem ser convertidos em séries. Por outro lado, a maneira mais comum de criar um 
DataFrame é usando um dicionário [13]. 
2) Biblioteca scikit-learn 
O scikit-learn, projeto iniciado em 2007 por David Cournapeau como um projeto do Google Summer 
of Code, é um módulo Python para aprendizado de máquina construído sobre o SciPy [14]. 
Em vez de fornecer o maior número possível de recursos, o objetivo do projeto scikit-learn tem sido 
fornecer implementações sólidas dos algoritmos de aprendizado de máquina. A qualidade do código é 
garantida com testes de unidade - a partir do release 0.8, a cobertura de testes é de 81% [15]. 
V. PROCEDIMENTO METODOLÓGICO DO TRABALHO 
Nesta seção são apresentadas as etapas para aplicação do processo de Mineração de Dados, conforme 
apresentado na Figura 1. Observando que, o procedimento metodológico deste trabalho, consiste em 
aplicar cada etapa do processo de Mineração de Dados até a etapa de avaliação dos resultados, lembrando 
que o objetivo é avaliar o desempenho do algoritmo Naive Bayes na base dados do Enem de 2018. 
 
A. Obtenção dos dados 
Dentre todos os arquivos disponibilizados pelo INEP, os arquivos utilizados nesse estudo estão a 
seguir: 
• MICRODADOS_ENEM_2018.csv, daqui para frente denominado arquivo de microdados, está 
presente na pasta de nome “DADOS”. Esse arquivo é a base de dados que foi trabalhada durante o 
estudo. Nele está presente os dados pessoais, econômicos e resultados de todos que se inscreveram 
para a prova do ENEM de 2018; 
• Dicionário_Microdados_Enem_2018.xlsx, daqui para frente denominado dicionário de dados, está 
presente na pasta de nome “DICIONÁRIO”. Esse arquivo é responsável por apresentar as 
características dos dados presente no arquivo de microdados. Na Figura 3, apresenta um fragmento 
do dicionário de dados, para facilitar entendimento das informações. As informações presentes são: 
Nome da variável, descrição da variável, categoria e descrição das variáveis categóricas, tamanho e 
por fim o tipo das variáveis. 
 
B. Protótipo da Ferramenta de Pré-processamento 
O protótipo da ferramenta desenvolvida com a linguagem Python com o objetivo de facilitar a etapa de 
pré-processamento deste trabalho e facilitar a aplicação do algorítimo Naive-Bayes, observando que a 
ferramenta incluiu dois campos novos na base de dados. O primeiro atributo é chamado de 
“NU_MEDIA”, ele representa a média de qualquer grupo de notas escolhidas pelo usuário da ferramenta. 
O segundo campo incluso nos dados indica se o atributo “NU_MEDIA” é bom (1) ou ruim (0) de acordo 
com a nota de corte também escolhida pelo usuário da ferramenta. Esse campo se chama “CL_MEDIA”. 
A ferramenta está dividida em duas partes: a primeira parte é utilizada para a escolha dos arquivos e 
definição da nota de corte utilizada na criação do atributo “CL_MEDIA” no arquivo de saída. A segunda 
parte é responsável por selecionar os atributos que serão mantidos, as classes que serão excluídas e os 
atributos de nota que participarão da criação da classe “CL_MEDIA”. 
Fig. 3: Fragmento do arquivo do dicionário de dados. 
Fonte: próprio autor. 
 
 
A figura 4 apresenta a disposição de configuração da ferramenta e um exemplo de preenchimento. 
Nesse caso escolhe-se o arquivo de dicionário de dados, em seguida o arquivo com os microdados e por 
fim coloca-se a nota de corte como 721,35. Para ir para a próxima tela é necessário clicar no botão 
“Configurar pré-processamento”. 
 
 
As Figuras 5, 6 e 7 apresentam a disposição da tela 2 com um exemplo de preenchimento. A tabela 
apresentada na tela de seleção de dados é formada a partir dos dados disponíveis no arquivo de dicionário 
de dados carregado na tela anterior. A descrição de cada linha da tabela é dada a seguir: 
• A primeira linha da tabela descreve o nome de cada variável com possibilidade de apresentar um 
tooltip dando a descrição da variável; 
 
• A segunda linha é formada por checkbox para indicar se o usuário deseja apresentar esse atributo 
no arquivo de saída; 
 
• Na terceira linha é mostrado as classes dos atributos, caso existam, com a possibilidade de 
apresentar um tootltip dando a descrição dela; 
 
• Na quarta linha da tabela temos outro checkbox por classe indicando se o usuário deseja excluir os 
registros que apresentam determinada classe. É válido destacar que basta que o registro tenha no 
mínimo uma das classes selecionadas para que ele não esteja presente no arquivo de saída, ou seja, 
não é necessário que o registro tenha todas as classes selecionadas para ele ser excluído; 
 
• E por fim, na quinta e última linha apresenta-se um checkbox para que o usuário possa selecionar 
quais dos atributos do tipo nota irão entrar no cálculo do atributo “NU_MEDIA”. 
Fig. 4. Tela de configuração da ferramento de pré-
processamento de dados. 
Fonte: próprio autor. 
 
 
 
 
 
 
C. Exploração e limpeza dos dados 
Na etapa da mineração de dados utiliza-se o protótipo da Ferramenta de Pré-processamento, citada na 
letra B deste tópico. Nas configurações de entrada foram utilizados os arquivos dicionário de dados e 
microdados citados na letra A deste tópico do artigo e como nota de corte foi utilizado o valor 614.13, ou 
seja, registros que tiverem o atributo “NU_MEDIA” maior ou igual ao valor de 614.13 terá como valor 
Fig. 6. Trecho da tela de seleção de dados da ferramenta 
de pré-processamento. Fonte: próprio 
autor.
 
Fig 5. Trecho da tela de seleção de dados da ferramenta 
de pré-processamento. Fonte: próprio 
autor.
 
Fig. 7. Trecho da tela de seleção de dados da ferramenta 
de pré-processamento. Fonte: próprio 
autor.
 
 
do atributo “CL_MEDIA” igual à 1, caso contrário, o valor do atributo “CL_MEDIA” igual à 0. Essa nota 
de corte foi escolhida por ser a menor nota para aprovação na modalidade ampla concorrência na chamada 
regular no processo seletivo UFES 2019-1 que utilizou o resultado do ENEM de 2018 para avaliação [16]. 
Durante o estudo, os atributos escolhidos para estarem presentes no arquivo de saída foram o número 
de inscrição (NU_INSCRICAO) e os dados socioeconômicos, exceto as perguntas relacionadas às 
ocupações dos pais ou responsáveis (Q001, Q002, Q005, Q006, …, Q027). 
Os registros que apresentavam alguma das seguintes categorias abaixo foram excluídas da base de 
dados: 
• O participante faltou ou foi eliminado da prova; 
• O participante teve a redação anulada, entregou ela em branco ou com texto insuficiente. 
O cálculo da média foi realizado utilizando os atributos de nota de cada participante, sendo eles: 
NU_NOTA_CN, NU_NOTA_CH, NU_NOTA_LC, NU_NOTA_MT, NU_NOTA_REDACAO. É válido 
destacar que no caso da redação o INEP divulga tanto as notas de cada competência avaliada quanto a 
nota agregada. Parao estudo utilizou-se apenas a nota agregada da redação. 
Nas figuras 8 e 9, observa-se um trecho do arquivo de saída da ferramenta de pré-processamento. A 
base de dados possui aproximadamente 3,8 milhões de registros que atenderam as restrições das classes 
aplicadas. 
 
Fig. 8. Trecho do aquivo do arquivo de saída da 
ferramenta de pré-processamento. Fonte: próprio 
autor.
 
 
 
É válido destacar que na base de dados presente no arquivo de saída tinha aproximadamente 15% dos 
registros com valor 1 para o atributo CL_MEDIA e o restante como valor 0. Nesse caso corre-se o risco 
de cair em um problema de conjuntos de dados com classes desbalanceadas. Segundo BATISTA [17], a 
maioria dos algoritmos de AM tem dificuldades em criar um modelo que classifique com precisão os 
exemplos da classe minoritária. Uma forma de solucionar esse problema é procurar por uma distribuição 
da classe que forneça um desempenho aceitável de classificação para a classe minoritária. 
D. Determinar qual tarefa será realizada 
A tarefa realizada nesse estudo foi classificar o desempenho dos participantes, utilizando a média de 
suas notas e os dados socioeconômicos disponíveis na base de dados. 
E. Determinar a técnica de mineração de dados 
O algoritmo Naive Bayes é um classificador probabilístico ingênuo, ou seja, admite que a presença de 
um atributo em uma classe não está relacionada com a presença de outros atributos da mesma classe. O 
algoritmo surge a partir do teorema de Bayes (Thomas Bayes). A escolha do algoritmo Naive Bayes se 
deu pois ele apresenta-se como um ótimo tipo de algoritmo para grandes volumes de dados, pois a sua 
execução é normalmente mais ágil quando comparado a outros algoritmos de classificação [18]. 
1) Naive Bayes 
Técnica que é um classificador probabilístico que supõe que os atributos vão influenciar a classe de 
forma independente [19]. O teorema de Bayes é utilizado para estimar as probabilidades do quanto cada 
categoria de cada atributo contribui para cada classe. A fórmula simplificada de Naive Bayes é exibida na 
Equação 1, onde P(classe) é o número de casos pertencentes à classe em questão sobre o número total de 
casos. P( a i |classe) é o número de casos pertencente à classe em questão com o atributo i com valor a i 
sobre o número total de casos. E por fim, arg max refere-se às entradas ou argumentos nos quais as saídas 
da função são as maiores possíveis. 
Fig. 9. Trecho do aquivo do arquivo de saída da 
ferramenta de pré-processamento. Fonte: próprio 
autor.
 
 
 
Ou seja, dada uma nova instância A = a1, a2 ... an, deseja-se predizer sua classe. Para calcular a classe 
mais provável da nova instância, calcula-se a probabilidade de todas as possíveis classes e, no fim, 
escolhe-se a classe com a maior probabilidade como rótulo da nova instância [20]. 
 É válido destacar que a probabilidade de cada classe pode ser facilmente calculada através da 
quantidade de registros assimilados à classe, dividido pelo conjunto total de registros na base de dados 
utilizados no treinamento do classificador. Apesar da suposição de independência condicional não ser 
inteiramente verdadeira, o algoritmo de Naive Bayes é bastante efetivo [21]. 
F. Protótipo de Ferramenta de Mineração de Dados 
O Protótipo da Ferramenta em linguagem Python objetiva facilitar a etapa de aplicação e avaliação de 
desempenho dos métodos de mineração de dados. Ela utiliza a Biblioteca Scikit-learn, que é uma 
biblioteca de aprendizado de máquina de código aberto para a linguagem de programação Python. A 
biblioteca inclui vários algoritmos de classificação, regressão e agrupamento, e é projetada para interagir 
com a biblioteca Python numérica NumPy, a qual fornece estruturas de dados rápidas e flexíveis 
projetadas para facilitar o trabalho com dados relacionais ou rotulados, de forma simples e intuitiva [12]. 
Os algoritmos foram utilizados com suas configurações padrões. 
Para criação do modelo de classificação, foi utilizada a função Gaussian NB, que utiliza a distribuição 
normal para a definição da probabilidade das classes [22]. A figura 10 apresenta o protótipo da 
ferramenta, a configuração se dá de forma bem simples, sendo necessário apenas preencher os quatro 
campos que são detalhados conforme apresentados: 
• Selecionar o arquivo com a base de dados – Nesse ponto é utilizado o arquivo resultado do 
protótipo da ferramenta de pré-processamento explicado na letra B deste item; 
• Porcentagem de hold-out – É possível colocar uma ou mais porcentagens para ser aplicado no 
método de avaliação hold-out; 
• Quantidade de arquivos cross-validation – É possível colocar um ou mais valores para ser aplicado 
como o K do método de avaliação k-fold; 
• Valores para random seed – Valores que serão utilizados como semente para a reordenação da base 
de dados antes da aplicação dos métodos hold-out e cross-validation. É válido destacar que para 
cada valor de semente será executado os métodos de avaliação com os seus respectivos valores. 
Equação 1. Fómula simplicada de Naive Bayes. 
Fonte: PARDO; NUNES [19]. 
 
 
Ao término de configuração de todos os campos, ao clicar no botão “Aplicar Naive Bayes” a 
ferramenta reordena a base de dados de acordo com a semente, divide a base de acordo com os métodos 
de avaliação, aplica a ferramenta de mineração Naive Bayes, realiza a avaliação da ferramenta através dos 
métodos de avaliação e do coeficiênte Kappa e por fim registra o resultado do desempenho em um 
arquivo chamado result.xlsx. 
G. Aplicação da técnica 
A aplicação da técnica Naive Bayes é realizada através do protótipo da ferramenta apresentada na letra 
F deste item. As configurações realizadas foram realizadas conforme a Figura 11: 
 
Fig. 11. Configurações da ferramenta de mineração de 
dados e avaliação. Fonte: próprio 
autor
 
Fig. 10. Tela de configuração da ferramenta de mineração 
de dados e avaliação. Fonte: próprio 
autor.
 
 
Os testes do cross-validation foram subdivididos em cinco grupos de tamanhos iguais diferindo entre si 
no parâmetro n, foram utilizados os seguintes valores: 10, 15, 20, 25 e 30. De modo semelhante, durante 
os testes de hold-out foram subdivididos em cinco grupos de tamanhos iguais diferindo entre si nas 
porcentagens, tendo como valores: 66%, 70%, 75%, 80% e 85%. Quanto ao parâmetro random seed, 
foram utilizados valores 1, 2 e 3 em cada sequencia de testes. 
VI. AVALIAÇÃO DOS RESULTADOS 
A. Coeficiente Kappa 
Uma forma de avaliar o grau de concordância em uma classificação é o Coeficiente Kappa. O 
Coeficiente Kappa é uma medida do quanto a classificação está de acordo com os dados utilizados para 
descrever e testar o grau de concordância, confiabilidade e precisão na classificação [23]. Esse coeficiente 
divide a concordância em duas partes: a primeira relacionada ao acerto casual e a segunda à concordância 
confiável. Essa divisão é necessária, pois classificações absolutamente independentes podem apresentar 
concordâncias casuais [24]. 
 O coeficiente Kappa é cálculado por: 
Kappa=
P (O)− P(E)
1− P(E)
, onde 
P(O): proporção observada de concordâncias (soma das respostas concordantes dividida pelo total); e 
P(E): proporção esperada de concordâncias (soma dos valores esperados das respostas concordantes 
dividida pelo total). A interpretação da estatística Kappa pode ser observada na tabela I. 
 
TABELA I. INTERPRETAÇÃO DA ESTATÍSTICA KAPPA 
Valor Kappa Grau de Concordância 
0 Nenhum 
0 – 0,2 Leve 
0,2 – 0,4 Bom 
0,4 – 0,6 Moderado 
0,6 – 0,8 Considerável 
0,8 – 1,0 Quase Perfeito 
a. Fonte: MCGINN; PURDIN [25]. 
 
Para exemplificar o cálculo do coeficiente Kappa, considere o seguinte cruzamento entreos resultados 
de um classificador e os dados base de um conjunto de dados qualquer. Os resultados da tabela II 
mostram a proporção observada de concordância (Po) de 7/12, formado pela soma dos elementos da 
 
diagonal princial (4+3). A proporção esperada de concordância (Pe) é de 6/12. Sendo assim, o coeficiente 
Kappa nesse caso é de aproximadamente 0,167. O que indica um grau de concordância leve. 
TABELA II. INTERPRETAÇÃO DA ESTATÍSTICA KAPPA 
 Dados base 
Total 
Classe 1 Classe 2 
Dados Classificador 
Classe 1 4 3 7 
Classe 2 2 3 5 
Total 6 6 12 
b. Fonte: próprio autor. 
B. Resultados Obtidos 
Os resultados obtidos através dos testes foram organizados nas tabelas III e IV de acordo com o 
resultado de cada método de separação de conjuntos de treinamento e de teste. Para cada grupo foram 
informados a porcentagem média de acerto, assim como o coeficiente Kappa médio encontrado seguidos 
de suas classificações. 
 
TABELA III. RESULTADO DOS TESTES COM CROSS-VALIDATION 
Folds Média de acertos Coeficiente Kappa Classificação Kappa 
10 0,93114653 0,68916638 Considerável 
15 0,93114420 0,68915368 Considerável 
20 0,93114368 0,68914914 Considerável 
25 0,93114385 0,68914684 Considerável 
30 0,93114385 0,68914985 Considerável 
c. Fonte: próprio autor. 
 
TABELA IV. RESULTADO DOS TESTES COM HOLD-OUT 
Porcentagens Média de acertos Coeficiente Kappa Classificação Kappa 
66% 0,93107778 0,68882579 Considerável 
70% 0,93100473 0,68852490 Considerável 
75% 0,93108119 0,68884428 Considerável 
80% 0,93126172 0,68964272 Considerável 
85% 0,93109638 0,68884796 Considerável 
d. Fonte: próprio autor. 
 
 
Nas tabelas, pode-se observar que o algoritmo Naive Bayes teve uma performance aceitável, 
apresentado a classificação Kappa como considerável e uma média de acertos por volta de 93% em todos 
os testes realizados. Não foi possível perceber o impacto nos resultados com relação às alterações de folds 
e porcentagens no métodos de avaliação. 
 Na parte Exploração e limpeza dos dados, letra C do item V deste estudo, levantou-se a 
possibilidade da base de dados utilizada no estudo estar com o problema de conjuntos de dados com 
classes desbalanceada, dado que apenas 15% dos registros apresentam o atributo CL_MEDIA = 1 na base 
de dados. Visando eliminar o risco dessa característica impactar a validação do desempenho do 
classificador Naive Bayes, a base de dados foi reduzida para que tanto o valor 1 quanto o valor 0 no 
atributo CL_MEDIA tenham 50% dos registros. No final da redução da base de dados, a quantidade total 
de registros caiu para 1.231.968, sendo 615.984 registros com CL_MEDIA = 1 e 615.984 registros com 
CL_MEDIA = 0. 
 Após a redução da base de dados repetiu-se todo o procedimento realizado com a base anterior e 
nas tabelas 4 e 5 apresenta-se os resultados obtidos de acordo com a aplicação de cada método de 
separação de conjuntos de treinamento e de teste. 
TABELA V. RESULTADO DOS TESTES COM CROSS-VALIDATION E BASE DE DADOS REDUZIDA. 
Folds Média de acertos Coeficiente Kappa Classificação Kappa 
10 0,94489503 0,83675715 Quase Perfeito 
15 0,94855929 0,84538015 Quase Perfeito 
20 0,95027321 0,84939367 Quase Perfeito 
25 0,95128770 0,85172434 Quase Perfeito 
30 0,95195398 0,85321118 Quase Perfeito 
e. Fonte: próprio autor. 
 
TABELA VI. RESULTADO DOS TESTES COM HOLD-OUT E BASE DE DADOS REDUZIDA. 
Porcentagens Média de acertos Coeficiente Kappa Classificação Kappa 
66% 0,95525473 0,91050815 Quase Perfeito 
70% 0,95514375 0,91028767 Quase Perfeito 
75% 0,95508036 0,91016224 Quase Perfeito 
80% 0,95478371 0,90957120 Quase Perfeito 
85% 0,95518756 0,91037076 Quase Perfeito 
F. FONTE: PRÓPRIO AUTOR. 
 
 Com a redução da base de dados também não foi possível observar uma variação significativa na 
média de acertos e do coeficiente Kappa ao alterar os valores de folds e porcentagens nos métodos de 
avaliação. É possível observar um aumento considerável no Coeficiente Kappa, onde em todos os testes 
saíram de uma classificação Considerável para uma classificação Quase Perfeito. Principalmente quando 
se analisa os testes com hold-out que tiveram um aumento de aproximadamente 22%. 
VII. CONSIDERAÇÕES FINAIS 
O algoritmo Naive Bayes pode parecer muito simples ao considerar que os atributos são independentes 
entre si. Porém, através deste estudo é possível observar que o algoritmo apresenta-se como um ótimo 
classificador de dados, pois em todos os testes apresentou-se como considerável ou quase perfeito pelo 
coeficiente Kappa. 
Através deste estudo também é possível observar que em alguns casos o desempenho do algoritmo 
pode ter um melhor desempenho quando as classes possuem quantidades parecidas de registros. 
Outro destaque que pode ser feito é que quando o algoritmo é aplicado em uma base de dados muito 
grande, os métodos de separação de conjuntos de treinamento e de teste não têm grande influência sobre 
a média de acertos do algoritmo. 
 
 
REFERÊNCIAS BIBLIOGRÁFICAS 
[1] PORTAL, INEP. Disponível em: <http://portal.inep.gov.br/web/guest/enem>. Acesso em 02 de Novembro 
2019. 
[2] GARTNER GROUP. Disponível em: <http://www.gartner.com/it-glossary/data-mining >. Acesso em 06 de 
Novembro 2019, tradução nossa. 
[3] GALVÃO, N. D.; MARIN, H. DE F. Técnica de mineração de dados: uma revisão da literatura. Acta Paulista 
de Enfermagem, v. 22, n. 5, 2009. 
[4] SHMUELI, Galit; PATEL, Nitin R.; BRUCE, Peter C. Data mining for business intelligence. John Wiley & 
Sons, 2016. 
[5] GOLDSCHMIDT, R.; PASSOS, E. Data mining: um guia prático, conceitos, técnicas, ferramentas, 
orientações e aplicações. Rio de Janeiro: Campus, v. 1, 2005. 
[6] HAN, Jiawei; PEI, Jian; KAMBER, Micheline. Data mining: concepts and techniques. Elsevier, 2011. 
[7] BARNETT, V.; LEWIS, T. Outliers em Dados Estatísticos, 3 ª edição. 1994. 
[8] AMARAL, Fernando. Aprenda mineração de dados: teoria e prática. Alta Books Editora, 2016. 
[9] ZHANG, G.; HU, M. Y.; PATUWO, B. E.; INDRO,D. C. Artificial neural networks in bankruptcy prediction: 
General framework and cross-validation analysis. European Journal of Operational Research 116, Elsevier, 
1999. 
[10] CAELUM. O que é Python. Disponível em: <https://www.caelum.com.br/apostila-python-orientacao-
objetos/o-que-e-python/>. Acesso em 18 de Novembro 2019. 
 
[11] DA SILVA, Rogério Oliveira; SILVA, Igor Rodrigues Sousa. Linguagem de Programação Python. 
TECNOLOGIAS EM PROJEÇÃO, v. 10, n. 1, p. 55-71, 2019. 
[12] MCKINNEY, Wes. PyData Development Team." pandas: powerful Python data analysis toolkit, Release 0.25. 
3" Dated Nov 02, 2019. 
[13] PANDAS GUIDE. Pandas Basic. Disponível em: 
<https://pandasguide.readthedocs.io/en/latest/Pandas/basic.html#introduction>. Acesso em 16 de Novembro 
2019. 
[14] SILVA, Gleidson Leite da. Desenvolvimento de rede neural de multicamadas para predição de parâmetros de 
soldagem. 2018. 
[15] PEDREGOSA, Fabian et al. Scikit-learn: Machine learning in Python. Journal of machine learning research, 
v. 12, n. Oct, p. 2825-2830, 2011. 
[16] UFES. SISU UFES 2019 - NOTAS MÁXIMAS E MÍNIMAS APROVADOS DA CHAMADA REGULAR. 
Disponível em: <http://sisu.ufes.br/sites/sisu.ufes.br/files/field/anexo/notas_max_e_min_sisu_2019.pdf>. 
Acesso em 04 de Novembro de 2019. 
[17] BATISTA, Gustavo Enrique de Almeida Prado et al. Pré-processamento de dados em aprendizado de máquina 
supervisionado. 2003. Tese de Doutorado. Universidade de São Paulo. 
[18] DE SÁ, Joyce Maria do Carmo et al. Análise de Crédito Utilizando uma Abordagem de Mineração de Dados. 
Revista de Engenharia e Pesquisa Aplicada, v. 3, n. 3, 2018. 
[19] DE SÁ, Alex Guimarães Cardoso. Evoluçao automática de algoritmos de redesBayesianas de classificaçao. 
2014. 
[20] PARDO, Thiago Alexandre Salgueiro; NUNES, Maria das Graças Volpe. Aprendizado Bayesiano Aplicado 
ao Processamento de Línguas Naturais. Série de Relatórios Técnicos do Instituto de Ciências Matemáticas e 
de Computação-ICMC, Universidade de São Paulo, n. 180, 2002. 
[21] DOMINGOS, P. e PAZZANI, M. J. On the optimality of the simple Bayesian classifier under zero-one loss. 
Mach. Learn. 1997. 
[22] Scikit-learn: Machine Learning in Python, Pedregosa et al., JMLR 12, pp. 2825-2830, 2011. 
[23] LANDIS, J. Richard; KOCH, Gary G. The measurement of observer agreement for categorical data. 
biometrics, p. 159-174, 1977. 
[24] Everitt, B. 1992. The Analysis of Contingency Tables. Chapman and Hall. 
[25] MCGINN, Therese; PURDIN, Susan. Reproductive health and conflict: Looking back and moving ahead. 
Disasters, v. 28, n. 3, p. 235-238, 2004.

Outros materiais