Ejercicio de Deep Learning sobre análisis de sentimientos. P3: entrenamiento

Autor: | Última modificación: 17 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

En apartados anteriores hemos visto la carga y visualización de datos y el preprocesado de un ejercicio de deep learning sobre análisis de sentimientos. En esta ocasión, haremos el entrenamiento o training de los datos ya preprocesados.

Ejercicio de deep learning sobre análisis de sentimientos

Lo que haremos en este ejercicio de deep learning sobre análisis de sentimientos es generar nuestro entrenamiento.

Vamos a utilizar de baseline, es decir, de prueba de base, un clasificador con gradient boost de scikit learn denominado GradientBoostingClassifier. Podemos utilizar un gradient boosting, un logistic regression o cualquier método más clásico, como un decision tree, por ejemplo.

Paso a paso

En nuestro caso utilizaremos el ya mencionado gradient boost, que es un método de ensamblado de sklearn y le pasaremos varias cosas:

  • Tenemos definida la función classify_gboost.
  • Creamos el clasificador.
  • Le pasamos al clasificador el número de estimadores que va a probar. El gradient boosting entrena en este caso 32 estimadores y se queda con el mejor en función de unos hiperparámetros que el mismo algoritmo se encarga de optimizar.
  • El paso siguiente sería hacer el fit, con los datos de train y las etiquetas.
  • Después, obtendríamos las métricas de entrenamiento y de test.
  • En la última línea lo que haríamos sería llamar al clasificador y, como vemos, no lo llamamos con nuestros datos de texto, sino con nuestro bag of words (las features de train, las features de test).

¡En marcha!

#Ejercicio de deep learning sobre análisis de sentimientos
from sklearn.ensemble import GradientBoostingClassifier

n_estimators = 32

def classify_gboost (X_train, X_test, y_train, y_test):
       clf = GradientBoiostingClassifier (n_estimators =      n_estimators, learning_rate = 1.0, max_depth = 1, random_state = 0)

       clf.fit (X_train, y_train)

       print ("[{ }] Accuracy: train = { }, test = { }".format (
                    clf.__class__. __name__,
                    clf.score (X_train, y_train),
                    clf.score (X_test, y_test)))

       return clf

clf2 = classify_gboost (features_train, features_test, labels_train, labels_test)

¿Ves algún error en el ejercicio anterior? Aquí hay una cosa mal y tienes que adivinar qué es.

Se trata del random state, que tiene un fallo. En este momento está en cero, pero debería estar en cuarenta y dos. Veamos cómo quedaría modificado.

Lo único que consigues cuando pones un random state es que todos los cálculos que hace por debajo, por ejemplo, con numpy, los utilice con esa semilla.

Entonces, todos los resultados son reproducibles, es decir, siempre te va a salir la misma ejecución. Eso es muy importante si, por ejemplo, con un random state necesitamos un algoritmo que sea muy productivo o que se use para un producto ya final, porque si no le estableces una semilla, al final podrás generar resultados diferentes para los mismos datos. Esto, por tanto, no tendría consistencia.

#Ejercicio de deep learning sobre análisis de sentimientos
from sklearn.ensemble import GradientBoostingClassifier

n_estimators = 32

def classify_gboost (X_train, X_test, y_train, y_test):
       clf = GradientBoiostingClassifier (n_estimators =      n_estimators, learning_rate = 1.0, max_depth = 1, random_state = 42)

       clf.fit (X_train, y_train)

       print ("[{ }] Accuracy: train = { }, test = { }".format (
                    clf.__class__. __name__,
                    clf.score (X_train, y_train),
                    clf.score (X_test, y_test)))

       return clf

#Ejercicio de deep learning sobre análisis de sentimientos
clf2 = classify_gboost (features_train, features_test, labels_train, labels_test)
Ejercicio de Deep Learning sobre análisis de sentimientos

El ejercicio de deep learning sobre análisis de sentimientos se ha ejecutado. Vemos que, para el entrenamiento, ha sacado un 79% (0.79472), y lo mismo hemos sacado para la parte de test, un 79% (79004).

Si nos fijamos detenidamente, hemos obtenido solamente un 80%. Si bien no está mal del todo, dado todo el preprocesamiento que hemos estado aplicando a los datos y que nos ha llevado bastante tiempo, optamos por considerar que este no es un proceso muy óptimo.

Hemos tenido que estar, primero, visualizando los datos, después los hemos limpiado, a continuación hemos mezclado los datos, los hemos preprocesado, hemos quitado las swtopwords y borrado palabras que no nos sirven. En conclusión, debemos sacar todo lo jugoso del texto y, teniendo esto en cuenta, luego se procede a hacer el entrenamiento.

¿Quieres seguir avanzando?

Ahora que hemos visto nuestro ejercicio de deep learning sobre análisis de sentimientos, podemos dar el siguiente paso en nuestro proceso formativo y continuar aprendiendo.

Para acceder a las opciones laborales del Big Data, una de las áreas tech mejor pagadas y con mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación íntegra, intensiva y de alta calidad adquirirás los conocimientos imprescindibles para conseguir tu trabajo perfecto en pocos meses. ¡No esperes más para impulsar tu vida y solicita información ahora!

Posts Relacionados

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado