terça-feira, 10 de fevereiro de 2009

Nota acerca de Espaço de Características

Nestes últimos dias um problema tem me rondado da seguinte forma: dois amigos me indagaram (quase no mesmo dia) sobre problemas relacionados a representação do espaço de características e as consequências de uma má representação nos dados de treinamento.
Pensei cá comigo um exemplo bem simples de uma só dimensão*, vamos lá:
Suponha que desejamos fazer um classificador para prever, com base apenas em uma pesagem, se o animal pesado trata-se ou não de um elefante.
Agora imagine que, no dia do levantamento da base de dados para treinamento (na verdade seriam precisas duas bases de dados, uma para treinamento e outra para validação, mas isto é 'pano' para outro post) só levam, dos exemplos negativos (chamados assim por corresponderem a exemplos para os quais o classificador deve gerar um NAO como saída),  animais de pequeno porte, como pequenos macacos, gatos, cachorros...
Poderiamos escrever nossa base como (em Kg)**:
Positiva = {3750, 4500, 6000, 3000, 5300, 4200, 5000, 1501}
Negativa = {22, 15, 17, 30, 50, 55, 10, 5, 23, 37, 45, 51}
Fácil ver que este é um problema bem fácil de ser resolvido. Para o problema, independente do método, suponhamos que temos um threshold (limiar) no classificador e que seu valor deve ser encontrado através de um algoritmo de aprendizado qualquer. Aplicando o problema a base de treinamento, digamos que o algoritmo de aprendizado gere como limiar o valor 723 (escolhi este valor por ser a mediana entre o maior valor da base negativa, 55,  e o menor da base positiva, 1501)***. Com uma função simples de classificação do tipo "se valor maior que limiar, SIM (é um elefante); caso contrário, NAO" podemos observar que na base de treinamento o classificador teria 100% de acerto facilmente.
Não sei se está dando para perceber aonde quero chegar mas imagine se colocam um sistema na portaria de recepção de um zoológico separando os elefantes dos outros animais com base neste classificador. Assim que chegarem rinocerontes, búfalos e até algumas zebras ou mesmo felinos avantajados o sistema erraria feio.
Pode-se ainda argumentar: ao menos ele separou os animais mais pesados dos mais leves. Contra isto observe que o algoritmo de aprendizado poderia ter gerado como saída o limiar 56 que continuaria dando 100% na base positiva e agora sim tornando-se um sistema catastrófico.
Aonde quero chegar? Uma má representação da realidade pode gerar grandes problemas durante a utilização do sistema em ambientes reais. Levando para o campo dos sistemas 'não-inteligentes', seria como se fizéssemos apenas os testes que passam em um sistema, deixando de fora os mais problemáticos.
Por isso, tome extremo cuidado na hora de representar o problema, treine com a maior quantidade de dados (válidos) possível e, assim que adquirir, use e abuse da sua experiência!
Observações finais:
  1. Você pode sugerir aumentar o número de dimensões para resolver o problema, mas isto pode apenas maquiá-lo;
  2. Este problema é dificílimo de ser visualizado em dimensões maiores, imaginem como observar isto em um sistema de processamento de áudio, de imagens ou ainda pior, com 10, 100, 1000 dimensões;
  3. Nada melhor que um intenso e qualitativo estudo do problema em questão para evitar estas armadilhas;
  4. Existem ferramentas estatísticas de tratamento de dados que podem ajudar numa possível análise de dados ainda no pré-processamento, mas nenhuma delas resolve o problemas 100%.
Abraço e até a próxima!

* dimensão em problemas de reconhecimento de padrões é cada uma das caracteríticas que você utiliza para 'representar' o seu indivíduo. Ou seja, se você representa uma pessoa por seu peso e altura, este é um problema de dimensão 2, ou ainda bi-dimensional, 2D... Facilmente, o espaço pode ser pensado como um plano cartesiano e o espaço de características como um sub-plano desse espaço (altura entre zero e 10 metros e peso entre zero e 500 Kgs? Inclusive estes valores limitantes podem gerar vários problemas quando mal escolhidos, mas falarei disto em outro post).
** segundo o Wikipedia elefantes podem nascer com 90 Kg e ter ate 12 toneladas.
*** Este valor pode ser questionado mas muitos dos bons algoritmos de hoje chegariam a este valor como ótimo dentro da base apresentada.

Nenhum comentário:

Postar um comentário