Baixe o app para aproveitar ainda mais
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.
Compartilhar