Grid Seach
Grid search (pesquisa em grade) é uma técnica muito comum em machine learning utilizada para melhorar a precisão e a generalização dos modelos. Especificamente, ela é usada para realizar ajustes de hiperparâmetros, etapa que pode ser fundamental durante o treinamento de um modelo. Essencialmente, o grid search automatiza o processo de encontrar hiperparâmetros ideais, economizando tempo e esforço em comparação com o ajuste manual. Ele garante achar a melhor combinação em uma grade de valores especificada. Adicionalmente, o uso de grid search fornece insights sobre como diferentes hiperparâmetros afetam o desempenho do modelo.
Como grid search opera?
Grid search requer que uma grade de valores de um ou mais hiperparâmetros seja definida. Ele opera através da variação sistemática de múltiplas combinações de valores de hiperparâmetros. Para encontrar o melhor conjunto de hiperparâmetros, ele avalia o desempenho do modelo de machine learning para cada combinação testada. A combinação que produz o melhor desempenho é selecionada.
As Limitações
A principal limitação para o emprego de grid search é seu custo computacional. Essa técnica pode ser computacionalmente cara quando muitos hiperparâmetros são testados ou quando uma grade de valores muito grande é usada.
Para superar as limitações do grid search, outras técnicas podem ser usadas em seu lugar. As duas principais alternativas ao grid search são a pesquisa aleatória (random search) e a otimização bayesiana. Na pesquisa aleatória, amostras de combinações aleatórias de hiperparâmetros são testadas. Já na otimização bayesiana, um modelo probabilístico é utilizado para selecionar os hiperparâmetros mais promissores.
Implementação com Python e Scikit-learn
Em Python, grid search é comumente implementado com o auxílio da biblioteca Scikit-learn. Seu uso é uma etapa comum de otimização de algoritmos de machine learning como regressão logística e árvores de decisão. Portanto, para ilustrar como grid search pode ser usado, utilizaremos uma otimização hipotética de uma árvore de decisão como exemplo. Primeiro, importamos os algoritmos em um código Python:
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
Depois, definimos o conjunto de dados para treinar o modelo. Usaremos o conjunto de dados iris.
# Carrega os dados
from sklearn.datasets import load_iris
iris = load_iris()
# Divide os dados em recursos (X) e variável de destino (y)
X = iris.data
y = iris.target
A etapa seguinte consiste em definir a grade de pesquisa. As árvores de decisão possuem vários hiperparâmetros. Para esse exemplo, usaremos dois em nossa grade: criterion (impureza de Gini e entropia) e max_depth (variando de 2 a 10).
param_grid = {
'criterion': ['gini', 'entropy'], # Função para medir a qualidade da divisão
'max_depth': range(2, 10) # Profundidade máxima da árvore
}
Em seguida, o grid search é aplicado:
# Grig search
grid_search = GridSearchCV(DecisionTreeClassifier(), param_grid, cv=5, scoring='accuracy') # cv: número de validação cruzada
grid_search.fit(X, y)
# resultados
melhores_params = grid_search.best_params_
print("Melhores hiperparâmetros:", melhores_params)
# resultados: Melhores hiperparâmetros: {'criterion': 'gini', 'max_depth': 3}
E assim obtemos os valores ideias dos hiperparâmetros de um modelo de machine learning.
Veja também:
O que é machine learning (aprendizado de máquina)?
Como machine learning (aprendizado de máquina) funciona?
Como machine learning (aprendizado de máquina) aprende?
Como implementar um modelo de machine learning?
Como escolher um bom modelo de machine learning?
Classificação e regressão em machine learning
O que é conjunto de dados (dataset) em machine learning?
Onde conseguir conjuntos de dados para machine learning?
Salve localmente conjuntos de dados para machine learning
Pré-processamento de dados em machine learning
Regressão Linear e Machine Learning
Conjuntos de treinamento e teste em machine learning
Função de perda em machine learning
Scikit-learn para machine learning
Matrizes de Confusão em Machine Learning
Floresta aleatória com Scikit-learn
Detecção de anomalias com Isolation Forest
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.