SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
CIÊNCIA DA COMPUTAÇÃO - FCG

Sistemas de Informação Inteligentes

  Aula 07: Raciocínio baseado em casos


       Prof.º Msc. Sidney Roberto de Sousa
O que é?

   Utilização de experiências passadas para
    entender e resolver problemas novos
   Um ”raciocinador” se recorda de uma situação
    passada similar a atual e usa esta experiência
    para resolver o problema atual




                     Ciência da Computação - FCG     2
Exemplo
   ”Uma anfitriã está planejando um jantar para um conjunto de pessoas que
inclui, entre outras, várias pessoas que não comem carne vermelha ou aves -
onde um destes também é alérgico a derivados de leite, vários homens que
adoram carne vermelha e batatas e, por fim, sua amiga Ana.
   É época de tomates, logo ela quer utilizá-los como ingrediente principal no
jantar. Como ela é a única responsável pela organização do jantar, ela se recorda
dos seguintes fatos:
   Houve uma vez, no verão, em que eu servi uma torta de tomates - feita com
muçarela, tomates, mostarda, manjericão e pimenta – como prato principal.
Nesta ocasião, os meus convidados eram vegetarianos. Esta torta foi muito
prática de fazer! E deliciosa! Porém, eu não posso servir esta torta para a
Eliana, pois ela é intolerante à lactose.
   A Eliana me ensinou a adaptar algumas receitas que tinham queijo como
ingrediente, substituindo-o por tofú. Apesar disso, eu não sei se a torta de
tomates ainda seria deliciosa com esta substituição de ingredientes...”
                               Ciência da Computação - FCG                          4
Exemplo
  ”A anfitriã decide não servir a torta de tomates e continua a planejar o seu jantar.
Como é verão, ela opta por servir peixe grelhado, julgando que este prato seria uma boa
pedida para a ocasião. Porém, agora ela se lembra de mais um fato:
  Na última vez em que eu tentei servir peixe para a Ana, ela não quis comê-lo. Eu tive
que preparar uns cachorros-quentes de última hora...
   A princípio, isto a sugere a não servir o peixe grelhado, mas mesmo assim ela ainda
insiste a servir este prato. Assim, ela pensa se existe ou não uma forma de servir peixe a
Ana, de uma forma que ela aprecie comê-lo:
  Eu me lembro de ter visto ela comer peixe em um restaurante. Que tipo de peixe eu
devo servir a ela? O peixe que eu a servi da última vez foi preparado com a cabeça e
tudo... O peixe que ela comeu no restaurante parecia mais com um bife do que um
peixe. Eu preciso servir a ela um peixe com sabor e aparência mais próximos aos de
carne vermelha ou de aves do que a de peixe. Talvez peixe-espada dê certo. Será que a
Ana vai comer peixe-espada? Peixe-espada é mais parecido com frango e eu sei que ela
gosta de frango.”


                                  Ciência da Computação - FCG                                5
Exemplo

   Neste exemplo, anfitriã estava prestes a escolher a
    torta de tomates como prato principal, pois este prato
    era um forte candidato à boa apreciação culinária de
    seus convidados
   Porém, sua amiga Ana – com o seu gosto mais
    exigente – acaba atrapalhando indiretamente os
    planos da anfitriã
   Esta, por sua vez, utiliza exemplos e contra-exemplos
    de uma premissa (”Ana não come peixe”) para tentar
    derivar uma interpretação da premissa que resiste ao
    escrutínio
                       Ciência da Computação - FCG           6
Raciocínio Baseado em Casos (CBR)

   A anfitriã hipotética emprega CBR a fim de
    planejar um jantar
   No CBR, o ”raciocinador” se recorda de
    situações anteriores similares à atual e as
    utiliza para ajudar a resolver novos problemas
   No exemplo anterior, os casos relembrados são
    utilizados para sugerir meios de se resolver um
    novo problema


                    Ciência da Computação - FCG      7
CBR é comum em nossas vidas




          Ciência da Computação - FCG   8
CBR é comum em nossas vidas




          Ciência da Computação - FCG   9
CBR é comum em nossas vidas




          Ciência da Computação - FCG   10
CBR é comum em nossas vidas




          Ciência da Computação - FCG   11
Uso da experiência

   Geralmente, a segunda vez em que se tenta
    resolver um determinado tipo de problema é
    mais fácil do que a primeira → nos lembramos
    da primeira vez e da solução aplicada
   Somos mais competentes na segunda vez pois
    recordamos de nossos erros os evitamos
   Também somos mais competentes na segunda
    vez pois nos recordamos de soluções práticas
    e eficazes utilizadas no passado

                   Ciência da Computação - FCG     12
Qualidade do CBR

A qualidade de um raciocinador baseado em
casos depende de quatro coisas
   Suas experiências passadas
   Sua habilidade em entender situações novas em
    termos destas experiências
   Sua adaptabilidade na adaptação
   Sua adaptabilidade na avaliação




                   Ciência da Computação - FCG      13
Processo de CBR para computação

CBR foi formalizado para raciocínio
computadorizado em um processo de 4 etapas:
    Recuperação
    Reuso
    Revisão
    Retenção




                   Ciência da Computação - FCG   14
Reuso

   Mapeia-se a solução de casos anteriores para
    o problema alvo
   Tal operação pode exigir a adaptação da
    solução do caso antigo para o caso novo
   Ex.: quando a anfitriã pensava em servir
    novamente torta de tomates aos seus
    convidados, ela teria que substituir o queijo
    muçarela por tofú → dado que Ana é
    intolerante à lactose

                     Ciência da Computação - FCG    16
Revisão

   Uma vez que uma solução antiga foi mapeada
    à situação alvo, testa-se a nova solução no
    mundo real ou em uma simulação
   Caso necessário, revisa-se a nova solução
   Ex.: Digamos que ao substituir a muçarela por
    tofú, este último não harmoniza bem com o
    sabor dos tomates, fazendo com que a torta
    tenha um sabor desagradável. Assim, deve-se
    revisar a receita, tomando alguma decisão a
    respeito da inclusão do tofú na torta
                    Ciência da Computação - FCG     17
Retenção

   Uma vez que a solução foi adaptada com
    sucesso ao problema alvo, a experiência
    resultante deve ser armazenada como um novo
    caso na memória → vai para a base de casos
   Ex.: Digamos que a anfitriã serve o seu peixe
    grelhado aos seus convidados no jantar e estes
    adoram o prato servido, o achando saboroso.
    Assim, a anfitriã agora sabe que este prato é
    uma boa pedida para se servir em um jantar
    com amigos no verão
                    Ciência da Computação - FCG   18
CBR com Prolog

   Considere um sistema de diagnósticos para um
    consultório médico
   O médico atende a vários pacientes no
    decorrer do tempo, onde cada paciente
    apresenta sintomas variados
   Para cada paciente, o trabalho do médico é
    mapear seus sintomas para um mal/doença
   Assim, tendo conhecimento do mal/doença do
    paciente, ele pode receitar um tratamento a
    este paciente
                    Ciência da Computação - FCG   19
Base de fatos (casos)

diagnostico('olhos avermelhados', 'conjuntivite').
diagnostico('olhos avermelhados', 'gripe').
diagnostico('coriza', 'gripe').
diagnostico('dor de cabeça', 'gripe').
diagnostico('nariz escorrendo', 'gripe').
diagnostico('febre', 'infecção').
diagnostico('dor de cabeça', 'infecção').
diagnostico('nariz escorrendo', 'infecção').


                          Ciência da Computação - FCG   20
Recuperando diagnósticos

1 ?- diagnostico('olhos avermelhados', X).
X = 'conjuntivite' ;
X = 'gripe' ;
No




                       Ciência da Computação - FCG   21
Cálculo simples de diagnóstico

calcula_diagnostico([], D).
calcula_diagnostico([S|L1], D) :-
   diagnostico(S, D),
   calcula_diagnostico(L1, D).




                   Ciência da Computação - FCG   22
CBR com Prolog

   Assim, o médico pode utilizar suas
    experiências de diagnósticos para criar novos
    diagnósticos
   Para que o CBR funcione, cada novo
    diagnóstico sucessivo deve ser adicionado à
    base de fatos → feedback relevance
   A partir da base de fatos, diferentes regras
    podem ser criadas a fim de responder
    perguntas mais complexas

                     Ciência da Computação - FCG    23
Críticas ao CBR

   Alguns cientistas argumentam que o CBR é
    uma abordagem que aceita evidências
    ”anedotais” como princípio principal de
    operação
   Sem experiências relevantes, a generalização
    de soluções pode levar a respostas incorretas
   CBR vs relevância estatística



                    Ciência da Computação - FCG     24
Vantagens do CBR
   Permite ao raciocinador propor soluções a problemas
    rapidamente
   Permite ao raciocinador propor soluções a domínios que
    ele não compreende totalmente
   Fornece ao raciocinador meios para avaliar soluções
    quando não se tem métodos algorítmicos para resolver o
    problema alvo
   Casos são particularmente úteis para utilização na
    interpretação de conceitos abertos e mal definidos
   Casos ajudam um raciocinador a concentrar o seu
    raciocínio em partes importantes de um problema ao
    apontar as características relevantes de um problema
                        Ciência da Computação - FCG          25
Bibliografia

KOLODNER, J. L. An Introduction to Case-Based Reasoning.
Artificial Intelligence Review, Vol. 6, pages 3-34, 1992.
Case-Based Reasoning. Disponível em http://tinyurl.com/2bxrmd.
Acessado em 31/10/2012.




                       Ciência da Computação - FCG           26

Contenu connexe

En vedette

Engenharia de Computação - Jornada Profissional
Engenharia de Computação - Jornada ProfissionalEngenharia de Computação - Jornada Profissional
Engenharia de Computação - Jornada ProfissionalEvandro Saroka
 
Tutorial de placa de circuito impresso (pci)
Tutorial de placa de circuito impresso (pci)Tutorial de placa de circuito impresso (pci)
Tutorial de placa de circuito impresso (pci)Valter Schmaltz
 
Ciência da computação (organização de computadores)
Ciência da computação (organização de computadores)Ciência da computação (organização de computadores)
Ciência da computação (organização de computadores)Wesley Purificação
 
Como vender uma empresa de serviços profissionais 2.0
Como vender uma empresa de serviços profissionais 2.0Como vender uma empresa de serviços profissionais 2.0
Como vender uma empresa de serviços profissionais 2.0Ricardo Jordão Magalhaes
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaSidney Roberto
 
Intodução a pci
Intodução a pciIntodução a pci
Intodução a pciIFPB
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...Leinylson Fontinele
 

En vedette (20)

Aula02 editoracao eletronica
Aula02 editoracao eletronicaAula02 editoracao eletronica
Aula02 editoracao eletronica
 
Engenharia de Computação - Jornada Profissional
Engenharia de Computação - Jornada ProfissionalEngenharia de Computação - Jornada Profissional
Engenharia de Computação - Jornada Profissional
 
Tutorial de placa de circuito impresso (pci)
Tutorial de placa de circuito impresso (pci)Tutorial de placa de circuito impresso (pci)
Tutorial de placa de circuito impresso (pci)
 
Ciência da computação (organização de computadores)
Ciência da computação (organização de computadores)Ciência da computação (organização de computadores)
Ciência da computação (organização de computadores)
 
Listas (parte 2 de 3)
Listas (parte 2 de 3)Listas (parte 2 de 3)
Listas (parte 2 de 3)
 
Como vender uma empresa de serviços profissionais 2.0
Como vender uma empresa de serviços profissionais 2.0Como vender uma empresa de serviços profissionais 2.0
Como vender uma empresa de serviços profissionais 2.0
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
 
Curso de Java #13 - Estruturas de Repetição (Parte 3)
Curso de Java #13 - Estruturas de Repetição (Parte 3)Curso de Java #13 - Estruturas de Repetição (Parte 3)
Curso de Java #13 - Estruturas de Repetição (Parte 3)
 
Curso de Java #11 - Estruturas de Repetição (Parte 1)
Curso de Java #11 - Estruturas de Repetição (Parte 1)Curso de Java #11 - Estruturas de Repetição (Parte 1)
Curso de Java #11 - Estruturas de Repetição (Parte 1)
 
Curso de Java #12 - Estruturas de Repetição (Parte 2)
Curso de Java #12 - Estruturas de Repetição (Parte 2)Curso de Java #12 - Estruturas de Repetição (Parte 2)
Curso de Java #12 - Estruturas de Repetição (Parte 2)
 
Unix - Sistema Operacional
Unix - Sistema OperacionalUnix - Sistema Operacional
Unix - Sistema Operacional
 
Aula2009.11.17 portaslogicas
Aula2009.11.17 portaslogicasAula2009.11.17 portaslogicas
Aula2009.11.17 portaslogicas
 
MySQL #06 - Modificando Estrutura ALTER TABLE
MySQL #06 - Modificando Estrutura ALTER TABLEMySQL #06 - Modificando Estrutura ALTER TABLE
MySQL #06 - Modificando Estrutura ALTER TABLE
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Curso MySQL #04 - Melhorando banco de dados
Curso MySQL #04 - Melhorando banco de dadosCurso MySQL #04 - Melhorando banco de dados
Curso MySQL #04 - Melhorando banco de dados
 
Curso MySQL #03 - Criando um Banco de Dados MySQL
Curso MySQL #03 - Criando um Banco de Dados MySQLCurso MySQL #03 - Criando um Banco de Dados MySQL
Curso MySQL #03 - Criando um Banco de Dados MySQL
 
Intodução a pci
Intodução a pciIntodução a pci
Intodução a pci
 
Curso MySQL #07 - Manipulando Registros DELETE UPDATE
Curso MySQL #07 - Manipulando Registros DELETE UPDATECurso MySQL #07 - Manipulando Registros DELETE UPDATE
Curso MySQL #07 - Manipulando Registros DELETE UPDATE
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
 

Plus de Sidney Roberto

Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stackSidney Roberto
 
Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerdSidney Roberto
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBSidney Roberto
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVSidney Roberto
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVSidney Roberto
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQSidney Roberto
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoSidney Roberto
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonSidney Roberto
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaSidney Roberto
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQSidney Roberto
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidSidney Roberto
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroSidney Roberto
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação ISidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Sidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em JavaSidney Roberto
 

Plus de Sidney Roberto (20)

Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerd
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDB
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IV
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IV
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de Trabalho
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com Python
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiro
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Fatores Humanos
Fatores HumanosFatores Humanos
Fatores Humanos
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em Java
 
Classes e Objetos
Classes e ObjetosClasses e Objetos
Classes e Objetos
 

Raciocínio baseado em casos (CBR

  • 1. CIÊNCIA DA COMPUTAÇÃO - FCG Sistemas de Informação Inteligentes Aula 07: Raciocínio baseado em casos Prof.º Msc. Sidney Roberto de Sousa
  • 2. O que é?  Utilização de experiências passadas para entender e resolver problemas novos  Um ”raciocinador” se recorda de uma situação passada similar a atual e usa esta experiência para resolver o problema atual Ciência da Computação - FCG 2
  • 3. Exemplo ”Uma anfitriã está planejando um jantar para um conjunto de pessoas que inclui, entre outras, várias pessoas que não comem carne vermelha ou aves - onde um destes também é alérgico a derivados de leite, vários homens que adoram carne vermelha e batatas e, por fim, sua amiga Ana. É época de tomates, logo ela quer utilizá-los como ingrediente principal no jantar. Como ela é a única responsável pela organização do jantar, ela se recorda dos seguintes fatos: Houve uma vez, no verão, em que eu servi uma torta de tomates - feita com muçarela, tomates, mostarda, manjericão e pimenta – como prato principal. Nesta ocasião, os meus convidados eram vegetarianos. Esta torta foi muito prática de fazer! E deliciosa! Porém, eu não posso servir esta torta para a Eliana, pois ela é intolerante à lactose. A Eliana me ensinou a adaptar algumas receitas que tinham queijo como ingrediente, substituindo-o por tofú. Apesar disso, eu não sei se a torta de tomates ainda seria deliciosa com esta substituição de ingredientes...” Ciência da Computação - FCG 4
  • 4. Exemplo ”A anfitriã decide não servir a torta de tomates e continua a planejar o seu jantar. Como é verão, ela opta por servir peixe grelhado, julgando que este prato seria uma boa pedida para a ocasião. Porém, agora ela se lembra de mais um fato: Na última vez em que eu tentei servir peixe para a Ana, ela não quis comê-lo. Eu tive que preparar uns cachorros-quentes de última hora... A princípio, isto a sugere a não servir o peixe grelhado, mas mesmo assim ela ainda insiste a servir este prato. Assim, ela pensa se existe ou não uma forma de servir peixe a Ana, de uma forma que ela aprecie comê-lo: Eu me lembro de ter visto ela comer peixe em um restaurante. Que tipo de peixe eu devo servir a ela? O peixe que eu a servi da última vez foi preparado com a cabeça e tudo... O peixe que ela comeu no restaurante parecia mais com um bife do que um peixe. Eu preciso servir a ela um peixe com sabor e aparência mais próximos aos de carne vermelha ou de aves do que a de peixe. Talvez peixe-espada dê certo. Será que a Ana vai comer peixe-espada? Peixe-espada é mais parecido com frango e eu sei que ela gosta de frango.” Ciência da Computação - FCG 5
  • 5. Exemplo  Neste exemplo, anfitriã estava prestes a escolher a torta de tomates como prato principal, pois este prato era um forte candidato à boa apreciação culinária de seus convidados  Porém, sua amiga Ana – com o seu gosto mais exigente – acaba atrapalhando indiretamente os planos da anfitriã  Esta, por sua vez, utiliza exemplos e contra-exemplos de uma premissa (”Ana não come peixe”) para tentar derivar uma interpretação da premissa que resiste ao escrutínio Ciência da Computação - FCG 6
  • 6. Raciocínio Baseado em Casos (CBR)  A anfitriã hipotética emprega CBR a fim de planejar um jantar  No CBR, o ”raciocinador” se recorda de situações anteriores similares à atual e as utiliza para ajudar a resolver novos problemas  No exemplo anterior, os casos relembrados são utilizados para sugerir meios de se resolver um novo problema Ciência da Computação - FCG 7
  • 7. CBR é comum em nossas vidas Ciência da Computação - FCG 8
  • 8. CBR é comum em nossas vidas Ciência da Computação - FCG 9
  • 9. CBR é comum em nossas vidas Ciência da Computação - FCG 10
  • 10. CBR é comum em nossas vidas Ciência da Computação - FCG 11
  • 11. Uso da experiência  Geralmente, a segunda vez em que se tenta resolver um determinado tipo de problema é mais fácil do que a primeira → nos lembramos da primeira vez e da solução aplicada  Somos mais competentes na segunda vez pois recordamos de nossos erros os evitamos  Também somos mais competentes na segunda vez pois nos recordamos de soluções práticas e eficazes utilizadas no passado Ciência da Computação - FCG 12
  • 12. Qualidade do CBR A qualidade de um raciocinador baseado em casos depende de quatro coisas  Suas experiências passadas  Sua habilidade em entender situações novas em termos destas experiências  Sua adaptabilidade na adaptação  Sua adaptabilidade na avaliação Ciência da Computação - FCG 13
  • 13. Processo de CBR para computação CBR foi formalizado para raciocínio computadorizado em um processo de 4 etapas:  Recuperação  Reuso  Revisão  Retenção Ciência da Computação - FCG 14
  • 14. Reuso  Mapeia-se a solução de casos anteriores para o problema alvo  Tal operação pode exigir a adaptação da solução do caso antigo para o caso novo  Ex.: quando a anfitriã pensava em servir novamente torta de tomates aos seus convidados, ela teria que substituir o queijo muçarela por tofú → dado que Ana é intolerante à lactose Ciência da Computação - FCG 16
  • 15. Revisão  Uma vez que uma solução antiga foi mapeada à situação alvo, testa-se a nova solução no mundo real ou em uma simulação  Caso necessário, revisa-se a nova solução  Ex.: Digamos que ao substituir a muçarela por tofú, este último não harmoniza bem com o sabor dos tomates, fazendo com que a torta tenha um sabor desagradável. Assim, deve-se revisar a receita, tomando alguma decisão a respeito da inclusão do tofú na torta Ciência da Computação - FCG 17
  • 16. Retenção  Uma vez que a solução foi adaptada com sucesso ao problema alvo, a experiência resultante deve ser armazenada como um novo caso na memória → vai para a base de casos  Ex.: Digamos que a anfitriã serve o seu peixe grelhado aos seus convidados no jantar e estes adoram o prato servido, o achando saboroso. Assim, a anfitriã agora sabe que este prato é uma boa pedida para se servir em um jantar com amigos no verão Ciência da Computação - FCG 18
  • 17. CBR com Prolog  Considere um sistema de diagnósticos para um consultório médico  O médico atende a vários pacientes no decorrer do tempo, onde cada paciente apresenta sintomas variados  Para cada paciente, o trabalho do médico é mapear seus sintomas para um mal/doença  Assim, tendo conhecimento do mal/doença do paciente, ele pode receitar um tratamento a este paciente Ciência da Computação - FCG 19
  • 18. Base de fatos (casos) diagnostico('olhos avermelhados', 'conjuntivite'). diagnostico('olhos avermelhados', 'gripe'). diagnostico('coriza', 'gripe'). diagnostico('dor de cabeça', 'gripe'). diagnostico('nariz escorrendo', 'gripe'). diagnostico('febre', 'infecção'). diagnostico('dor de cabeça', 'infecção'). diagnostico('nariz escorrendo', 'infecção'). Ciência da Computação - FCG 20
  • 19. Recuperando diagnósticos 1 ?- diagnostico('olhos avermelhados', X). X = 'conjuntivite' ; X = 'gripe' ; No Ciência da Computação - FCG 21
  • 20. Cálculo simples de diagnóstico calcula_diagnostico([], D). calcula_diagnostico([S|L1], D) :- diagnostico(S, D), calcula_diagnostico(L1, D). Ciência da Computação - FCG 22
  • 21. CBR com Prolog  Assim, o médico pode utilizar suas experiências de diagnósticos para criar novos diagnósticos  Para que o CBR funcione, cada novo diagnóstico sucessivo deve ser adicionado à base de fatos → feedback relevance  A partir da base de fatos, diferentes regras podem ser criadas a fim de responder perguntas mais complexas Ciência da Computação - FCG 23
  • 22. Críticas ao CBR  Alguns cientistas argumentam que o CBR é uma abordagem que aceita evidências ”anedotais” como princípio principal de operação  Sem experiências relevantes, a generalização de soluções pode levar a respostas incorretas  CBR vs relevância estatística Ciência da Computação - FCG 24
  • 23. Vantagens do CBR  Permite ao raciocinador propor soluções a problemas rapidamente  Permite ao raciocinador propor soluções a domínios que ele não compreende totalmente  Fornece ao raciocinador meios para avaliar soluções quando não se tem métodos algorítmicos para resolver o problema alvo  Casos são particularmente úteis para utilização na interpretação de conceitos abertos e mal definidos  Casos ajudam um raciocinador a concentrar o seu raciocínio em partes importantes de um problema ao apontar as características relevantes de um problema Ciência da Computação - FCG 25
  • 24. Bibliografia KOLODNER, J. L. An Introduction to Case-Based Reasoning. Artificial Intelligence Review, Vol. 6, pages 3-34, 1992. Case-Based Reasoning. Disponível em http://tinyurl.com/2bxrmd. Acessado em 31/10/2012. Ciência da Computação - FCG 26