La 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
.
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.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
La 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
.
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.
¡Gracias por tus comentarios!