Saltar al contenido principal
Página

Tema 5.2 - Optimización de Hiperparámetros

Optimización de Hiperparámetros

Cuando variamos las características que se utilizan en el modelo, estamos afectando a los datos que utiliza el modelo, por otro lado, variar el valor de k afecta al comportamiento del modelo independientemente de los datos reales que se utilizan al hacer las predicciones, en otras palabras, estamos afectando al rendimiento del modelo sin intentar cambiar los datos que se utilizan.

Los valores que afectan al comportamiento y al rendimiento de un modelo y que no están relacionados con los datos utilizados se denominan hiperparámetros, el proceso de encontrar el valor óptimo de los hiperparámetros se conoce como optimización de hiperparámetros; una técnica de optimización de hiperparámetros sencilla pero común se conoce como búsqueda en cuadrícula, que consiste en:

  • Seleccionar un subconjunto de los posibles valores de los hiperparámetros
  • Entrenar un modelo utilizando cada uno de estos valores de hiperparámetros
  • Evaluar el rendimiento de cada modelo
  • Seleccionar el valor de los hiperparámetros que dé lugar al valor de error más bajo


La búsqueda en la cuadrícula se reduce esencialmente a evaluar el rendimiento del modelo con diferentes valores de k y a seleccionar el valor de k que dé lugar al menor error, mientras que la búsqueda en cuadrícula puede llevar mucho tiempo cuando se trabaja con grandes conjuntos de datos, los datos con los que estamos trabajando en esta misión son pequeños y este proceso es relativamente rápido.

Confirmemos que la búsqueda en cuadrícula funcionará rápidamente para el conjunto de datos con el que estamos trabajando, observando primero cómo cambia el rendimiento del modelo a medida que aumentamos el valor de k de 1 a 5, si recuerdas, establecimos 5 como valor de k para las dos últimas misiones. Utilicemos las características de la última misión que dieron lugar a la mejor precisión del modelo:

  • accommodates
  • bedrooms
  • bathrooms
  • number_of_reviews


Instrucciones

  • Crear una lista que contenga los valores enteros 1, 2, 3, 4 y 5, en ese orden, y asignarla a hyper_ params
  • Crear una lista vacía y asignarla a mse_values
  • Utilice un bucle for para iterar sobre hyper_params y en cada iteración:
  • Instanciar un objeto KNeighborsRegressor con los siguientes parámetros:
    1. n_neighbors: el valor actual de la variable del iterador
    2. algorithm: brute
    3. Ajuste el modelo instanciado de vecinos más cercanos a las siguientes columnas de train_df:
    4. accommodates
    5. bedrooms
    6. bathrooms
    7. number_of_reviews
    8. Utilizar el modelo entrenado para hacer predicciones sobre las mismas columnas de test_df y asignarlas a las predictions
    9. Utilice la función mean_squared_error para calcular el valor MSE entre las predictions y la columna de precios de test_df
    10. Añadir el valor de MSE a mse_values
                  • Mostrar mse_values con la función print()


                  Soluciones


                  from sklearn.neighbors import KNeighborsRegressor
                  from sklearn.metrics import mean_squared_error
                  features = ['accommodates', 'bedrooms', 'bathrooms',
                  'number_of_reviews"]
                  hyper_params = [1, 2, 3, 4, 5]
                  mse_values = list()
                   
                  for hp in hyper_params:
                  knn = KNeighborsRegressor (n_neighbors=hp,
                  algorithm='brute')
                  	knn.fit(train_df[features], train_df['price'])
                  	predictions = knn.predict(test_df[features])
                  	mse = mean_squared_error(test_df['price'],
                  predictions)
                  	mse_values.append(mse)
                  
                  print(mse_values)
                  
                  Última modificación: miércoles, 27 de abril de 2022, 23:35