En este punto, ya reunimos nuestro conjunto de datos y obtuvimos información sobre las características clave de nuestros datos. A continuación, en función de las métricas que recopilamos en el Paso 2, deberíamos pensar qué modelo de clasificación debemos usar. Esto significa hacer preguntas como las siguientes:
- ¿Cómo presentas los datos de texto a un algoritmo que espera una entrada numérica? (esto se denomina procesamiento previo y vectorización de datos).
- ¿Qué tipo de modelo deberías usar?
- ¿Qué parámetros de configuración deberías usar para tu modelo?
Gracias a décadas de investigación, tenemos acceso a una gran variedad de opciones de procesamiento previo de datos y configuración de modelos. Sin embargo, la disponibilidad de una gran variedad de opciones viables para elegir puede aumentar de manera significativa la complejidad y el alcance de un problema en particular. Dado que las mejores opciones podrían no ser obvias, una solución simple sería probar todas las opciones posibles de forma exhaustiva, reduciendo algunas opciones a través de la intuición. Sin embargo, eso sería muy costoso.
En esta guía, intentamos simplificar significativamente el proceso de selección de un modelo de clasificación de texto. Para un conjunto de datos determinado, nuestro objetivo es encontrar el algoritmo que alcance una exactitud cercana a la máxima y, al mismo tiempo, minimice el tiempo de procesamiento necesario para el entrenamiento. Ejecutamos una gran cantidad (aproximadamente 450,000) de experimentos con problemas de diferentes tipos (en especial problemas de análisis de opiniones y de clasificación de temas), con 12 conjuntos de datos alternados para cada conjunto entre diferentes técnicas de procesamiento previo de datos y diferentes arquitecturas de modelos. Esto nos ayudó a identificar los parámetros del conjunto de datos que influyen en las opciones óptimas.
El algoritmo de selección de modelos y el diagrama de flujo que aparecen a continuación son un resumen de nuestra experimentación. No te preocupes si aún no comprendes todos los términos que se usan en ellas. En las siguientes secciones de esta guía, se explican en profundidad.
Algoritmo para la preparación de datos y la creación de modelos
- Calcula la cantidad de muestras y la cantidad de palabras por proporción de muestra.
- Si esta proporción es inferior a 1,500, asigna tokens al texto como n-gramas y usa un modelo de perceptrón multicapa (MLP) simple para clasificarlos (rama izquierda en el diagrama de flujo a continuación):
- Dividir las muestras en n-gramas de palabras y convertir los n-gramas en vectores.
- Califica la importancia de los vectores y, luego, selecciona los 20,000 principales usando las puntuaciones.
- Crear un modelo de MLP
- Si la proporción es superior a 1,500, asigna tokens al texto como secuencias y usa un modelo sepCNN para clasificarlos (rama derecha en el diagrama de flujo a continuación):
- Divide las muestras en palabras, selecciona las 20,000 palabras principales según su frecuencia.
- Convertir las muestras en vectores de secuencia de palabras.
- Si la proporción original de muestras/cantidad de palabras por muestra es inferior a 15,000, el uso de una incorporación ajustada previamente entrenada con el modelo sepCNN proporcionará los mejores resultados.
- Mide el rendimiento del modelo con diferentes valores de hiperparámetros a fin de encontrar la mejor configuración del modelo para el conjunto de datos.
En el siguiente diagrama de flujo, los cuadros amarillos indican los datos y los procesos de preparación del modelo. Las casillas grises y verdes indican las opciones que tuvimos en cuenta para cada proceso. Los cuadros verdes indican la opción recomendada para cada proceso.
Puedes usar este diagrama de flujo como punto de partida para construir tu primer experimento, ya que te brindará una buena exactitud con bajos costos de procesamiento. Luego, puedes continuar mejorando tu modelo inicial durante las iteraciones posteriores.
Figura 5: Diagrama de flujo de clasificación de texto
Este diagrama de flujo responde dos preguntas clave:
- ¿Qué algoritmo o modelo de aprendizaje deberías usar?
- ¿Cómo debes preparar los datos para aprender de manera eficiente la relación entre el texto y la etiqueta?
La respuesta a la segunda pregunta depende de la primera pregunta. La forma en que procesamos previamente los datos para enviarlos a un modelo dependerá del modelo que elijamos. Los modelos se pueden clasificar en dos categorías: aquellos que usan información de ordenamiento de palabras (modelos de secuencia) y los que solo ven el texto como "bolsas" (conjuntos) de palabras (modelos n-grama). Los tipos de modelos de secuencia incluyen redes neuronales convolucionales (CNN), redes neuronales recurrentes (RNN) y sus variaciones. Los tipos de modelos n-grama incluyen:
- regresión logística
- perceptrones simples de varias capas (MLP o redes neuronales completamente conectadas)
- árboles con boosting del gradiente
- máquinas de vectores de asistencia
A partir de nuestros experimentos, observamos que la relación entre la "cantidad de muestras" (S) y la "cantidad de palabras por muestra" (W) se correlaciona con el modelo que tiene un buen rendimiento.
Cuando el valor de esta relación es pequeño (<1,500), los perceptrones pequeños de varias capas que toman n-gramas como entrada (que llamaremos Opción A) funcionan mejor o, al menos, tan bien como los modelos de secuencia. Los MLP son fáciles de definir y comprender y requieren mucho menos tiempo de procesamiento. Cuando el valor para esta proporción sea grande (>= 1,500), usa un modelo de secuencia (Opción B). En los pasos que siguen, puedes omitir las subsecciones relevantes (etiquetadas A o B) para el tipo de modelo que elegiste en función de la proporción de muestras/palabras por muestra.
En el caso de nuestro conjunto de datos de revisión de IMDb, la proporción entre muestras y palabras por muestra es de aproximadamente 144. Esto significa que crearemos un modelo de MLP.