java style grading
TRANSCRIPT
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
Universidade Federal de Campina Grande
Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação
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?
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.
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)
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 ...
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.
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
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.
Resultados Obtidos • Na Fase 1…
• Parser dos arquivos extraídos do Metrics e Checkstyle
Resultados Obtidos • Na Fase 1…
• Parser dos arquivos extraídos do Metrics e Checkstyle
Resultados Obtidos • Na Fase 2…
• Estudo da ferramenta Weka GUI
Resultados Obtidos • E, principalmente, na Fase 3
• Análise dos Experimentos • Com todos os atributos
Resultados Obtidos • E, principalmente, na Fase 3
• Análise dos Experimentos • Com seleção pelo algoritmo CsfSubsetEval
Resultados Obtidos • E, principalmente, na Fase 3
• Análise dos Dados
Csf – Lab3
Csf – Lab4 Csf – Lab5
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
Resultados Obtidos
Java Style Grading
versão 1.0
+
Demonstração Prática