Grid search e random search
GridSearchCV, RandomizedSearchCV, progettazione di param_grid e refitting sui parametri migliori.
Grid search e random search è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché ottimizzare gli iperparametri
I modelli hanno iperparametri (come max_depth o C) che non vengono appresi dai dati, ma vengono impostati prima dell'addestramento. I valori corretti possono migliorare notevolmente le prestazioni, quindi li cerchiamo in modo sistematico.
L'ottimizzazione manuale è soggetta a errori
Provare i valori manualmente è lento e introduce facilmente distorsioni. La ricerca automatizzata, combinata con la convalida incrociata, valuta ogni candidato in modo equo e trova la combinazione migliore in modo riproducibile.
Nozioni di base su GridSearchCV
GridSearchCV prova ogni combinazione presente nella griglia dei parametri, assegnando a ciascuna un punteggio tramite la convalida incrociata. È esaustivo e garantisce il punto migliore all'interno della griglia.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200, 300],
"max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)L'esplosione combinatoria
Il costo della ricerca a griglia cresce in base al prodotto del numero di opzioni di tutti i parametri, moltiplicato per il numero di fold. Tre parametri con 5 valori ciascuno e una convalida incrociata a 5 fold richiedono 5*5*5*5 = 625 addestramenti. Le griglie diventano rapidamente costose.
Assegnazione dei punteggi in GridSearchCV
Il parametro scoring sceglie la metrica da ottimizzare. Per dati sbilanciati, scelga f1 o roc_auc invece dell'accuratezza predefinita.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring="roc_auc",
)
gs.fit(X, y)Parallelizzare con n_jobs
L'addestramento di ogni candidato è indipendente, quindi imposti n_jobs=-1 per eseguirli su tutti i core della CPU. Questo riduce drasticamente il tempo reale trascorso per le griglie di grandi dimensioni.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
n_jobs=-1,
verbose=1,
)Leggere i risultati migliori
Dopo l'addestramento, controlli best_params_ per la combinazione vincente, best_score_ per il suo punteggio di convalida incrociata e best_estimator_ per il modello riaddestrato, pronto per fare previsioni.
gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)Esaminare tutti i risultati
cv_results_ è un dizionario (ideale da convertire in un DataFrame) che mostra il punteggio e la posizione in classifica di ogni candidato. Lo utilizzi per capire quali parametri sono importanti e quanto sono stabili i punteggi.
import pandas as pd
results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())RandomizedSearchCV
Quando lo spazio di ricerca è enorme, RandomizedSearchCV estrae un numero fisso di combinazioni casuali invece di provarle tutte. Il budget si controlla con n_iter.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_dist = {
"n_estimators": randint(100, 500),
"max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
RandomForestClassifier(), param_dist,
n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)Perché spesso la ricerca casuale è migliore
In molti problemi contano davvero solo pochi iperparametri. La ricerca casuale esplora queste dimensioni importanti in modo più efficiente rispetto a una griglia rigida, trovando buone soluzioni con molti meno tentativi.
Griglia o casuale: indicazioni
Utilizzi GridSearchCV per un insieme ridotto e discreto di candidati. Utilizzi RandomizedSearchCV per spazi ampi o continui, nei quali imposta un budget n_iter. Entrambi riaddestrano automaticamente il modello migliore quando refit=True.
Verifica rapida
Verifichi le Sue conoscenze sulla ricerca degli iperparametri.
Riepilogo
Riepilogo: GridSearchCV verifica in modo esaustivo ogni combinazione in un param_grid; il costo cresce rapidamente con le dimensioni. RandomizedSearchCV estrae n_iter combinazioni per gli spazi ampi. Imposti scoring per scegliere la metrica, n_jobs=-1 per aumentare la velocità e, dopo l'addestramento, legga best_params_, best_score_ e best_estimator_.
Domande Frequenti
La lezione «Grid search e random search» è gratuita?
Sì — il testo completo di «Grid search e random search» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Grid search e random search»?
GridSearchCV, RandomizedSearchCV, progettazione di param_grid e refitting sui parametri migliori. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Grid search e random search»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Strategie di cross-validation
- Approfondimento sulle metriche di classificazione
- Grid search e random search
- Ottimizzazione bayesiana con Optuna