SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
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
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

Mais conteúdo relacionado

Destaque

MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...Natã Melo
 
Minicurso grails
Minicurso grailsMinicurso grails
Minicurso grailsNatã Melo
 
[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google Analytics[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google AnalyticsNatã Melo
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociaisNatã Melo
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaNatã Melo
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google MapsNatã Melo
 
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Natã Melo
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a DistânciaNatã Melo
 
MDA - Model Driven Architecture
MDA - Model Driven ArchitectureMDA - Model Driven Architecture
MDA - Model Driven ArchitectureNatã Melo
 

Destaque (11)

MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
 
Minicurso grails
Minicurso grailsMinicurso grails
Minicurso grails
 
[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google Analytics[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google Analytics
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociais
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - Kafka
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps
 
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a Distância
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
 
MDA - Model Driven Architecture
MDA - Model Driven ArchitectureMDA - Model Driven Architecture
MDA - Model Driven Architecture
 

Semelhante a Java Style Grading

Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...Roberto Lotufo
 
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011Lucas Lemos
 
GOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfGOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfRodolphoCesar2
 
Logica programação
Logica programaçãoLogica programação
Logica programaçãoFIPA
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoRobson Ferreira
 
Planode Aula
Planode AulaPlanode Aula
Planode Aulasofteam
 
Defesa de Artigo: "GPU-NB: A Fast CUDA -based Implementation of Naive Bayes"
Defesa de Artigo: "GPU-NB: A Fast CUDA -based  Implementation of Naive Bayes"Defesa de Artigo: "GPU-NB: A Fast CUDA -based  Implementation of Naive Bayes"
Defesa de Artigo: "GPU-NB: A Fast CUDA -based Implementation of Naive Bayes"Andrew Edberg
 
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?Paulo Correia
 
Metodologia da Pesquisa Científica: Introdução
Metodologia da Pesquisa Científica:  IntroduçãoMetodologia da Pesquisa Científica:  Introdução
Metodologia da Pesquisa Científica: IntroduçãoAlexandre Duarte
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebFernando Hideo Fukuda
 
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...Rodrigo Moraes
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquinaparasite
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaPaula Santana
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesCristiano Caetano
 

Semelhante a Java Style Grading (20)

Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
 
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011
dBest - Um Framework para Avaliação de Desempenho de Banco de Dados - SBBD 2011
 
GOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfGOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdf
 
Estrutura de Dados.pptx
Estrutura de Dados.pptxEstrutura de Dados.pptx
Estrutura de Dados.pptx
 
Logica programação
Logica programaçãoLogica programação
Logica programação
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
 
Aula 1 apresentação
Aula 1   apresentaçãoAula 1   apresentação
Aula 1 apresentação
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Defesa de Artigo: "GPU-NB: A Fast CUDA -based Implementation of Naive Bayes"
Defesa de Artigo: "GPU-NB: A Fast CUDA -based  Implementation of Naive Bayes"Defesa de Artigo: "GPU-NB: A Fast CUDA -based  Implementation of Naive Bayes"
Defesa de Artigo: "GPU-NB: A Fast CUDA -based Implementation of Naive Bayes"
 
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?
Mapa conceitual associado à imagens: um recurso que favorece a aprendizagem?
 
Metodologia da Pesquisa Científica: Introdução
Metodologia da Pesquisa Científica:  IntroduçãoMetodologia da Pesquisa Científica:  Introdução
Metodologia da Pesquisa Científica: Introdução
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da Web
 
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...
Uma Investigação Empírica e Comparativa da Aplicação de RNAs ao Problema de M...
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquina
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testes
 

Mais de Natã Melo

Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Natã Melo
 
Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Natã Melo
 
Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Natã Melo
 
Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de FutebolNatã Melo
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem PythonNatã Melo
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisNatã Melo
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSNatã Melo
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão MúltiplaNatã Melo
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por ModelosNatã Melo
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest ManagerNatã Melo
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteNatã Melo
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCGNatã Melo
 

Mais de Natã Melo (17)

Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3
 
Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2
 
Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1
 
Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de Futebol
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes Sociais
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINS
 
Terremotos
TerremotosTerremotos
Terremotos
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão Múltipla
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por Modelos
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest Manager
 
MetaCG
MetaCG MetaCG
MetaCG
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligente
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCG
 
Python aula 1
Python aula 1Python aula 1
Python aula 1
 
Python aula 2
Python aula 2Python aula 2
Python aula 2
 

Java Style Grading

  • 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.
  • 9. Resultados Obtidos • Na Fase 1… • Parser dos arquivos extraídos do Metrics e Checkstyle
  • 10. Resultados Obtidos • Na Fase 1… • Parser dos arquivos extraídos do Metrics e Checkstyle
  • 11. Resultados Obtidos • Na Fase 2… • Estudo da ferramenta Weka GUI
  • 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
  • 16. Resultados Obtidos Java Style Grading versão 1.0 +