A Falha do GridSearchCV
Antes de explorar o GridSearchCV
, é importante observar que o KNeighborsClassifier
possui vários hiperparâmetros além de n_neighbors
. Dois deles são: weights
e p
.
Pesos
O KNeighborsClassifier
faz previsões encontrando os k vizinhos mais próximos e atribuindo a classe mais frequente entre eles, independentemente da proximidade de cada vizinho.
Uma alternativa é ponderar os vizinhos pela distância, dando mais influência aos pontos mais próximos. Isso é feito com weights='distance'
.
Por padrão, o classificador utiliza weights='uniform'
, onde todos os vizinhos contribuem igualmente.
P
O hiperparâmetro p
define como as distâncias são calculadas:
p=1
: distância de Manhattan (soma das diferenças absolutas entre as coordenadas);p=2
: distância Euclidiana (a distância em linha reta, conhecida da geometria).
O parâmetro p
pode assumir qualquer inteiro positivo. Existem muitas distâncias diferentes, mas elas são mais difíceis de visualizar do que p=1
ou p=2
.
Não se preocupe se os detalhes de weights
ou p
não estiverem claros. Eles são apresentados apenas para mostrar que existe mais de um hiperparâmetro que pode influenciar as previsões do modelo. Considere-os como exemplos de hiperparâmetros que podem ser ajustados.
No capítulo anterior, o GridSearchCV
foi utilizado para ajustar apenas o n_neighbors
.
Para buscar a melhor combinação de n_neighbors
, weights
e p
, o param_grid
pode ser definido como:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV
tenta todas as combinações possíveis para encontrar a melhor, então irá testar todas estas:
Isso aumenta significativamente o espaço de busca. Por exemplo:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Com 100 combinações de hiperparâmetros e validação cruzada com 5 divisões, o modelo é treinado e avaliado 500 vezes.
Para conjuntos de dados pequenos, isso é viável, mas com conjuntos maiores e modelos mais complexos, o processo se torna muito lento.
Para lidar com esses casos, RandomizedSearchCV
é frequentemente preferido. Ele explora apenas um subconjunto de todas as combinações possíveis, reduzindo significativamente o tempo de computação e ainda assim fornecendo bons resultados.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
A Falha do GridSearchCV
Deslize para mostrar o menu
Antes de explorar o GridSearchCV
, é importante observar que o KNeighborsClassifier
possui vários hiperparâmetros além de n_neighbors
. Dois deles são: weights
e p
.
Pesos
O KNeighborsClassifier
faz previsões encontrando os k vizinhos mais próximos e atribuindo a classe mais frequente entre eles, independentemente da proximidade de cada vizinho.
Uma alternativa é ponderar os vizinhos pela distância, dando mais influência aos pontos mais próximos. Isso é feito com weights='distance'
.
Por padrão, o classificador utiliza weights='uniform'
, onde todos os vizinhos contribuem igualmente.
P
O hiperparâmetro p
define como as distâncias são calculadas:
p=1
: distância de Manhattan (soma das diferenças absolutas entre as coordenadas);p=2
: distância Euclidiana (a distância em linha reta, conhecida da geometria).
O parâmetro p
pode assumir qualquer inteiro positivo. Existem muitas distâncias diferentes, mas elas são mais difíceis de visualizar do que p=1
ou p=2
.
Não se preocupe se os detalhes de weights
ou p
não estiverem claros. Eles são apresentados apenas para mostrar que existe mais de um hiperparâmetro que pode influenciar as previsões do modelo. Considere-os como exemplos de hiperparâmetros que podem ser ajustados.
No capítulo anterior, o GridSearchCV
foi utilizado para ajustar apenas o n_neighbors
.
Para buscar a melhor combinação de n_neighbors
, weights
e p
, o param_grid
pode ser definido como:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV
tenta todas as combinações possíveis para encontrar a melhor, então irá testar todas estas:
Isso aumenta significativamente o espaço de busca. Por exemplo:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Com 100 combinações de hiperparâmetros e validação cruzada com 5 divisões, o modelo é treinado e avaliado 500 vezes.
Para conjuntos de dados pequenos, isso é viável, mas com conjuntos maiores e modelos mais complexos, o processo se torna muito lento.
Para lidar com esses casos, RandomizedSearchCV
é frequentemente preferido. Ele explora apenas um subconjunto de todas as combinações possíveis, reduzindo significativamente o tempo de computação e ainda assim fornecendo bons resultados.
Obrigado pelo seu feedback!