Modelos Preditivos de Notas de Redação do ENEM 2015

Alunos: Carlos Eduardo Marciano e João Victor Davim

Universidade Federal do Rio de Janeiro – 2017.2

“Science is what we understand well enough to explain to a computer. Art is everything else we do.” –Donald Knuth

Introdução

        Muito se questiona acerca das notas da redação do Exame Nacional do Ensino Médio, principal meio de acesso às universidades do Brasil. Movidos por esta curiosidade, e por acreditar que nosso trabalho possa ter um impacto positivo na discussão do modelo ideal de acesso ao ensino superior brasileiro, escolhemos criar modelos preditivos que, baseados em diversos fatores acerca de um candidato, faça uma previsão acerca de sua nota de redação.

A fim de explorarmos diversas possibilidades, propomos alguns diferentes métodos conhecidos da literatura e avaliamos seus desempenhos. De fato, estamos interessados em buscar modelos consistentes, que nos permitam observar as predições e tirar conclusões acerca de sua performance. Com isso, esperamos que este trabalho não seja apenas um exercício computacional, mas também uma fonte de informação para posteriores análises sociológicas.

Minerando Dados

        Os dados utilizados para estes experimentos foram obtidos no Portal de Microdados do Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira, o INEP[1], além de também estarem disponíveis na plataforma Kaggle[2], sendo inteiramente referentes ao Enem 2015. Inicialmente, contando com mais de 8 milhões de registros, o dataset precisou ser filtrado para que pudéssemos remover entradas indesejadas (e.g. candidatos faltosos) e posteriormente amostrado a fim de diminuirmos o número de registros com o qual estávamos trabalhando em função de limitações de software. Escolhemos também remover os candidatos com nota de redação igual a 0, devido ao fato de que tal grau é, em geral, atribuído quando ocorrem situações que não estamos interessados em capturar em nosso modelos (e.g. desrespeito aos direitos humanos; fuga ao tema).

Além disso, encontramos a necessidade de remover muitas das colunas originalmente presentes. Um número elevado de atributos não necessariamente contribui para a predição, tendo em vista que muitos deles eram ou redundantes ou referentes a situações que não estávamos interessados em capturar em nossos modelos. Assim, conseguimos reduzir os 90 atributos originais para 14 que julgamos possuírem maior relevância para o processo preditivo.

De forma similar, amostramos uniformemente nosso dataset, escolhendo um registro a cada 1000 para compor nosso conjunto final. Tivemos a preocupação de manter a mesma proporção de estados da federação dos dados originais. Assim, se, por exemplo, o Tocantins correspondesse a X% dos mais de 8 milhões de registros do INEP, esta mesma porcentagem se manteria de forma aproximada após nossa amostragem. Com isso, nossos dados estavam prontos para serem submetidos a algumas análises mais sofisticadas que serão apresentadas posteriormente.

Características do Dataset

        Por fim, chegamos a um conjunto final de dados com 5330 registros e 14 atributos, um dos quais era o nosso alvo de predição. Abaixo, incluímos breves descrições, adaptadas do site do INEP[1], de cada um dos atributos selecionados. Decidimos manter seus nomes originais ao invés de renomeá-los em prol de uma maior consistência:

Atributo Descrição
SG_UF_RESIDENCIA Sigla da Unidade da Federação de residência
IN_TREINEIRO Indica se o inscrito fez a prova com intuito de apenas treinar seus conhecimentos:

1 Sim

0 Não

NU_IDADE Idade
TP_SEXO Sexo:

M Masculino

F Feminino

TP_NACIONALIDADE Nacionalidade:
0 Não informado

1 Brasileiro(a)

2 Brasileiro(a) Naturalizado(a)

3 Estrangeiro(a)

4 Brasileiro(a) Nato(a), nascido(a) no exterior

TP_ST_CONCLUSAO Situação de conclusão do Ensino Médio:

1 Não concluí e não estou cursando o Ensino Médio

2 Estou cursando e concluirei o Ensino Médio após 2015

3 Estou cursando e concluirei o Ensino Médio em 2015

4 Já concluí o Ensino Médio

TP_ESTADO_CIVIL Estado Civil:

0 Solteiro(a)

1 Casado(a)/Mora com um(a) companheiro(a)

2 Divorciado(a)/Desquitado(a)/Separado(a)

3 Viúvo(a)

TP_COR_RACA Cor/raça:

0 Não declarado

1 Branca

2 Preta

3 Parda

4 Amarela

5 Indígena

6 Não dispõe da informação

Q006 Resposta à pergunta “Qual é a renda mensal de sua família? (Some a sua renda com a dos seus familiares.)”
NU_NOTA_CN Nota da prova de Ciências da Natureza
NU_NOTA_CH Nota da prova de Ciências Humanas
NU_NOTA_LC Nota da prova de Linguagens e Códigos
NU_NOTA_MT Nota da prova de Matemática
NU_NOTA_REDACAO
(Variável-alvo)
Nota da prova de redação

Para tratarmos o atributo Q006, cujos valores são faixas de renda (e.g. “De R$ 2.364,01 até R$ 3.152,00.”), escolhemos substituir o texto original pela média dos dois extremos do intervalo (e.g. o exemplo previamente mencionado foi substituído pelo valor 2758).

Tecnologias Utilizadas

        A fim de realizarmos o pré-processamento relacionado à remoção de registros indesejados (e.g. candidatos faltosos; notas de redação iguais a 0 vide seção “Minerando Dados” para maiores explicações) e à substituição do atributo Q006 pela média entre os dois extremos de seu intervalo, utilizamos rotinas da linguagem Python desenvolvidas por nós mesmos. Além disso, para gráficos e visualização de dados, fizemos uso das bibliotecas matplotlib, numpy e pandas.

Em seguida, para análises estatísticas e para a implementação dos modelos de aprendizado de máquina propostos neste trabalho, utilizamos a ferramenta RapidMiner com sua extensão Weka, uma biblioteca sob licença GPL que implementa alguns algoritmos de machine learning cujas entradas podem ser polinominais, permitindo total compatibilidade com nossos dados.

Pré-processamento (RapidMiner)

        Dando continuidade ao tratamento dos dados minerados, passamos nossos registros por uma análise e remoção de outliers. Para tal, foi utilizado o algoritmo k-vizinhos mais próximos (k-NN, em inglês) com distâncias euclidianas, levando em conta os 20 vizinhos mais próximos e removendo, ao final do processo, 1% dos dados.

A imagem da página 5 mostra a scatter matrix dos atributos de nosso problema, na qual os outliers removidos estão destacados em vermelho. Através destas projeções em duas dimensões, podemos observar que os outliers de fato correspondem a dados mais extremos, algo condizente com o resultado esperado. Também já é possível começar a suspeitar de algumas correlações, mas deixaremos esta análise para a seção seguinte.

O próximo passo executado foi a normalização dos atributos do problema, que encontravam-se em escalas distintas um do outro. Para tal, o método escolhido para ser aplicado foi o z-score, a fim de converter os dados para uma distribuição normal com média = 0 e variância = 1. Sua fórmula é Z = (X-u) /s, onde “X” é o vetor dos valores observados, “u” é sua média e “s” é o desvio padrão. O intervalo da distribuição normal gerada não é [-1, 1], mas sim aproximadamente [-3, 3] (em tese, seria [-infinito, infinito], mas [-3, 3] já captura 99.9% dos dados[3].

Estatística dos Dados Não-Normalizados

        Tendo realizado nossa separação inicial dos registros, fomos capazes de prosseguir para a análise básica dos dados com os quais estávamos trabalhando. Nossa primeira curiosidade foi com relação à distribuição da variável-alvo (notas de redação), cujo gráfico pode ser encontrado em vermelho na página 6. Ao analisarmos estes dados, podemos perceber que nosso atributo segue uma distribuição normal com média de aproximadamente 550.

Além disso, estávamos interessados em observar a correlação dos atributos de nosso problema. Para tal, ao criarmos nossa matriz, ignoramos momentaneamente as variáveis binárias em função de sua incompatibilidade com o propósito desta análise. Assim, observamos que a maior correlação encontrada foi entre as variáveis NU_NOTA_LC e NU_NOTA_CH, o que nos induz a concluir que os candidatos que obtêm uma boa performance na prova de Linguagens e Códigos também conquistam um bom resultado em Ciências Humanas.

Observamos também que, de maneira geral, as notas estão consideravelmente correlacionadas entre si. Tal fato era esperado por nós já que, quando um candidato está bem preparado, a tendência é que ele obtenha notas relativamente boas em todas as provas. O contrário vale para o despreparo.

Por fim, observamos que, dentre todas as variáveis de entrada, a nota de Linguagens e Códigos é a mais correlacionada com a nota de redação. De fato, era esperado que alunos com um bom domínio da linguagem obtivessem notas de redação maiores.

photo5015320023090177999

82bcba17-128f-4b3e-994a-573a9e9a6e33

05e4c196-3d6d-4617-b096-964c07ecf1ff

65f48ee5-25db-48c9-a44a-4f38c8af3a20

NU_NOTA_CHNU_NOTA_CNNU_NOTA_LCNU_NOTA_MTQ006SG_UF_RESIDENCIATP_COR_RACANU_IDADE

Processo e Estatísticas de Validação

Implementando os diferentes modelos de aprendizado de máquina deste trabalho, tivemos de utilizar estatísticas que nos pudessem informar a performance de cada modelo ao ser aplicado no dataset ENEM 2015. Assim, a fim de realizarmos esta medição, recorremos ao coeficiente de determinação (R2), que também corresponde ao quadrado da correlação entre o valor real e o valor predito[4][5], e à raiz do erro médio quadrático (RMS).

O erro RMS é bastante interessante pois incorpora tanto a variância do modelo quanto o seu bias, medindo sua qualidade. Valores próximos de zero são melhores, já que isto significa que a previsão corresponde bastante com o valor real.

O coeficiente de determinação (R²), por sua vez, varia entre 0 e 1 e significa, em porcentagem, o quanto o modelo consegue explicar os valores observados. Portanto, modelos de maior R² são aqueles que se ajustaram melhor às amostras.

Suas definições são, finalmente, apresentadas abaixo:

003c2e0e-26b4-4e73-8cea-6182eda838b2
Em tais fórmulas, n é o número de registros; yi é o valor da variável-alvo no i-ésimo registro; fi é o valor predito pelo modelo para o i-ésimo registro; e ȳ é a média amostral da variável-alvo de todos os registros.

Tendo nossas fórmulas de erro em mãos, escolhemos o processo de Validação Cruzada de 10 ciclos para separar os dados em conjunto de treinamento e em conjunto de testes. Em uma iteração, o processo irá eleger 10% do dataset para servir como registros de teste, enquanto os outros 90% serão utilizados para treinar o modelo sendo avaliado. Na iteração seguinte, novos 10% de dados serão escolhidos para servir como teste, enquanto os restantes 90% serão o conjunto de treinamento. O processo continuará até que todos os registros tenham servido como teste em algum momento, totalizando 10 iterações (ou ciclos). A imagem abaixo[6] ilustra tal método. Para este trabalho, K = 10:

image_2017-12-14_23-51-12

Modelos de Predição

        Os modelos de predição escolhidos para este trabalho foram as seguintes 5 técnicas já conhecidas da literatura:

  • Predição Pela Média
  • k-Vizinhos Mais Próximos
  • Regressão Linear
  • Árvore de Decisão
  • Rede Neural

Os modelos serão brevemente explicados um a um nos itens seguintes acompanhados de seus resultados. O objetivo é comparar o desempenho de tais técnicas através das métricas de validação previamente discutidas, a fim de investigar qual opção melhor se ajusta ao dataset Enem 2015.

 

Modelo de Predição Pela Média

Este modelo consiste em prever um valor fixo para a variável de saída baseado na média das observações do conjunto de treinamento. É importante ressaltar, portanto, que se trata de uma técnica rudimentar, e sua escolha se deve ao fato de termos interesse em comparar métodos robustos com técnicas menos sofisiticadas.

A equação matemática do modelo é dada por:

image_2017-12-14_23-51-16

Na expressão acima, o parâmetro μy é calculado tomando-se a média aritmética dos valores da variável de saída de todo o conjunto de treinamento:

image_2017-12-14_23-51-19

Modelo RMS
Previsão pela Média 131.409 ± 6.570 0

 

Apesar de ser um modelo extremamente simples, o erro RMS não foi tão ruim quanto esperávamos. A variável-alvo possui uma distribuição muito similar à normal, contribuindo para um melhor desempenho desta técnica.

 

Modelo dos k Vizinhos Mais Próximos

O algoritmo k-Vizinhos Mais Próximos para problemas de regressão consiste em calcular as k menores distâncias euclidianas entre um determinado registro e o conjunto de treinamento para, assim, usar como predição a média dos valores da variável-alvo destes k vizinhos.

A fim de ilustrarmos este procedimento, suponhamos o conjunto de vetores K contendo os k registros do conjunto de treinamento mais próximos de uma dada instância de teste t:

image_2017-12-14_23-51-25

Cada vetor do conjunto K está associado a um valor real vi, que representa a sua distância ao registro de teste t. Logo, podemos escrever um vetor V contendo apenas tais valores:

image_2017-12-14_23-51-28

Assim, tendo utilizado uma função de distância conveniente para calcular cada vi (em nosso caso, a distância euclidiana), podemos efetuar uma média aritmética ou ponderada de V para predizer o valor da variável-alvo de t:

formulas knn

Abaixo, podemos observar os resultados:

Nº de Vizinhos Tipo de média RMS
5 Aritimética 110.729 +/- 3.538 0.306 +/- 0.034
5 Ponderada 110.698 +/- 3.541 0.306 +/- 0.034
20 Aritimética 105.046 +/- 3.396 0.362 +/- 0.030
20 Ponderada 105.039 +/- 3.394 0.362 +/- 0.030
50 Aritimética 103.828 +/- 3.173 0.378 +/- 0.030
50 Ponderada 103.826 +/- 3.172 0.378 +/- 0.030
100 Aritimética 103.777 +/- 3.130 0.382 +/- 0.032
100 Ponderada 103.776 +/- 3.130 0.382 +/- 0.032
200 Aritimética 104.252 +/- 3.302 0.381 +/- 0.033
200 Ponderada 104.251 +/- 3.302 0.381 +/- 0.033

 

Apesar de alguns resultados exibidos na tabela serem bastante próximos, há uma tendência a concluir que a utilização de 100 vizinhos foi a melhor escolha para o modelo. Em função de 100 ser um número consideravelmente elevado, levando a uma alta regularização do modelo, o uso de média aritmética ou ponderada não se mostrou muito influente nesta modalidade.

 

Modelo de Regressão Linear

A Regressão Linear busca predizer uma variável de saída através de uma estimativa ŷ(t) conforme calculado abaixo:

image_2017-12-14_23-51-38

em que x(t) é o vetor de variáveis de entrada e θ é o vetor de parâmetros.

Em nosso modelo, o vetor ŷ(t) representa uma estimativa para as notas de redação e x(t) é o vetor de todas as variáveis utilizadas para predizer y(t). O ajuste de parâmetros θ do modelo é realizado com o método dos mínimos quadrados, que minimiza o erro médio quadrático.

 

Modelo RMS
Regressão Linear 103.039 ± 3.238 0.386 ± 0.033

 

O modelo, apesar de não muito robusto, obteve um resultado bastante interessante, possuindo um RMS inferior aos modelos anteriores e o melhor coeficiente de determinação (R²) observado até então.

 

Modelo de Árvores de Regressão

Árvores de regressão, similares às de decisão, são formadas por nós que, com suas regras baseadas nos atributos do problema, indicam quais arestas devemos percorrer até alcançar uma folha contendo uma predição. A maior diferença é que, ao alcançarmos um nó sem filhos, o resultado obtido é um escalar, e não uma classificação.[7]

Para este modelo, utilizamos também uma técnica de poda (do inglês “pruning”), removendo seções da árvore que não contribuem tanto para a previsão e, consequentemente, diminuindo seu tamanho. Suspeitamos que tal método ajudará a árvore a generalizar melhor para novos registros, diminuindo o risco de overfitting, ou seja, de se especializar demais nos registros de treinamento.

Abaixo, incluímos um esquema de uma pequena seção da árvore que construímos, sendo possível observar as regras dos nós superiores. Os valores dos atributos, assim como nos demais modelos, estão normalizados:

image_2017-12-14_23-51-41

Abaixo, encontram-se os resultados com e sem poda:

Poda? RMS
Não 131.138 ± 4.165 0.188 ± 0.024
Sim 110.651 ± 3.845 0.303 ± 0.034

 

Como esperado, o erro quadrático médio (RMS) com poda foi consideravelmente menor. Isto sustenta a hipótese de que a poda permite uma maior generalização do modelo e, consequentemente, um menor overfitting com relação ao fold (partição) de treinamento da avaliação cruzada.

 

Modelo de Rede Neural

Um modelo de rede neural pode ser entendido como sendo um conjunto de nós (ou neurônios) alocados em camadas. Ao todo, temos a camada de entrada, representando as variáveis de input do modelo; a de saída, correspondendo às variáveis de output; e as camadas intermediárias (“escondidas”), cada uma sendo responsável por aplicar funções às saídas da camada anterior. A figura abaixo[8] ilustra uma rede neural de 2 camadas escondidas:

image_2017-12-14_23-51-45

Cada “conexão neuronal” assume um peso numérico que, aplicado à saída de um dado nó, produz um resultado que pode então ser processado pelo nó da camada seguinte. Chamamos de “funções de ativação” as relações matemáticas aplicadas pelos nós das camadas intermediárias em suas entradas, como, por exemplo, a função degrau (presente na rede perceptron[9]), a tangente hiperbólica ou a função sigmóide.

Nosso modelo foi treinado utilizando o algoritmo gradiente descendente estocástico (do inglês “stochastic gradient descent”) com backpropagation, técnica usada para calcular a contribuição do erro de cada neurônio após uma leva de dados ter sido processada[10]. Para termos mais material de análise, decidimos variar o número de camadas escondidas e registrar o resultado de cada um desses experimentos.

Em números, nossa camada de entrada possui 57 nós (devido às numerosas possibilidades das variáveis polinominais); a camada de saída possui apenas 1 (em função da variável-alvo ser uma só); enquanto nossas camadas intermediárias terão 5 ou 10 neurônios cada. Abaixo, podemos observar algumas das arquiteturas utilizadas, com 5 neurônios em cada camada escondida:

  image_2017-12-14_23-51-49image_2017-12-14_23-51-52.pngimage_2017-12-14_23-51-55 (1)

 

Nº de Camadas Interm. Nº de nós das Camadas Interm. RMS
1 5 102.947 ± 3.134 0.389 ± 0.032
1 10 102.991 +/- 3.236 0.392 +/- 0.030
2 5 103.447 ± 2.671 0.387 ± 0.028
2 10 103.336 +/- 2.862 0.393 +/- 0.029
3 5 103.735 ± 2.927 0.388 ± 0.033
3 10 103.996 +/- 2.744 0.392 +/- 0.025

 

Apesar da incerteza não nos possibilitar concluir qual configuração do modelo generaliza melhor, houve uma tendência de haver um RMS mais baixo com 1 camada intermediária. Afinal, uma grande rede neural pode ser mais suscetível a overfitting[11], o que pode ajudar a explicar o melhor desempenho da rede menor.

 

Conclusão

Modelo RMS
Previsão pela Média 131.409 ± 6.570 0
k-NN (100 vizinhos, ponderada) 103.776 +/- 3.130 0.382 +/- 0.032
Regressão Linear 103.039 ± 3.238 0.386 ± 0.033
Árvore de Regressão c/ Poda 131.138 ± 4.165 0.188 ± 0.024
Árvore de Regressão s/ Poda 110.651 ± 3.845 0.303 ± 0.034
Rede Neural (1 camada int. com 10 nós) 102.991 +/- 3.236 0.392 +/- 0.030
Rede Neural (2 camadas int. com 10 nós) 103.336 +/- 2.862 0.393 +/- 0.029
Rede Neural (3 camadas int. com 10 nós) 103.996 +/- 2.744 0.392 +/- 0.025

Apesar dos modelos executados terem atingido um erro quadrático médio (RMS) bastante aceitável, o coeficiente R² indica que os modelos não conseguiram se ajustar tão bem quanto inicialmente esperávamos. Apesar da maioria dos resultados terem sido bastante próximos, os de melhor generalização para nosso problema foram os de Redes Neurais, em especial quando utilizamos de 1 a 3 camadas intermediárias, cada uma com 10 neurônios.

No modelo de K-Vizinhos Mais Próximos, ficou clara a melhora das estatísticas de validação com o aumento do número de vizinhos até 100. Analogamente, nossa Regressão Linear superou as expectativas e generalizou melhor que nossa Árvore de Regressão, cujos resultados foram inferiores.

Acreditamos que a observação das correlações entre as variáveis do problema também foi um ponto positivo deste trabalho. A nota da prova de Linguagens e Códigos, por exemplo, possui a maior correlação positiva com a nota de redação quando comparada às demais provas, algo que faz bastante sentido. Além disso, a correlação de renda (atributo Q006) com as notas obtidas é algo que pode ser melhor explorado em estudos futuros, em especial naqueles de maior cunho social.

Por fim, esperamos que nossos resultados possam inspirar futuros cientistas de dados e cientistas sociais a continuarem trabalhando por um mundo em que a informação, transformada em conhecimento, possa levar a uma melhor análise e planejamento das políticas públicas implantadas por todo o Brasil.

 

Referências Bibliográficas

[1]  Microdados – INEP. Disponível em: <http://portal.inep.gov.br/microdados&gt;. Acessado em 15/10/2017.

[2]  ENEM 2015 | Kaggle. Disponível em: <https://www.kaggle.com/gbonesso/enem2015&gt;. Acessado em 15/10/2017.

[3]  Normalize – RapidMiner Documentation. Disponível em: <https://docs.rapidminer.com/studio/operators/cleansing/normalization/normalize.html&gt;. Acessado em 18/10/2017.

[4]  Coefficient of determination. Seção “As squared correlation coefficient”. Disponível em: <https://en.wikipedia.org/wiki/Coefficient_of_determination#As_squared_correlation_coefficient&gt;. Acessado em 25/10/2017.

[5]  Correlation and R-squared. Disponível em: <http://www.win-vector.com/blog/2011/11/correlation-and-r-squared/&gt;. Acessado em 25/10/2017.

[6]  Imagem extraída de Bias vs. Variância (Parte 2) | Eric Couto. Disponível em: <https://ericcouto.wordpress.com/2013/07/18/bias-vs-variancia-parte-2/&gt;. Acessado em 22/10/2017.

[7] Árvores de Regressão – Faculdade de Economia da Universidade do Porto. Disponível em: <https://www.fep.up.pt/docentes/pcosme/Pedagogico/Arvores%20de%20Regressao.doc&gt;. Acessado em 20/11/2017.

[8]  Imagem extraída de Uma Introdução às Redes Neurais | Cassia Yuri e Deisi Yuki. Disponível em: <http://www.din.uem.br/ia/neurais/&gt;. Acessado em 24/10/2017.

[9]  EVSUKOFF, Alexandre. Ensinando Máquinas. Capítulo “O Perceptron”, página 358.

[10]  Backpropagation – Wikipedia. Disponível em: <https://en.wikipedia.org/wiki/Backpropagation&gt;. Acessado em 25/10/2017.

[11]  Deciding What to do Next Revisited | Coursera. Disponível em: <https://www.coursera.org/learn/machine-learning/supplement/llc5g/deciding-what-to-do-next-revisited&gt;. Acessado em 13/11/2017.

 

Anúncios

Um comentário em “Modelos Preditivos de Notas de Redação do ENEM 2015

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s