O que é a Pesquisa Grid?

Explicar como obter valores ótimos de hiperparâmetros

Farhad Malik
Farhad Malik

Follow

Fev 18, 2020 – 4 min ler

Este artigo pretende explicar o que é a pesquisa em grelha e como podemos usar para obter valores óptimos de hiperparâmetros de modelos.

Explicarei todos os conceitos necessários em termos simples junto com o esboço de como podemos implementar a busca em Python.

>

Foto por Evgeni Tcherkasski em Unsplash

Por uma questão de simplicidade, podemos dividir os aspectos analíticos de um projeto de ciência de dados em três partes:

  1. A primeira parte seria sobre a recolha dos dados necessários e a engenharia das características.

2. A segunda parte giraria em torno da escolha do modelo certo de aprendizagem da máquina.

3. A última parte seria em torno de encontrar os hiperparâmetros ideais.

>

>

>

>

Vamos entender melhor a terceira parte porque não só afinar hiperparâmetros é considerado uma arte negra, é também uma tarefa entediante e leva tempo e esforço.

Este artigo pretende explicar o que é a pesquisa em grelha e como podemos usar para obter os valores óptimos dos hiperparâmetros dos modelos.

É aqui que a pesquisa em grelha pode ser extremamente útil porque nos pode ajudar a determinar os valores óptimos de uma forma elegante.

O que é um hiperparâmetro?

Um modelo de aprendizagem de máquina tem múltiplos parâmetros que não são treinados pelo conjunto de treino. Estes parâmetros controlam a precisão do modelo. Portanto, os hiperparâmetros são particularmente importantes em um projeto de ciência de dados.

Os hiperparâmetros são configurados à partida e são fornecidos pelo chamador do modelo antes do modelo ser treinado.

Como instância, a taxa de aprendizagem de uma rede neural é um hiperparâmetro porque é definido pelo chamador antes dos dados de treinamento serem alimentados ao modelo. Por outro lado, os pesos de uma rede neural não são seus hiperparâmetros porque são treinados pelo conjunto de dados de treinamento.

Outras vezes, considere o modelo de Classificação Vetorial de Suporte (SVC) que é usado para classificar conjuntos de dados. Há um número de hiperparâmetros que o modelo requer.

Subseqüentemente, a versão da biblioteca scikit-learn SVC pode ser configurada com um grande número de hiperparâmetros, alguns dos parâmetros comuns são:

  1. C: Este é um parâmetro de regulação
  2. Kernel: Podemos definir o parâmetro do kernel para linear, poly, rbf, sigmoid, pré-computed ou fornecer o nosso próprio callable.
  3. Grau: Podemos passar em um grau personalizado para suportar o parâmetro poly kernel.
  4. Gamma: Este é o coeficiente para o parâmetro rbf, poly e sigmoid kernel.
  5. Max_Iter: É o número máximo de iterações para o resolvedor.

Considerando que queremos usar o modelo SVC (por qualquer razão). Definir os valores ótimos dos hiperparâmetros pode ser desafiador e exigente em termos de recursos. Imagine quantas permutações precisamos para determinar os melhores valores de parâmetros.

É aqui que entra a Pesquisa de Grade.

O que é Pesquisa de Grade?

Pesquisa de Grade é uma técnica de ajuste que tenta calcular os valores ótimos dos hiperparâmetros. É uma busca exaustiva que é realizada sobre os valores específicos dos parâmetros de um modelo. O modelo também é conhecido como um estimador.

Exercício de busca na grade pode nos poupar tempo, esforço e recursos.

Python Implementation

Podemos usar a busca em grade em Python executando os seguintes passos:

Instalar biblioteca de sklearn

pip install sklearn

Importar biblioteca de sklearn

from sklearn.model_selection import GridSearchCV

Importar seu modelo

from sklearn.svm import SVC

Criar uma lista de hiperparâmetros do dicionário

Esta é a etapa chave.

Consideremos que queremos encontrar os valores ideais de hiperparâmetros para:

  • kernal: Queremos que o modelo se treine nos seguintes kernels e nos dê o melhor valor entre valores lineares, poliméricos, rbf, sigmóides e pré-computados
  • C: queremos que o modelo experimente os seguintes valores de C:
  • max_iter: queremos que o modelo use os seguintes valores de max_iter: e nos dê o melhor valor.

Podemos criar o dicionário necessário:

parameters = , 
'C': ,
'max_iter': }]

Instanciar GridSearchCV e passar nos parâmetros

clf = GridSearchCV(
SVC(), parameters, scoring='accuracy'
)
clf.fit(X_train, y_train)

Nota: decidimos usar a medida de pontuação de precisão para avaliar o desempenho.

Finalmente, imprima os melhores parâmetros:

print(clf.best_params_)

É tudo.

Seremos agora apresentados com os valores ótimos dos hiperparâmetros.

Os parâmetros selecionados são os que maximizaram a pontuação de precisão.

Resumo

Este artigo explicou como usar a Busca Grid para obter hiperparâmetros ótimos para um modelo de aprendizagem de máquina.

Deixe uma resposta

O seu endereço de email não será publicado.