Uso de curvas de aprendizaje – ML

Un modelo de aprendizaje de un modelo de aprendizaje automático muestra cómo cambia el error en la predicción de un modelo de aprendizaje automático a medida que aumenta o disminuye el tamaño del conjunto de entrenamiento.
Antes de continuar, primero debemos comprender qué significan la varianza y el sesgo en el modelo de aprendizaje automático.

Sesgo:
básicamente no es más que la diferencia entre la predicción promedio de un modelo y el valor correcto de la predicción. Los modelos con alto sesgo hacen muchas suposiciones sobre los datos de entrenamiento. Esto conduce a una simplificación excesiva del modelo y puede causar un alto error tanto en el conjunto de entrenamiento como en el de prueba. Sin embargo, esto también hace que el modelo sea más rápido de aprender y fácil de entender. En general, los algoritmos de modelos lineales como la regresión lineal tienen un alto sesgo.

Varianza:
es la cantidad que cambiará la predicción de un modelo si se modifican los datos de entrenamiento. Idealmente, un modelo de aprendizaje automático no debería variar demasiado con un cambio en los conjuntos de entrenamiento, es decir, el algoritmo debería ser bueno para recoger detalles importantes sobre los datos, independientemente de los datos en sí. Un ejemplo de algoritmos con alta varianza son los árboles de decisión, las máquinas de vectores de soporte (SVM).

Idealmente, querríamos un modelo con baja varianza y bajo sesgo. Para lograr un sesgo más bajo, necesitamos más datos de entrenamiento, pero con datos de entrenamiento más altos, la varianza del modelo aumentará. Entonces, tenemos que lograr un equilibrio entre los dos. A esto se le llama compensación sesgo-varianza.
Una curva de aprendizaje puede ayudar a encontrar la cantidad correcta de datos de entrenamiento para ajustar nuestro modelo con una buena compensación de sesgo-varianza. Por eso las curvas de aprendizaje son tan importantes.
Ahora que entendemos el equilibrio entre sesgo y varianza y por qué es importante una curva de aprendizaje, ahora aprenderemos a usar las curvas de aprendizaje en Python usando la biblioteca scikit-learn de Python.

Implementación de curvas de aprendizaje en Python:
por el bien de este ejemplo, usaremos el muy popular conjunto de datos ‘Digit’. Para obtener más información sobre este conjunto de datos, puede consultar el siguiente enlace: https://scikit-learn.org/stable/auto_examples/datasets/plot_digits_last_image
Usaremos un clasificador de k-vecino más cercano para este ejemplo. También realizaremos una validación cruzada de 10 veces para obtener puntajes de validación para trazar en el gráfico.

Código:

#Importing Required Libraries and Modules
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import learning_curve
  
# Load data set
dataset = load_digits()
  
# X contains data and y contains labels
X, y = dataset.data, dataset.target
  
# Obtain scores from learning curve function
# cv is the number of folds while performing Cross Validation
sizes, training_scores, testing_scores = learning_curve(KNeighborsClassifier(), X, y, cv=10, scoring='accuracy', train_sizes=np.linspace(0.01, 1.0, 50))
  
# Mean and Standard Deviation of training scores
mean_training = np.mean(training_scores, axis=1)
Standard_Deviation_training = np.std(training_scores, axis=1)
  
# Mean and Standard Deviation of testing scores
mean_testing = np.mean(testing_scores, axis=1)
Standard_Deviation_testing = np.std(testing_scores, axis=1)
  
# dotted blue line is for training scores and green line is for cross-validation score
plt.plot(sizes, mean_training, '--', color="b",  label="Training score")
plt.plot(sizes, mean_testing, color="g", label="Cross-validation score")
  
# Drawing plot
plt.title("LEARNING CURVE FOR KNN Classifier")
plt.xlabel("Training Set Size"), plt.ylabel("Accuracy Score"), plt.legend(loc="best")
plt.tight_layout()
plt.show()

Producción:



A partir de la curva, podemos ver claramente que a medida que aumenta el tamaño del conjunto de entrenamiento, la curva de puntaje de entrenamiento y la curva de puntaje de validación cruzada convergen. La precisión de la validación cruzada aumenta a medida que agregamos más datos de entrenamiento. Por lo tanto, agregar datos de entrenamiento es útil en este caso. Dado que la puntuación de entrenamiento es muy precisa, esto indica un sesgo bajo y una varianza alta. Entonces, este modelo también comienza a sobreajustar los datos porque el puntaje de validación cruzada es relativamente más bajo y aumenta muy lentamente a medida que aumenta el tamaño del conjunto de entrenamiento.

Conclusión:
las curvas de aprendizaje son una excelente herramienta de diagnóstico para determinar el sesgo y la varianza en un algoritmo de aprendizaje automático supervisado. En este artículo, hemos aprendido qué curvas de aprendizaje y cómo se implementan en Python.

Publicación traducida automáticamente

Artículo escrito por alokesh985 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *