domingo, 11 de outubro de 2015

ID3

Árvores de Decisão


O primeiro tópico a ser abordado aqui no blog são as árvores de decisão, sendo os mais conhecidos o algoritmo ID3 e no seu sucessor C4.5. Iremos implementar primeiramente a versão mais básica (ID3) e depois de pronto o modificaremos para que se torne o seu sucessor.

O nosso algoritmo básico constrói as árvores de decisão de uma forma top-down (de cima para baixo), fazendo uma simples pergunta: "Qual atributo deve ser usado?". Para responder isso cada atributo é testado usando um método estatístico para determinar o ganho de informação que aquele atributo gera na hora de classificar a nossa base de treinamento. Após a seleção esse atributo vira o topo da árvore e cada valor que esse atributo pode assumir vira uma folha e a base de dados é separada de acordo, o processo todo é repetido para cada folha, usando apenas os exemplos associados a ela. Iremos usar a implementação greedy desse algoritmo, pois ele nunca volta atrás para reconsiderar as escolhas feitas anteriormente.

Para a implementação de uma árvore de decisão que aceite apenas valores booleanos como saída, teremos o seguinte pseudocódigo:

IDE3 (Exemplos, atribuito_classificador, Atributos)
  • Criar a folha inicial da árvore Root
  • Se todos os objetos são positivos em Exemplos, retornar uma única folha com a saída verdadeira.
  • Se todos os objetos são negativos em Exemplos, retornar uma única folha com a saída false.
  • Se Atributos estiver vazio retornar uma única folha com a saída mais comum na base.
  • Caso contrário faça:
    • A recebe o atributo de Atributos que melhor classifica Exemplos.
    • Root recebe A
    • Para cada possível valor v de A teremos:
    • Adicionar uma nova folha a A com o valor correspondente a v.
    • Sendo X o resultado de Exemplos com os objetos que contenham v como atributo.
      • Se o X gerado for vazio:
      • Adicionar uma folha a Root com o valor mais comum da base.
    • Caso contrário:
    • ID3 (X, atribuito_classificador, Atributos – A).
  • Término.
  • Retorne Root.

Para medir qual atributo melhor classifica a base de dados vamos utilizar o cálculo de ganho de informação, você pode conferir uma descrição completa da equação nesse link.

Como todos algoritmos o ID3 possuí algumas limitações e capacidades, vamos ver abaixo algumas delas:


  • O ID3 na sua forma inicial, e a que será implementada, não possui nenhuma forma de backtracking, portanto está sujeito a convergir para soluções ótimas locais. No caso do ID3, uma solução ótima local corresponde ao único caminho considerado pelo algoritmo.
  • ID3 usa todos os exemplos do conjunto de treinamento a cada iteração, não importando o nível em que a árvore se encontra. Essa característica faz com que o ID3 seja muito menos suscetível a erros no conjunto de treinamento.
  • O ID3 mantém apenas uma única solução, o que faz com que ele não seja capaz de otimizar os resultados obtidos.
Para encerrar esse post podemos ver abaixo um exemplo de resultado obtido com o ID3:





sexta-feira, 9 de outubro de 2015

Database (Golfe|Clima)

Database (Golfe|Clima)


A base de dados de clima é uma pequena base pública com apenas 14 exemplos, que contém informações sobre qual clima é favorável a jogar ou não jogar golfe.

Data Set

Perspectiva
Temperatura
Numérica
Temperatura
Nominal

Umidade
Numérica

Umidade
Nominal

Vento
Jogar
Nublado
83
Quente
86
Alta
Não
Sim
Nublado
64
Frio
65
Normal
Sim
Sim
Nublado
72
Suave
90
Alta
Sim
Sim
Nublado
81
Quente
75
Normal
Não
Sim
Chuvoso
70
Suave
96
Alta
Não
Sim
Chuvoso
68
Frio
80
Normal
Não
Sim
Chuvoso
65
Frio
70
Normal
Sim
Não
Chuvoso
75
Suave
80
Normal
Não
Sim
Chuvoso
71
Suave
91
Alta
Sim
Não
Ensolarado
85
Quente
85
Alta
Não
Não
Ensolarado
80
Quente
90
Alta
Sim
Não
Ensolarado
72
Suave
95
Alta
Não
Não
Ensolarado
69
Frio
70
Normal
Não
Sim
Ensolarado
75
Suave
70
Normal
Sim
Sim


Esta base será usada para os algoritmos de Árvore de Decisão (ID3 e C4.5), com algumas modificações. Para o algoritmo ID3 os campos numéricos serão removidos, pois como veremos no próximo post o algoritmo não aceita valores numéricos, e para o algoritmo C4.5 os campos Nominais de temperatura e umidade serão removidos, pois são informações redundantes.

Link para a base de dados:

quinta-feira, 8 de outubro de 2015

Introdução

Introdução


O que é Inteligência Artificial?


Inteligência Artificial (IA) é um ramo da ciência da computação que se propõe a elaborar dispositivos que simulem em computador comportamentos inteligentes e simular comportamentos humanos, como por exemplo, interpretação de imagens, conversação, raciocínio lógico, aprendizado, etc.

Quais atividades a IA cobre?


  • Planejamentos
  • Classificação
  • Tomada de decisão
  • Diagnósticos
  • Sistema Especialistas
  • Visão Computacional
  • Aprendizado
  • Entre outros


Quando começou a IA?


Após o final da Segunda Guerra Mundia, algumas pessoas passaram a trabalhar com a criação de máquinas inteligentes, o matemático inglês Alan Turing provavelmente foi o pioneiro a estudar o assunto além de ter também sido um dos primeiros a perceber que era mais prático construir softwares inteligentes para controlar as máquinas do que construir máquinas inteligentes.

AI visa atingir um nível de inteligência igual a inteligência humana?


Sim, o objetivo é construir programas capazes de resolver problemas no mundo real assim como nós humanos. 

Quais tópicos serão abordados aqui no blog?


Aqui serão discutidos tópicos de Aprendizado de Máquina, suas possíveis implementações e seus usos. No futuro também pretendo mostrar algumas integrações de Aprendizado de Máquina com o Raspberry PI.

Serão colocados os códigos fontes aqui no blog?

Sim, todos os códigos serão disponibilizados aqui no blog, assim como as massas de dados utilizadas nos testes.

Em que linguagem?


Como o nome do blog sugere, todas as implementações serão feitas em Java e em alguns casos em específico também será feito em R ou Python.

Com que frequência?


Devido ao trabalho, outros compromissos e a complexidade das implementações não vou dar prazos, mas pretendo postar aqui sempre que possível.







http://www-formal.stanford.edu/jmc/whatisai/

Machine Learning - Tom Mitchell, 1997.

von Wangenheim, Christiane Gresse; von Wangenheim, Aldo. Raciocínio Baseado em Casos. Barueri, SP: Manole, 2004. Capítulo: 10: Aplicações de RBC. , 293 p. p. 227-241

Harmon, Paul; King, David. Sistemas Especialistas: A Inteligência Artificial Chega ao Mercado. Rio de Janeiro: Campus, 1988. 304 p. p. 17-23

Durkin, John. Expert Systems: Design and Development (em inglês). New York: Macmillan, 1994. 800 p. p. 28-29

Giarratano, John; Riley, Gary. Expert Systems: Principles and Programming (em inglês). 3ª ed. Boston: PWS Publishing Company, 1998. 597 p. p. 6.

http://pages.unibas.ch/LIlab/staff/tenhacken/Applied-CL/3_Systran/3_Systran.html#history

http://www.tecmundo.com.br/intel/1039-o-que-e-inteligencia-artificial-.htm