1. Universidade Federal de Campina Grande
Unidade Acadêmica de Sistemas e Computação
Curso de Bacharelado em Ciência da Computação
Projeto de Inteligência Artificial I
Java Style Grading
An Classification Solution based on Machine Learning
Augusto Queiroz, Márcio Saraiva, Natã Venâncio
{augusto.macedo; marcio.saraiva; nata.melo}
@ccc.ufcg.edu.br
22/11/2011
2. Definição do problema
Estilo de codificação é um tópico presente nas disciplinas
iniciais de programação, no entanto a correção dos
professores não seguem um padrão. E a grande
quantidade de alunos obriga que haja uma automatização
desse processo. Como resolver esse impasse?
3. Solução para o problema
Desenvolver um sistema capaz de aprender o critério de
notas de estilo de um dado professor. E, após o
treinamento, ser capaz de, dado um código Java de um
aluno sugerir uma nota com relação ao estilo de
codificação.
4. Restrições de Escopo
• O código Java é pequeno
• Exercícios semanais
• Resolvidos por alunos principiantes em programação
• As notas devem ser discretizadas
• Classificação
• Material necessário:
• O professor deve ceder um conjunto de dados de
treinamento aleatório e representativo da população
(Código + Nota)
5. Conceitos de IA Envolvidos
• Técnicas de aprendizagem
o Redes Neurais como Multilayer Perceptron
o Rede Bayesianas
o Árvores de Decisão
• Conceitos de Análise de Classificadores
o Precisão
o Cobertura
o Curva ROC
o Overfitting
o Underfitting
o ...
6. Solução Implementada
1ª Fase:
1. Estudo das ferramentas Checkstyle e Metrics
2. Desenvolvimento do Parser para Automatização da geração do
vetor de características
3. Arrecadação de Dados de Treinamento
O resultado dessa fase foi uma arquivo no formato .csv com
as métricas extraídas dos códigos recebidos.
7. Solução Implementada
2ª Fase
• Estudo da ferramenta Weka
• Seleção do Vetor de Características
O resultado dessa fase foi o estudo do ambiente Weka GUI e seus
potenciais e uma pré-estudo das técnicas de seleção das
características
8. Solução Implementada
3ª Fase
• Experimentação e Análise com as seguintes variações
• Estrutura de Classificação: Multilayer perceptron X Bayes Network
• Nenhuma Seleção de Atributos x CsfSubsetEval x PCA
• Laboratórios em separado e Laboratórios unidos
• Porcentagem de dados para o conjunto de treinamento do conjunto
dados totais
• 3 Classes de Notas x 5 classes de Notas
• Implementação da Ferramenta em Java (Integração de módulos)
O resultado dessa fase foi o aprendizado com os experimentos e um
programa Java para treinar e classificar classificadores que reproduzam o
critério de qualidade de código de um determinado professor.
12. Resultados Obtidos
• E, principalmente, na Fase 3
• Análise dos Experimentos
• Com todos os atributos
13. Resultados Obtidos
• E, principalmente, na Fase 3
• Análise dos Experimentos
• Com seleção pelo algoritmo CsfSubsetEval
14. Resultados Obtidos
• E, principalmente, na Fase 3
• Análise dos Dados
Csf – Lab3
Csf – Lab4 Csf – Lab5
15. Resultados Obtidos
• O CsfSubsetEval foi utilizado como base para as seguintes
conclusões
• Em todos apenas um atributo selecionado!
• Lab3: Os dados de treino são variados, as notas de estilo também e,
principalmente, tem pouquíssimos dados.
• Causando Underfitting.
• Lab4: Os dados de treino variam pouco e são poucos e, principalmente, as
notas são as mesmas em quase todo o conjunto
• Causando Overfitting
• Lab5: Os dados de treino são mais variados e as notas são mais variadas e
novamente, tem poucos dados.
• Causando Underfitting