Classificador para rótulos de classe incertos

11

Digamos que eu tenha um conjunto de instâncias com rótulos de classe associados. Não importa como essas instâncias foram rotuladas, mas quão certa é a associação de classe. Cada instância pertence a exatamente uma classe. Digamos que eu possa quantificar a certeza de cada associação de classe com um atributo nominal que vai de 1 a 3 (muito certo a incerto, respectivamente).

Existe algum tipo de classificador que leva em consideração essa medida de certeza e, se sim, está disponível no kit de ferramentas WEKA?

Imagino que essa situação ocorra com bastante frequência, por exemplo, quando as instâncias são classificadas por seres humanos que nem sempre são completamente certas. No meu caso, tenho que classificar imagens e, às vezes, uma imagem pode pertencer a mais de uma classe. Se isso acontecer, dou uma alta incerteza à classe, mas ainda a classifico com apenas uma classe.

Ou existem outras abordagens para esse problema, sem um classificador especializado? Por exemplo, apenas fazendo "certas" classificações para treinamento? Receio que, neste caso, ocorram mais erros de classificação porque os casos "fronteiriços" não são cobertos.

wnstnsmth
fonte
11
Cada entrada pertence a exatamente uma classe? Ou é possível que alguma entrada pertença à classe 12 com certeza 1 e à classe 34 com certeza 2?
precisa saber é o seguinte
Cada entrada pertence a exatamente uma classe, neste caso.
wnstnsmth

Respostas:

8

Antes de tudo, como o @Marc Claesen já explicou, a classificação semi-supervisionada é uma das técnicas para cuidar da situação em que você sabe que as classes são realmente distintas, mas não tem certeza de qual classe o caso realmente pertence.

No entanto, também existem situações relacionadas, nas quais a "realidade" não é tão clara e a suposição de ter classes realmente distintas não é atendida: casos de fronteira podem ser uma realidade "física" (veja os artigos sobre aplicativos a seguir) onde encontramos essa condição).

Há uma suposição crucial para classificadores semi-supervisionados que você precisa ter certeza de que seja atendida: a suposição de que, no espaço de recursos, os limites de classe acompanham a baixa densidade da amostra . Isso é chamado de suposição de cluster.
Mesmo que a realidade subjacente aos seus dados tenha classes distintas, seu conjunto de dados pode ter casos desproporcionalmente mais limitados: por exemplo, se sua técnica de classificação é direcionada à classificação de casos difíceis, enquanto os casos claros e fáceis não são de interesse e seus dados de treinamento já refletem isso situação.

apenas fazendo "certas" classificações para treinamento? Receio que, neste caso, ocorram mais erros de classificação porque os casos "fronteiriços" não são cobertos.

Concordo plenamente com você que excluir os casos limítrofes geralmente é uma má idéia: ao remover todos os casos difíceis, você acaba com um problema artificialmente fácil. IMHO é ainda pior que a exclusão de casos limítrofes geralmente não para com o treinamento do modelo, mas os casos limítrofes também são excluídos dos testes, testando o modelo apenas com casos fáceis. Com isso, você nem perceberia que o modelo não funciona bem com casos limítrofes.

Aqui estão dois artigos que escrevemos sobre um problema que difere do seu, pois em nossa aplicação também a realidade pode ter classes "mistas" (uma versão mais geral do seu problema: a incerteza nas etiquetas de referência também é abordada).

Os links vão para a página do projeto de um pacote R que eu desenvolvi para fazer os cálculos de desempenho. Existem outros links para a página oficial da web e para meus manuscritos. Embora eu não tenha usado o Weka até agora, entendo que uma interface para o R esteja disponível .


considerações práticas:

  • Embora a abordagem de copiar e rotular diferentemente seja direta, ela não funciona bem com todos os classificadores e implementações na prática. Por exemplo, no AFAIK, não há como saber libSVMo ajuste por validação cruzada que todas as cópias de cada ponto de dados precisam ser mantidas na mesma dobra de validação cruzada. Assim, libSVMa sintonia provavelmente produziria um modelo massivamente super ajustado.
  • Também para regressão logística, descobri que muitas implementações não permitiam os rótulos parciais de associação que eu precisava.
  • A implementação que usei para os artigos acima é na verdade uma RNA sem camada oculta, usando a logística como função de link sigmoidal ( nnet::multinom).
cbeleites descontentes com o SX
fonte
Sua primeira consideração prática, embora verdadeira, não se aplica libsvmem particular. Os libsvmautores fornecem uma versão alternativa de cada versão em que a classificação ponderada por instância é possível, evitando esse problema completamente. São esses tipos de coisas que me levam a geralmente usam algoritmos bibliotecas diretamente, em vez de wrappers como Weka / scipy / ... csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instances
Marc Claesen
@ MarcClaesen: obrigado - eu não tinha visto isso. Mas você não precisaria fornecer duas instâncias do mesmo caso, uma com ponderação com 1/3 da classe A e a outra com 2/3 da classe B? De qualquer forma, não precisar fornecer muitas cópias dos casos claros tornará o ajuste menos problemático (para meus dados, de qualquer maneira, eu tenho que fazer divisões de ajuste externamente, pois tenho uma estrutura de dados "hierárquica" com várias medidas dos casos reais )
cbeleites infeliz com SX
@cbeiteles Quando uma instância pode pertencer a várias classes, você precisará fornecê-la várias vezes, mesmo com essa ponderação de instância. Eu não tinha considerado essa possibilidade.
Marc Claesen
6

Essa é uma das generalizações de classificação abordadas na aprendizagem semi-supervisionada. Se você tem uma medida de certeza, pode usar abordagens que permitam ponderar as instâncias de treinamento. Quanto maior a certeza, maior o peso da instância correspondente. Exemplos de tais abordagens incluem SVM ponderado por instância e regressão logística.

Tenho certeza que a weka tem implementações desses algoritmos. Se tudo mais falhar, experimente várias instâncias das instâncias com alta certeza. Você pode usar essa abordagem para SVM ou LR tradicional.

Exemplo: SVM

Se não me engano, o weka possui interfaces com o LIBSVM . O LIBSVM permite resolver o SVM com ponderação de classe em todas as suas liberações e o SVM com ponderação de instância em versões especiais de cada liberação. Vou assumir que o weka não suporta o último (que é o que você precisa).

O SVM ponderado por classe minimiza a seguinte função objetivo: com o hiperplano de separação no espaço de recursos, as variáveis ​​de folga (que modelam a classificação incorreta do treinamento) e e o conjunto de vetores de suporte pertencentes à classe positiva e negativa, respectivamente. Usando os pesos e você pode atribuir diferentes penalidades de classificação incorreta entre as classes.w ξ P N C p o s C n e g

minw,ξw2+CposiPξi+CnegiNξi,
wξPNCposCneg

Com base na sua pergunta, parece que você preferiria usar 6 pesos diferentes (2 classes 3 níveis de certeza). Você pode conseguir isso para muitas abordagens duplicando amostras dos pontos com alta certeza.×

Por exemplo, em termos de SVM, o uso da mesma instância de dados duas vezes produz uma solução idêntica à duplicação do valor associado . Essa é uma maneira muito fácil de atribuir altas penalidades de classificação incorreta a determinadas instâncias de dados. Você pode seguir a mesma abordagem para regressão logística.C

Marc Claesen
fonte
(+1) é isso aí! Duplicando instâncias com diferentes rótulos e pesos de instância (também conhecidos como certezas de rótulo), também é possível aplicar algoritmos como Florestas Aleatórias, Naive Bayes etc. Rapidminer (concorrente da weka) faz. Ao definir a certeza como 1, pode-se até modelar problemas de etiqueta múltipla "nítidos".
amigos estão dizendo sobre steffen
Você está correto, o WEKA suporta LIBSVM, mas não suporta ponderação de instância. A ideia de duplicar instâncias é muito boa, eu acho, especialmente porque todo aluno "tradicional" pode lidar com isso.
precisa saber é o seguinte
2

A dificuldade do problema depende muito de quão errôneas podem ser as etiquetas incertas. Se os rótulos incertos estiverem corretos, digamos, 90% das vezes, você provavelmente poderá se safar usando apenas a regressão logística. Por outro lado, se os rótulos estiverem errados quase metade do tempo, talvez seja necessário recorrer a algumas técnicas especiais. Aqui está uma facada que fiz em um problema muito semelhante. (Tivemos várias observações por rótulo, mas, caso contrário, a configuração é bastante semelhante.)

Stefan Wager
fonte
-5

Tive uma breve passagem pelo reconhecimento e classificação de imagens.

Florestas aleatórias é uma técnica fácil de usar. Eu o implementei no R, ele deve estar disponível no Weka também. A facilidade de uso supera a precisão da previsão. Se você tiver um conjunto de treinamento grande o suficiente, ele poderá classificar vários rótulos.

Ele funcionou para reconhecer dígitos manuscritos muito bem, mas se suas imagens forem mais complexas, apenas uma avaliação lhe dirá se funciona bem.

Arun Jose
fonte
4
O que isso tem a ver com rótulos de classe incertos?
Wnstnsmth