Concrete Logo
Hamburger button

Testinho 5 – resposta

  • Blog
  • 12 de Abril de 2012
Share

[fblike]

 

Vou examinar o testinho 5, aquele da quadrilha do Drummnond. Alguém ainda lembra?

Recomendo que prepare-se. Pegue um café e se abolete com calma de mineiro. Este papo vai longe.

 

Recapitulando:

O problema era usar uma tabela de dados sobre o clima e saber se aconteceria jogo de volley em um determinado sábado.

O tal sábado do testinho 5 era de Sol, temperatura baixa, umidade alta e com vento.

 

1) É mais provável que eles joguem nesse Sábado ou as chances são contra?

A resposta desta pergunta pode vir da resposta da segunda pergunta:

2) Qual a probabilidade de jogarem e qual a probabilidade de não jogarem?

Para responder fiz a tabela abaixo para ajudar no raciocínio. Contei se jogaram ou não para cada atributo correspondente ao do tal sábado. Depois obtive a fração de cada atributo em relação ao total de jogos que aconteceram ou não:
 

 

Possibilidade de haver jogo (Sol,frio,úmido,vento):

    Sim = 2/9 x 4/9 x 3/9 x 3/9 x 9/14 = 0,007055

    Não = 3/5 x 1/5 x 4/5 x 3/5 x 5/14 = 0,02057

Probabilidade de haver jogo

    Sim = 0,007055 / (0,007055 + 0,02057) = 0,2554 = 25,54%

    Não = 0,02057 / (0,007055 + 0,02057) = 0,7446 = 74,46%

Pela menor probabilidade do sim, como o Fábio Miranda disse nos comentários (*), o mais provável é que NÃO tenha jogo. Ao calcular também e probabilidade do não, matei a pergunta 2.

 

Mas não era para resolver usando a fórmula de Bayes?

Não falei de Bayes mas se examinarem as contas encontrarão semelhança com as fórmulas mostradas em Naive Bayes, resposta do Testinho 4

Sendo H uma hipótese e E uma evidência, a fórmula de Bayes é: Pr[H|E] = ( Pr[E|H] x Pr[H] )   /   Pr[E]

A evidência E é a combinação dos valores dos atributos (Sol,frio,úmido,vento)

Desprezando o denominador que desaparece quando se normaliza e aplicando a fórmula:

E por aí a vida segue…

 

Tem casos que não são tão simples

Nem sempre a vida é assim tão fácil. Caso um atributo fosse zero, a probabilidade daria zero. Para contornar esse caso de frequência zero, o matemático francês Pierre Laplace sugeriu adicionar 1 em cada conta em uma técnica que ficou conhecida por Laplace estimator.

Na prática não é necessário adicionar 1, pode ser adicionado um valor como uma pequena constante qualquer <ponha aqui sua letra grega favorita>.

A fórmula de Bayes fornece uma abordagem simples e dá ótimos resultados mesmo quando comparados com classificadores bem mais sofisticados. É uma técnica bem rápida para classificar documentos (usando uma forma modificada do Naive Bayes chamada de multinominal Naive Bayes).

Só é preciso entender quando se pode usar e quando se pode esperar dificuldades. Isto vou deixar para ser estudado nos livros. Um que eu estudei e recomendo é o Data Mining: Practical Machine Learning Tools and Techniques (Third Edition). Foi de lá que tirei boa parte do material que está aqui (na minha tabela, a temperatura da penúltima linha está diferente).

 

Nessa área de machine learning há uma regrinha que volta e meia aparece: “Always try the simple things first”. É nela que vou me fixar para solucionar a pergunta 3:

 

3) A partir da tabela seria possível escrever uma regra que pudesse ser aplicada a todos os Sábados? Como ficaria?

Sim, é possível. E relativamente fácil.

Há modos mais complicados como montar árvores de decisão com abordagem “divide and conquer” mas a tentativa mais simples e mais barata é tentar achar regras de classificação simples a partir de um conjunto de instâncias.

Assim faz o procedimento 1 R (1-rule) que na verdade conduz a uma árvore de decisão mas de um só nível.

A idéia é:

    Escrever regras para um único atributo e testar desvios baseado nele.
    Cada novo desvio (branch) corresponde a um valor diferente do atributo.
    A melhor classificação de cada desvio corresponde à classe que ocorre com mais frequência nos dados.
    Então a taxa de erro de cada regra pode ser determinada, isto é, o número de instâncias que não tem a classe majoritária.
    O 1R escolhe o atributo com o menor total de erros.

A mesma coisa pode dita na forma de pseudo código:

Da tabela com as características de tempo mostrada no testinho 5, vamos aplicar o pseudo código (entre parêntesis observações que me ajudaram a entender):

Regra 1:
Atributo tempo

    Sol = não, erro = 2/5 (para classe Sol, “não” é o que aparece mais, porém erra 2 vezes)
    Nublado = sim, erro = 0/4 (para classe nublado não tem escolha)
    Chuva = sim, erro = 2/5 (para classe chuva, o mais frequente é o sim que erra 2 vezes)
    Total de erros = 4/14

Regra 2:
Atributo temperatura

    Alta = não, erro = 2/3 (temperatura Alta = quente só aparece 3 vezes)
    Boa = sim, erro = 2/6
    Frio = sim, erro = 1/5
    Total de erros = 5/14

Regra 3:
Atributo umidade

    Alta = não, erro = 3/7
    OK = sim, erro = 1/7
    Total de erros = 4/14

Regra 4:
Atributo vento

    Não = sim, erro = 2/8 (Não tem vento – sim, jogaram)
    Sim = não, erro = 3/6
    Total de erros = 5/14

O procedimento 1R escolhe os conjuntos de regras pelo menor total de erros (como as regras 1 e 3).

Se fosse usar estas regras, só pela regra 1 já eliminaria a possibilidade de jogo em sábado de Sol.

 

Confesso, parece meio confuso. Mas funciona. No livro que indiquei está mais claro. Eu só quiz deixar claro que é possível.

Analisando as regras deduzidas da tabela, fica a impressão de que tem mais chances de acontecerem jogos em dias nublados ou chuvosos do que com Sol. Estes dados devem vir de observações de algum esporte de ginásio fechado ao invés do parque do Ibirapuera como falei no enunciado do teste. Sorry…

 

Outra observação é que tudo que fiz aqui na mão poderia ser feito usando o computador. E nem precisaríamos escrever o código. Brevemente repetirei a solução aqui mostrada usando o Weka. O que é isto? Aguardem.

 

Prometo que o próximo teste será de resposta rápida… mesmo que o enunciado possa eventualmente ser longo.

Até lá.