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 Aprendizado de Máquina com Python

A Falha do GridSearchCV

Deslize para mostrar o menu

Antes de utilizar o GridSearchCV, observe que o KNeighborsClassifier possui mais hiperparâmetros além do n_neighbors. Dois importantes são weights e p.

Pesos

Por padrão, o classificador utiliza weights='uniform', o que significa que todos os k vizinhos votam igualmente. Ao definir weights='distance', vizinhos mais próximos têm mais influência, frequentemente melhorando as previsões quando pontos próximos são mais relevantes.

kNNWeights

P

O parâmetro p controla a métrica de distância:

  • p=1: Distância de Manhattan;
  • p=2: Distância Euclidiana.
Distâncias

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.

Ajuste

Anteriormente, apenas n_neighbors era ajustado. Para pesquisar todos os três hiperparâmetros, utilize:

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 ele irá testar todas estas:

Uma grade maior como:

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

cria 100 combinações. Com validação cruzada de 5 partes, o modelo é treinado 500 vezes. Isso é aceitável para conjuntos de dados pequenos, mas para conjuntos maiores se torna muito lento.

Para reduzir o tempo de computação, RandomizedSearchCV testa apenas um subconjunto aleatório de combinações, geralmente encontrando bons resultados muito mais rápido do que uma busca em grade completa.

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?

Selecione a resposta correta

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

A Falha do GridSearchCV

Antes de utilizar o GridSearchCV, observe que o KNeighborsClassifier possui mais hiperparâmetros além do n_neighbors. Dois importantes são weights e p.

Pesos

Por padrão, o classificador utiliza weights='uniform', o que significa que todos os k vizinhos votam igualmente. Ao definir weights='distance', vizinhos mais próximos têm mais influência, frequentemente melhorando as previsões quando pontos próximos são mais relevantes.

kNNWeights

P

O parâmetro p controla a métrica de distância:

  • p=1: Distância de Manhattan;
  • p=2: Distância Euclidiana.
Distâncias

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.

Ajuste

Anteriormente, apenas n_neighbors era ajustado. Para pesquisar todos os três hiperparâmetros, utilize:

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 ele irá testar todas estas:

Uma grade maior como:

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

cria 100 combinações. Com validação cruzada de 5 partes, o modelo é treinado 500 vezes. Isso é aceitável para conjuntos de dados pequenos, mas para conjuntos maiores se torna muito lento.

Para reduzir o tempo de computação, RandomizedSearchCV testa apenas um subconjunto aleatório de combinações, geralmente encontrando bons resultados muito mais rápido do que uma busca em grade completa.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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