Classificador para apenas uma classe

10

Em uma classificação simples, temos duas classes: classe-0 e classe-1. Em alguns dados, só tenho valores para a classe 1, portanto, nenhum para a classe 0. Agora, estou pensando em criar um modelo para modelar os dados da classe 1. Portanto, quando novos dados chegam, esse modelo é aplicado aos novos dados e encontra uma probabilidade de dizer qual a probabilidade desses novos dados se encaixarem nesse modelo. Comparando com um limite, posso filtrar dados inadequados.

Minhas perguntas são:

  • Essa é uma boa maneira de trabalhar com esses problemas?
  • Um classificador RandomForest pode ser usado para este caso? Preciso adicionar dados artificiais para a classe 0, que espero que o classificador considere ruído?
  • Alguma outra idéia pode ajudar nesse problema?
Amante de Big Data
fonte

Respostas:

9

Isso é possível usando algumas abordagens e é certamente uma abordagem válida. Não tenho certeza se florestas aleatórias podem fazer isso, no entanto.

Gerar dados artificiais significa fazer suposições extras, não faça isso se não for necessário.

Uma técnica que você pode querer examinar é o chamado SVM de uma classe. Ele faz exatamente o que você está procurando: tenta criar um modelo que aceite os pontos de treinamento e rejeite pontos de outras distribuições.

Algumas referências sobre SVM de uma classe:

  1. Schölkopf, Bernhard, et al. "Estimando o suporte de uma distribuição de alta dimensão". Computação neural 13.7 (2001): 1443-1471. Este artigo introduziu a abordagem.

  2. Tax, David MJ e Robert PW Duin. "Suporte à descrição dos dados vetoriais." Machine learning 54.1 (2004): 45-66. Uma maneira diferente de fazer a mesma coisa, provavelmente mais intuitiva.

Ambas as abordagens demonstraram ser equivalentes. A primeira estima um hiperplano que separa todos os dados de treinamento da origem no espaço de recurso com a distância máxima. O segundo estima uma hiperesfera com raio mínimo no espaço de recurso que contém as instâncias de treinamento.

O SVM de uma classe está disponível em muitos pacotes SVM, incluindo libsvm , scikit -learn (Python) e kernlab (R).

Marc Claesen
fonte
3
Tese de doutorado de imposto "classificação One-classe - Concept-aprendizagem na ausência de contra-exemplos" também está disponível: homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites infeliz com SX
Curto e preciso! (+1) "Ambas as abordagens mostraram-se equivalentes." - você pode especificar uma referência / citação para isso? É scholar.google.de/...
Boern
6

Deixe-me adicionar mais algumas possibilidades:

A idéia geral é que definir um limite para a distância da classe permite que você decida se uma amostra pertence ou não a essa classe e independentemente de haver outras classes ou não.

  • Distância Mahalanobis => QDA
  • O SIMCA (Modelagem Independente Suave de Analogias de Classe) usa distâncias no espaço de pontuação PCA.
    O SIMCA é comum na literatura quimiométrica (embora raramente seja realmente configurado de uma classe).
  • (Os SVMs já são tratados na resposta de @Marc Claesen)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) tem um capítulo inteiro sobre a classificação de uma classe.

cbeleites descontentes com o SX
fonte