El problema que estoy abordando es categorizar textos cortos en varias clases. Mi enfoque actual es utilizar frecuencias de término ponderadas tf-idf y aprender un clasificador lineal simple (regresión logística). Esto funciona razonablemente bien (alrededor del 90% de macro F-1 en el conjunto de prueba, casi el 100% en el conjunto de entrenamiento). Un gran problema son las palabras invisibles / n-gramas.
Estoy tratando de mejorar el clasificador agregando otras características, por ejemplo, un vector de tamaño fijo calculado usando similitudes de distribución (según lo calculado por word2vec) u otras características categóricas de los ejemplos. Mi idea era simplemente agregar las características a las características de entrada dispersas de la bolsa de palabras. Sin embargo, esto resulta en un peor rendimiento en el conjunto de prueba y entrenamiento. Las características adicionales por sí mismas dan alrededor del 80% de F-1 en el conjunto de prueba, por lo que no son basura. Escalar las características no ayudó también. Mi opinión actual es que este tipo de características no se mezclan bien con las características de la bolsa (escasa) de palabras.
Entonces la pregunta es: suponiendo que las características adicionales brinden información adicional, ¿cuál es la mejor manera de incorporarlas? ¿Podría entrenar clasificadores separados y combinarlos en algún tipo de trabajo de conjunto (esto probablemente tendría el inconveniente de que no podría capturarse ninguna interacción entre las características de los diferentes clasificadores)? ¿Hay otros modelos más complejos que debería considerar?
Respuestas:
Si entiendo correctamente, esencialmente tiene dos formas de características para sus modelos. (1) Datos de texto que ha representado como una escasa bolsa de palabras y (2) características densas más tradicionales. Si ese es el caso, hay 3 enfoques comunes:
TruncatedSVD
) en sus datos dispersos para hacerlos densos y combine las características en una única matriz densa para entrenar su (s) modelo (s).hstack
en una única matriz dispersa para entrenar su (s) modelo (s).Pipeline
si lo desea).Los tres enfoques son válidos y tienen sus propios pros y contras. Personalmente, creo que (1) suele ser el peor porque, en términos relativos, es extremadamente lento. También encuentro que (3) suele ser el mejor, ya que es lo suficientemente rápido y da como resultado muy buenas predicciones. Obviamente, también puedes hacer una combinación de ellos si estás dispuesto a hacer un conjunto más extenso.
En cuanto a los algoritmos que utiliza, pueden encajar esencialmente en ese marco. La regresión logística funciona sorprendentemente bien la mayor parte del tiempo, pero a otros les puede ir mejor dependiendo del problema en cuestión y qué tan bien los sintonice. Soy partidario de los GBM, pero la conclusión es que puede probar tantos algoritmos como desee e incluso hacer conjuntos simples ponderados de sus predicciones casi siempre conducirá a una mejor solución general.
fuente
Los modelos lineales simplemente agregan sus características multiplicadas por los pesos correspondientes. Si, por ejemplo, tiene 1000 características dispersas, solo 3 o 4 de las cuales están activas en cada instancia (y las otras son ceros) y 20 características densas que no son ceros, entonces es muy probable que las características densas aprovechen al máximo el impacto mientras que las características dispersas agregarán solo un pequeño valor. Puede verificar esto mirando los pesos de las características para algunas instancias y cómo influyen en la suma resultante.
Una forma de solucionarlo es alejarse del modelo aditivo. Aquí hay un par de modelos candidatos.
SVM se basa en la separación de hiperplanos. Aunque el hiperplano es un modelo lineal en sí mismo, SVM no resume sus parámetros, sino que intenta dividir el espacio de características de una manera óptima. Dada la cantidad de características, diría que el SVM lineal debería funcionar bien, mientras que los núcleos más complicados pueden tender a sobreajustar los datos.
A pesar de su nombre, Naive Bayes es un modelo estadístico bastante poderoso que mostró buenos resultados para la clasificación de texto. También es lo suficientemente flexible como para capturar el desequilibrio en la frecuencia de características dispersas y densas, por lo que definitivamente debe intentarlo.
Finalmente, los bosques aleatorios pueden funcionar como un buen método de conjunto en este caso. La aleatorización garantizará que se usen diferentes tipos de características (dispersas / densas) como nodos de decisión primarios en diferentes árboles. Los árboles de RF / decisión también son buenos para inspeccionar las propias características, por lo que vale la pena notar su estructura de todos modos.
Tenga en cuenta que todos estos métodos tienen sus inconvenientes que pueden convertirlos en basura en su caso. Combinar características dispersas y densas no es una tarea realmente bien estudiada, así que háganos saber cuál de estos enfoques funciona mejor para su caso.
fuente