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)?
classification
semi-supervised-learning
nassimhddd
fonte
fonte
Respostas:
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:
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.
fonte
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.
fonte
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).
fonte