Crie um classificador binário apenas com dados positivos e não rotulados

11

Eu tenho 2 conjuntos de dados, um com instâncias positivas do que eu gostaria de detectar e outro com instâncias não identificadas. Quais métodos posso usar?

Como exemplo, suponha que desejamos entender a detecção de email de spam com base em algumas características estruturadas de email. Temos um conjunto de dados de 10000 emails de spam e um conjunto de dados de 100000 emails para os quais não sabemos se são spam ou não.

Como podemos resolver esse problema (sem rotular manualmente nenhum dado não marcado)?

O que podemos fazer se tivermos informações adicionais sobre a proporção de spam nos dados não rotulados (ou seja, se estimamos que entre 20-40% dos 100.000 e-mails não rotulados são spam)?

nassimhddd
fonte
1
Na postagem devem ser adicionadas as tags semi-supervisionadas e pu-learning. Essas tags ainda não existem e atualmente não posso criá-las.
Dal
@ DanLevin Sim, [tag: aprendizado semi-supervisionado] faz sentido. Adicionado :) Não tenho certeza com a parte de aprendizado de pu (pelo menos não estou ciente disso), para que alguém possa fazer isso!
Dawny33
1
A aprendizagem por UP é um caso específico de aprendizagem semi-supervisionada. É menos comum (7K resultados no Google) do que semi-supervisionado (298K resultados no Google) que esta questão seja PU (o conjunto de dados rotulado é apenas positivo). Enquanto o tópico é discutido na academia (por exemplo, cs.uic.edu/~liub/NSF/PSC-IIS-0307239.html ), é possível que essa pergunta fique sozinha com essa tag por um bom tempo.
Dal

Respostas:

7

Minha sugestão seria tentar criar algum tipo de cluster nos dados não rotulados que se aproximam um pouco de um conjunto de dados rotulado. A lógica é mais ou menos a seguinte:

  • Você tem algum vetor de recurso para representar seus documentos
  • Com base nesse vetor de recurso, você pode criar vários agrupamentos diferentes, com métodos de agrupamento difusos, brutos ou baseados em classe
  • Sabendo como é um exemplo positivo, você pode avaliar rapidamente a semelhança geral de um cluster com seu cluster positivo
  • Sabendo que realmente deve haver apenas dois clusters, você pode ajustar os hiperparâmetros no seu método de clustering para que as duas métricas acima estejam cada vez mais próximas da satisfação
  • Com os dois clusters, você tem uma aproximação aproximada de um conjunto de dados rotulado, que pode ser usado como um corpus padrão de prata para treinar seu modelo

Espero que faça sentido, se você estiver procurando especificamente por algoritmos de agrupamento, alguns dos quais eu pessoalmente aprecio que possam ser bons nesse cenário são o FLAME e o tsne . Como alternativa, observar a espetacular biblioteca gensim em python ajudará você a percorrer um longo caminho até o cluster que você está procurando.

Espero que ajude e faça sentido, deixe um comentário se você tiver alguma dúvida.

indico
fonte
Obrigado pela sua resposta. Entendo direito: seu ponto de partida é mesclar os 2 conjuntos de dados?
Nassimhddd
@ cafe876 Essa é certamente uma maneira de começar e, em seguida, tentar recriar basicamente um cluster que se aproxima do original.
Indico
3

Seu problema pertence à estrutura do aprendizado da UP (apenas pontos positivos, muitos não identificados).

Também se aproxima das estruturas mais comuns da aprendizagem semi-supervisionada (poucos pontos positivos e negativos, muitos não identificados).

Existem muitos documentos de pesquisa que você pode consultar em campo.

Um método clássico em campo, que também foi testado em spam, como no seu caso, é o treinamento conjunto. No treinamento conjunto, você constrói dois alunos independentes (por exemplo, um baseado no conteúdo do e-mail e outro baseado no esquema de envio) e usa os resultados de um para treinar o outro e vice-versa.

DaL
fonte
2

Treine 2 modelos generativos, um para cada conjunto de dados (somente spam, spam mais presunto), que fornecerão a probabilidade de que um ponto de dados seja extraído da mesma distribuição de probabilidade dos dados de treinamento. Atribua emails como spam ou ham com base em qual modelo fornece a maior probabilidade do documento decorrente dos dados de treinamento usados ​​para treiná-lo. Os exemplos de modelos generativos são os auto-codificadores de RBM (nesse caso, qual modelo tem o menor erro de reconstrução). É provável que também existam alguns modelos generativos bayesianos que atribuam uma probabilidade a um ponto de dados com base em alguns dados de treinamento.

A melhor opção, porém, seria reservar um segundo conjunto de dados contendo apenas presunto. Isso lhe dará maior precisão na classificação. Supondo que uma proporção menor de spam para impedir emails, isso não deve ser muito difícil. Você pode até usar o Mechanical Turk se não tiver tempo ou recursos (ou estagiários / estudantes de graduação ou outra mão-de-obra barata).

Simon
fonte
Obrigado pela sua resposta. É um ótimo exemplo do que os modelos generativos podem fazer e os modelos discriminativos não.
Nassimhddd