O problema que estou enfrentando é categorizar textos curtos em várias classes. Minha abordagem atual é usar frequências de termo ponderadas tf-idf e aprender um classificador linear simples (regressão logística). Isso funciona razoavelmente bem (cerca de 90% da macro F-1 no conjunto de testes, quase 100% no conjunto de treinamento). Um grande problema são as palavras não vistas / n-gramas.
Estou tentando melhorar o classificador adicionando outros recursos, por exemplo, um vetor de tamanho fixo calculado usando semelhanças de distribuição (conforme calculado pelo word2vec) ou outros recursos categóricos dos exemplos. Minha idéia era apenas adicionar os recursos aos recursos de entrada esparsos do pacote de palavras. No entanto, isso resulta em pior desempenho no conjunto de teste e treinamento. Os recursos adicionais, por si só, fornecem cerca de 80% de F-1 no conjunto de teste, para que não sejam lixo. Escalar os recursos também não ajudou. Meu pensamento atual é que esse tipo de recurso não se mistura bem com o pacote (esparso) de recursos de palavras.
Portanto, a pergunta é: supondo que os recursos adicionais forneçam informações adicionais, qual é a melhor maneira de incorporá-los? Poderia treinar classificadores separados e combiná-los em algum tipo de trabalho de conjunto (isso provavelmente teria a desvantagem de que nenhuma interação entre os recursos dos diferentes classificadores poderia ser capturada)? Existem outros modelos mais complexos que devo considerar?
fonte
Respostas:
Se bem entendi, você tem basicamente duas formas de recursos para seus modelos. (1) dados de texto que você representou como um pacote esparso de palavras e (2) recursos densos mais tradicionais. Se for esse o caso, existem 3 abordagens comuns:
TruncatedSVD
) em seus dados esparsos para torná-los densos e combine os recursos em uma única matriz densa para treinar seus modelos.hstack
em uma única matriz esparsa para treinar seus modelos.Pipeline
se desejar).Todas as três abordagens são válidas e têm seus próprios prós e contras. Pessoalmente, acho (1) tipicamente o pior porque é, relativamente falando, extremamente lento. Também acho que (3) geralmente é o melhor, sendo suficientemente rápido e resultando em previsões muito boas. Obviamente, você também pode fazer uma combinação deles, se estiver disposto a fazer um conjunto mais extenso.
Quanto aos algoritmos que você usa, eles podem essencialmente se encaixar nessa estrutura. A regressão logística apresenta um desempenho surpreendentemente bom na maioria das vezes, mas outros podem se sair melhor dependendo do problema em questão e de quão bem você os ajusta. Eu sou parcial com os GBMs, mas o resultado é que você pode tentar quantos algoritmos desejar e até mesmo fazer conjuntos simples e ponderados de suas previsões quase sempre levam a uma solução geral melhor.
fonte
Os modelos lineares simplesmente adicionam seus recursos multiplicados pelos pesos correspondentes. Se, por exemplo, você tiver 1000 recursos esparsos, apenas 3 ou 4 estão ativos em cada instância (e os outros são zeros) e 20 recursos densos que não sejam zeros, é bem provável que recursos densos aproveitem ao máximo o impacto enquanto recursos esparsos adicionará apenas um pouco de valor. Você pode verificar isso examinando os pesos dos recursos por algumas instâncias e como eles influenciam a soma resultante.
Uma maneira de corrigi-lo é abandonar o modelo aditivo. Aqui estão alguns modelos candidatos.
O SVM é baseado na separação de hiperplanos. Embora o hiperplano seja o modelo linear em si, o SVM não resume seus parâmetros, mas tenta dividir o espaço de recursos da maneira ideal. Dado o número de recursos, eu diria que o SVM linear deve funcionar bem, enquanto kernels mais complicados tendem a superestimar os dados.
Apesar do nome, Naive Bayes é um modelo estatístico bastante poderoso que mostrou bons resultados para a classificação do texto. Também é flexível o suficiente para capturar desequilíbrios na frequência de recursos esparsos e densos, então você definitivamente deve experimentá-lo.
Finalmente, florestas aleatórias podem funcionar como um bom método de conjunto neste caso. A randomização garantirá que diferentes tipos de recursos (esparsos / densos) sejam usados como nós de decisão primários em diferentes árvores. As árvores de RF / decisão também são boas para inspecionar os próprios recursos; portanto, vale a pena observar sua estrutura de qualquer maneira.
Observe que todos esses métodos têm suas desvantagens que podem transformá-los em lixo no seu caso. Combinar recursos esparsos e densos não é uma tarefa muito bem estudada; portanto, deixe-nos saber qual dessas abordagens funciona melhor para o seu caso.
fonte