Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda A Falha do GridSearchCV | Modelagem
Introdução ao ML com Scikit-learn

bookA 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.

Note
Nota

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.

question mark

O principal problema do GridSearchCV é que ele testa todas as combinações possíveis (do que está especificado em param_grid), o que pode levar muito tempo. Essa afirmação está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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

bookA 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.

Note
Nota

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.

question mark

O principal problema do GridSearchCV é que ele testa todas as combinações possíveis (do que está especificado em param_grid), o que pode levar muito tempo. Essa afirmação está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 7
some-alt