Che cos’è la ricerca a griglia?

Questo articolo mira a spiegare cos’è la ricerca a griglia e come possiamo usarla per ottenere valori ottimali degli iperparametri del modello.

Spiegherò tutti i concetti necessari in termini semplici insieme a delineare come possiamo implementare la ricerca a griglia in Python.

Foto di Evgeni Tcherkasski su Unsplash

Per semplicità, possiamo dividere gli aspetti analitici di un progetto di data science in tre parti:

  1. La prima parte sarebbe tutta sulla raccolta dei dati necessari e sull’ingegnerizzazione delle caratteristiche.

2. La seconda parte ruota intorno alla scelta del giusto modello di apprendimento automatico.

3. L’ultima parte riguarda la ricerca degli iperparametri ottimali.

Comprendiamo meglio la terza parte perché non solo la sintonizzazione degli iperparametri è considerata un’arte nera, è anche un compito noioso e richiede tempo e fatica.

Questo articolo mira a spiegare cos’è la ricerca a griglia e come possiamo usarla per ottenere valori ottimali degli iperparametri del modello.

Ecco dove la ricerca a griglia può essere estremamente utile perché può aiutarci a determinare i valori ottimali in modo elegante.

Cos’è un iperparametro?

Un modello di apprendimento automatico ha più parametri che non sono allenati dal set di allenamento. Questi parametri controllano la precisione del modello. Pertanto, gli iperparametri sono particolarmente importanti in un progetto di scienza dei dati.

Gli iperparametri sono configurati in anticipo e sono forniti dal chiamante del modello prima che il modello sia addestrato.

Come esempio, il tasso di apprendimento di una rete neurale è un iperparametro perché è impostato dal chiamante prima che i dati di formazione siano forniti al modello. D’altra parte, i pesi di una rete neurale non sono i suoi iperparametri perché sono addestrati dal set di dati di formazione.

Inoltre, si consideri il modello SVC (Support Vector Classification) che viene utilizzato per classificare i set di dati. Ci sono una serie di iperparametri che il modello richiede.

Di conseguenza, la versione della libreria scikit-learn di SVC può essere impostata con un gran numero di iperparametri, alcuni dei parametri comuni sono:

  1. C: Questo è un parametro di regolazione
  2. Kernel: Possiamo impostare il parametro kernel su lineare, poly, rbf, sigmoide, precomputato o fornire il nostro callable.
  3. Grado: Possiamo passare un grado personalizzato per supportare il parametro poly kernel.
  4. Gamma: Questo è il coefficiente per il parametro del kernel rbf, poly e sigmoide.
  5. Max_Iter: È il numero massimo di iterazioni per il solutore.

Considerate che vogliamo usare il modello SVC (per qualsiasi motivo). Impostare i valori ottimali degli iper-parametri può essere impegnativo e richiedere risorse. Immaginate quante permutazioni abbiamo bisogno per determinare i migliori valori dei parametri.

E’ qui che entra in gioco la Grid Search.

Che cos’è la Grid Search?

La Grid Search è una tecnica di tuning che cerca di calcolare i valori ottimali degli iperparametri. Si tratta di una ricerca esaustiva che viene eseguita sui valori dei parametri specifici di un modello. Il modello è anche noto come stimatore.

L’esercizio di ricerca a griglia può farci risparmiare tempo, fatica e risorse.

Esecuzione in Python

Possiamo usare la ricerca a griglia in Python eseguendo i seguenti passi:

Installare la libreria sklearn

pip install sklearn

Importare la libreria sklearn

from sklearn.model_selection import GridSearchCV

Importare il modello

from sklearn.svm import SVC

Creare un dizionario degli iperparametri

Questo è il passo chiave.

Consideriamo che vogliamo trovare i valori ottimali degli iperparametri per:

  • kernal: Vogliamo che il modello si addestri sui seguenti kernel e ci dia il valore migliore tra i valori lineari, poly, rbf, sigmoid e precompilati
  • C: vogliamo che il modello provi i seguenti valori di C:
  • max_iter: vogliamo che il modello usi i seguenti valori di max_iter: e ci dia il valore migliore.

Possiamo creare il dizionario richiesto:

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

Instanziare GridSearchCV e passare i parametri

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

Nota: abbiamo deciso di usare la misura del punteggio di precisione per valutare le prestazioni.

Finalmente, stampate i parametri migliori:

print(clf.best_params_)

E’ tutto.

Ora ci verranno presentati i valori ottimali degli iperparametri.

I parametri selezionati sono quelli che hanno massimizzato il punteggio di precisione.

Sommario

Questo articolo ha spiegato come utilizzare la Grid Search per ottenere iperparametri ottimali per un modello di apprendimento automatico.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.