Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende La Falla de GridSearchCV | Modelado
Introducción al ML con Scikit-learn

bookLa Falla de GridSearchCV

Antes de explorar GridSearchCV, es importante señalar que KNeighborsClassifier tiene varios hiperparámetros además de n_neighbors. Dos de ellos son: weights y p.

Pesos

KNeighborsClassifier realiza la predicción buscando los k vecinos más cercanos y asignando la clase más frecuente entre ellos, sin importar cuán cerca esté cada vecino.

Una alternativa consiste en ponderar los vecinos según su distancia, otorgando mayor influencia a los puntos más cercanos. Esto se logra con weights='distance'.

Por defecto, el clasificador utiliza weights='uniform', donde todos los vecinos contribuyen por igual.

P

El hiperparámetro p define cómo se calculan las distancias:

  • p=1: Distancia Manhattan (suma de las diferencias absolutas entre coordenadas);
  • p=2: Distancia Euclidiana (la distancia en línea recta, conocida en geometría).

El parámetro p puede tomar cualquier entero positivo. Existen muchas distancias diferentes, pero son más difíciles de visualizar que p=1 o p=2.

Note
Nota

No es necesario preocuparse si los detalles de weights o p no son claros. Se presentan simplemente para mostrar que existe más de un hiperparámetro que puede influir en las predicciones del modelo. Considérelos como ejemplos de hiperparámetros que pueden ajustarse.

En el capítulo anterior, se utilizó GridSearchCV para ajustar únicamente n_neighbors. Para buscar la mejor combinación de n_neighbors, weights y p, se puede definir el param_grid de la siguiente manera:

param_grid = {
    'n_neighbors': [1, 3, 5, 7],
    'weights': ['distance', 'uniform'],
    'p': [1, 2]
}

GridSearchCV prueba todas las combinaciones posibles para encontrar la mejor, por lo que intentará todas estas:

Eso incrementa significativamente el espacio de búsqueda. Por ejemplo:

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Con 100 combinaciones de hiperparámetros y validación cruzada de 5 particiones, el modelo se entrena y evalúa 500 veces.

Para conjuntos de datos pequeños, esto es manejable, pero con conjuntos de datos más grandes y modelos más complejos, el proceso se vuelve muy lento.

Para estos casos, se prefiere a menudo RandomizedSearchCV. Explora solo un subconjunto de todas las combinaciones posibles, reduciendo significativamente el tiempo de cómputo y proporcionando resultados sólidos.

question mark

El principal problema de GridSearchCV es que prueba todas las combinaciones posibles (de lo que se especifica en param_grid), lo que puede llevar mucho tiempo. ¿Es correcta esta afirmación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain how RandomizedSearchCV works compared to GridSearchCV?

What are some best practices for choosing hyperparameter ranges?

How do I interpret the results from GridSearchCV or RandomizedSearchCV?

Awesome!

Completion rate improved to 3.13

bookLa Falla de GridSearchCV

Desliza para mostrar el menú

Antes de explorar GridSearchCV, es importante señalar que KNeighborsClassifier tiene varios hiperparámetros además de n_neighbors. Dos de ellos son: weights y p.

Pesos

KNeighborsClassifier realiza la predicción buscando los k vecinos más cercanos y asignando la clase más frecuente entre ellos, sin importar cuán cerca esté cada vecino.

Una alternativa consiste en ponderar los vecinos según su distancia, otorgando mayor influencia a los puntos más cercanos. Esto se logra con weights='distance'.

Por defecto, el clasificador utiliza weights='uniform', donde todos los vecinos contribuyen por igual.

P

El hiperparámetro p define cómo se calculan las distancias:

  • p=1: Distancia Manhattan (suma de las diferencias absolutas entre coordenadas);
  • p=2: Distancia Euclidiana (la distancia en línea recta, conocida en geometría).

El parámetro p puede tomar cualquier entero positivo. Existen muchas distancias diferentes, pero son más difíciles de visualizar que p=1 o p=2.

Note
Nota

No es necesario preocuparse si los detalles de weights o p no son claros. Se presentan simplemente para mostrar que existe más de un hiperparámetro que puede influir en las predicciones del modelo. Considérelos como ejemplos de hiperparámetros que pueden ajustarse.

En el capítulo anterior, se utilizó GridSearchCV para ajustar únicamente n_neighbors. Para buscar la mejor combinación de n_neighbors, weights y p, se puede definir el param_grid de la siguiente manera:

param_grid = {
    'n_neighbors': [1, 3, 5, 7],
    'weights': ['distance', 'uniform'],
    'p': [1, 2]
}

GridSearchCV prueba todas las combinaciones posibles para encontrar la mejor, por lo que intentará todas estas:

Eso incrementa significativamente el espacio de búsqueda. Por ejemplo:

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Con 100 combinaciones de hiperparámetros y validación cruzada de 5 particiones, el modelo se entrena y evalúa 500 veces.

Para conjuntos de datos pequeños, esto es manejable, pero con conjuntos de datos más grandes y modelos más complejos, el proceso se vuelve muy lento.

Para estos casos, se prefiere a menudo RandomizedSearchCV. Explora solo un subconjunto de todas las combinaciones posibles, reduciendo significativamente el tiempo de cómputo y proporcionando resultados sólidos.

question mark

El principal problema de GridSearchCV es que prueba todas las combinaciones posibles (de lo que se especifica en param_grid), lo que puede llevar mucho tiempo. ¿Es correcta esta afirmación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 7
some-alt