Primeiro, deixe-me dizer que estou um pouco fora da minha profundidade aqui; portanto, se essa pergunta precisar ser reformulada ou encerrada como duplicada, informe-me. Pode ser que eu não tenha o vocabulário adequado para expressar minha pergunta.
Estou trabalhando em uma tarefa de processamento de imagem na qual identifico recursos em uma imagem e os classifico com base em suas propriedades, incluindo forma, tamanho, escuridão, etc. Tenho bastante experiência com a parte de processamento de imagem, mas acho que Eu poderia melhorar os métodos usados para classificar os recursos.
No momento, defino limites para cada um dos parâmetros medidos e, em seguida, classifico os recursos de acordo com uma lógica simples, com base nos limites que o recurso ultrapassou. Por exemplo (as propriedades e os agrupamentos reais são mais complexos, mas estou tentando simplificar partes irrelevantes do meu projeto para esta pergunta), digamos que estou agrupando recursos nos grupos "Grande e Escuro", "Grande e Leve" e pequeno". Em seguida, um recurso estará em "Big and Dark" iff (tamanho ( A )> sizeThreshold) e (darkness ( A )> darknessThreshold).
O objetivo é que a classificação concorde com a classificação feita por um ser humano no nível de especialista, para que eu possa definir os limites para produzir a melhor correspondência entre os agrupamentos feitos pelo ser humano e pelo computador em algum conjunto de teste e depois espero que a classificação funcione bem com novos dados.
Isso já está funcionando muito bem, mas vejo um modo de falha específico que acho que pode ser corrigido. Digamos que o recurso seja conhecido por pertencer a "Grande e Escuro". O ser humano o classificou dessa maneira porque, embora pouco tenha sido grande o suficiente, estava muito escuro, o que compensava um pouco a falta de "grandeza". Meu algoritmo falharia em classificar esse recurso corretamente, porque a classificação é baseada em lógica binária rígida e exige que todos os limites sejam ultrapassados.
Eu gostaria de melhorar essa falha fazendo com que meu algoritmo imite melhor o processo guiado por humanos, no qual uma deficiência em um parâmetro pode ser compensada por uma abundância de outro. Para fazer isso, eu gostaria de pegar cada uma das propriedades básicas dos meus recursos e convertê-las em algum tipo de pontuação que seria um preditor do grupo ao qual o recurso pertence. Pensei em várias maneiras de fazer isso, mas na maior parte são idéias ad hoc, baseadas na minha formação em cálculo vetorial e física. Por exemplo, considerei tratar cada recurso como um vetor no espaço ND das propriedades do recurso e calcular a projeção de cada recurso ao longo de determinados vetores, cada qual medindo o grau em que um recurso pertence ao grupo.
Tenho certeza de que existe uma técnica mais rigorosa e melhor estabelecida para fazer esse tipo de coisa, mas meu histórico é relativamente fraco em análises estatísticas, por isso estou procurando um empurrão na direção certa. Mesmo o nome de uma técnica ou um link para um livro seria útil.
TL; DR: Quais técnicas são úteis na classificação de objetos com base em um grande número de parâmetros descritivos?
fonte
Respostas:
Existem muitos classificadores lineares disponíveis que podem fazer isso, incluindo SVM, LDA (análise discriminante linear), redes neurais lineares e muitos outros. Eu começaria executando o SVM linear porque funciona bem em muitos casos e pode tolerar dados limitados de treinamento. Também existem muitos pacotes em muitos ambientes (como Matlab e R), para que você possa experimentá-lo facilmente. A desvantagem do SVM é que ele pode ser computacionalmente pesado; portanto, se você precisar aprender muitas aulas, pode ser menos apropriado.
Em relação à terminologia: o que você chamou de 'conjunto de testes' geralmente é chamado de 'conjunto de treinamento' neste contexto, e o que você chamou de 'novos dados' é chamado de 'conjunto de testes'.
Para um livro, eu li "reconhecimento de padrões", de Duda, Hart e Stork. O primeiro capítulo é uma introdução muito boa para iniciantes.
fonte