SlideShare uma empresa Scribd logo
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 grails
Natã 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 Analytics
Natã Melo
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociais
Natã Melo
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - Kafka
Natã Melo
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
Natã Melo
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps
Natã Melo
 
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4
Natã Melo
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a Distância
Natã Melo
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
Pedro J. Molina
 
MDA - Model Driven Architecture
MDA - Model Driven ArchitectureMDA - Model Driven Architecture
MDA - Model Driven Architecture
Natã 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
 
aula_00_apresentacao_programacao_python.pdf
aula_00_apresentacao_programacao_python.pdfaula_00_apresentacao_programacao_python.pdf
aula_00_apresentacao_programacao_python.pdf
andersonsoares275191
 
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
Lucas Lemos
 
GOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfGOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdf
RodolphoCesar2
 
Estrutura de Dados.pptx
Estrutura de Dados.pptxEstrutura de Dados.pptx
Estrutura de Dados.pptx
AngelaYoshitoni
 
Logica programação
Logica programaçãoLogica programação
Logica programação
FIPA
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
Rodrigo Reis
 
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
Robson Ferreira
 
Aula 1 apresentação
Aula 1   apresentaçãoAula 1   apresentação
Aula 1 apresentação
Flávia Santos
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Teste de software
Teste de softwareTeste de software
Teste de software
Rafael Sanches
 
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ção
Alexandre Duarte
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da Web
Fernando 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
 
Code Smells
Code SmellsCode Smells
Code Smells
Rodrigo Branas
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquina
parasite
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
MarcosMaozinha
 
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
Paula Santana
 

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 ...
 
aula_00_apresentacao_programacao_python.pdf
aula_00_apresentacao_programacao_python.pdfaula_00_apresentacao_programacao_python.pdf
aula_00_apresentacao_programacao_python.pdf
 
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
 

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

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (8)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

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 +