Como você aplica o SMOTE na classificação de texto?
13
Técnica de superamostragem de minoria sintética (SMOTE) é uma técnica de superamostragem usada em um problema de conjunto de dados desequilibrado. Até agora, tenho uma ideia de como aplicá-lo em dados estruturados genéricos. Mas é possível aplicá-lo no problema de classificação de texto? Qual parte dos dados você precisa exagerar? Já existe outra pergunta sobre isso, mas ela não tem resposta. Onde posso aprender a começar com isso?
Na verdade, a PNL é uma das áreas mais comuns em que a reamostragem de dados é necessária, pois existem muitas tarefas de classificação de texto que lidam com problemas desequilibrados (pense em filtragem de spam, detecção de comentários ofensivos, classificação de artigos etc.). Mas o SMOTE parece ser problemático aqui por alguns motivos:
O SMOTE trabalha no espaço de recursos. Isso significa que a saída do SMOTE não é um dado sintético que é um representante real de um texto dentro de seu espaço de recurso.
Por um lado, o SMOTE trabalha com o KNN e, por outro lado, os espaços de recursos para o problema da PNL são muito grandes. O KNN falhará facilmente nessas enormes dimensões.
Para que eu possa propor duas abordagens:
Não me importo com a representação de texto real de novas amostras sintéticas que, suponho, devem estar bem. Você precisa equilibrar a distribuição do seu classificador e não do leitor de dados de texto. Portanto, aplique o SMOTE como tradicional (no entanto, geralmente uso a solução 2 abaixo para não garantir o resultado!) Com algumas etapas de redução de dimensionalidade.
1) Vamos supor que você queira fazer duplicar suas amostras de dados da classe menor usando 3-NN. Ignore as classes principais e mantenha apenas amostras secundárias.
2) Para cada ponto de amostra no espaço de recurso, escolha 5 vizinhos mais próximos. Em seguida, escolha três deles aleatoriamente (não é desnecessário complicado? Se eu não quisesse explicar o algoritmo original, diria que basta escolher três vizinhos!)
3) Para cada dimensão, calcule a distância entre a amostra e os vizinhos e multiplique-a em um número aleatório entre 0-1 e adicione-o ao valor original da amostra nessa dimensão. (este parágrafo complicado significa simplesmente para cada dimensão escolher um valor aleatório entre a amostra original e o vizinho!)
Mas eu costumo fazer outra amostragem excessiva que está no texto (mais intuitiva) e é meio que SMOTE.
k = 2
n números aleatórios de acordo com essa distribuição. É usado para determinar o tamanho do novo documento sintético.
Obrigado pela resposta, mas o SMOTE pode ser aplicado para amostras se elas forem representadas usando a codificação one-hot? ou eles devem ser representados de outra maneira?
precisa saber é o seguinte
Olá Kasra, você pode compartilhar alguma implementação relacionada às etapas mencionadas
Payal Bhatia 20/01
2
Se você deseja adicionar mais texto / frases a dados de transição, pode usar combinações de palavras pré-treinadas. Modelos pré-treinados como fornecem representação vetorial de palavras de todas as palavras do dicionário. Ele também fornece palavras 'most_smiliar'.
Você pode simplesmente usar uma sentença de amostra e gerar novas amostras, fazendo permutações de cada palavra com suas palavras mais TOP_N semelhantes.
por exemplo, se sua sentença tiver 3 palavras e se você escolher as 3 mais semelhantes para cada palavra, poderá aumentar a amostra em 27 vezes.
Se você deseja adicionar mais texto / frases a dados de transição, pode usar combinações de palavras pré-treinadas. Modelos pré-treinados como fornecem representação vetorial de palavras de todas as palavras do dicionário. Ele também fornece palavras 'most_smiliar'.
Você pode simplesmente usar uma sentença de amostra e gerar novas amostras, fazendo permutações de cada palavra com suas palavras mais TOP_N semelhantes.
por exemplo, se sua sentença tiver 3 palavras e se você escolher as 3 mais semelhantes para cada palavra, poderá aumentar a amostra em 27 vezes.
fonte