Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara La Falla di GridSearchCV | Modellizzazione
Introduzione al ML con Scikit-Learn

bookLa Falla di GridSearchCV

Prima di esplorare GridSearchCV, è importante notare che KNeighborsClassifier presenta diversi iperparametri oltre a n_neighbors. Due di questi sono: weights e p.

Weights

KNeighborsClassifier effettua la previsione trovando i k vicini più prossimi e assegnando la classe più frequente tra essi, indipendentemente dalla distanza di ciascun vicino.

Un'alternativa consiste nel ponderare i vicini in base alla loro distanza, attribuendo maggiore influenza ai punti più vicini. Questo si ottiene con weights='distance'.

Per impostazione predefinita, il classificatore utilizza weights='uniform', dove tutti i vicini contribuiscono in egual misura.

P

L'iperparametro p definisce come vengono calcolate le distanze:

  • p=1: Distanza di Manhattan (somma delle differenze assolute tra le coordinate);
  • p=2: Distanza euclidea (la distanza in linea retta, nota dalla geometria).

Un parametro p può assumere qualsiasi intero positivo. Esistono molte distanze diverse, ma sono più difficili da visualizzare rispetto a p=1 o p=2.

Note
Nota

Non preoccuparti se i dettagli di weights o p non sono chiari. Sono introdotti semplicemente per mostrare che esiste più di un iperparametro che può influenzare le previsioni del modello. Considerali come esempi di iperparametri che possono essere ottimizzati.

Nel capitolo precedente, GridSearchCV è stato utilizzato per ottimizzare solo n_neighbors. Per cercare la migliore combinazione di n_neighbors, weights e p, il param_grid può essere definito come:

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

GridSearchCV prova tutte le possibili combinazioni per trovare la migliore, quindi testerà tutte queste:

Ciò aumenta significativamente lo spazio di ricerca. Ad esempio:

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Con 100 combinazioni di iperparametri e cross-validation a 5 fold, il modello viene addestrato e valutato 500 volte.

Per piccoli dataset, questo è gestibile, ma con dataset più grandi e modelli più complessi, il processo diventa molto lento.

Per gestire tali casi, spesso si preferisce RandomizedSearchCV. Esplora solo un sottoinsieme di tutte le possibili combinazioni, riducendo significativamente il tempo di calcolo pur offrendo risultati solidi.

question mark

Il principale problema di GridSearchCV è che prova tutte le possibili combinazioni (di quelle specificate in param_grid), il che può richiedere molto tempo. Questa affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain how RandomizedSearchCV works compared to GridSearchCV?

What are some best practices for choosing hyperparameter ranges?

How do I interpret the results from GridSearchCV or RandomizedSearchCV?

Awesome!

Completion rate improved to 3.13

bookLa Falla di GridSearchCV

Scorri per mostrare il menu

Prima di esplorare GridSearchCV, è importante notare che KNeighborsClassifier presenta diversi iperparametri oltre a n_neighbors. Due di questi sono: weights e p.

Weights

KNeighborsClassifier effettua la previsione trovando i k vicini più prossimi e assegnando la classe più frequente tra essi, indipendentemente dalla distanza di ciascun vicino.

Un'alternativa consiste nel ponderare i vicini in base alla loro distanza, attribuendo maggiore influenza ai punti più vicini. Questo si ottiene con weights='distance'.

Per impostazione predefinita, il classificatore utilizza weights='uniform', dove tutti i vicini contribuiscono in egual misura.

P

L'iperparametro p definisce come vengono calcolate le distanze:

  • p=1: Distanza di Manhattan (somma delle differenze assolute tra le coordinate);
  • p=2: Distanza euclidea (la distanza in linea retta, nota dalla geometria).

Un parametro p può assumere qualsiasi intero positivo. Esistono molte distanze diverse, ma sono più difficili da visualizzare rispetto a p=1 o p=2.

Note
Nota

Non preoccuparti se i dettagli di weights o p non sono chiari. Sono introdotti semplicemente per mostrare che esiste più di un iperparametro che può influenzare le previsioni del modello. Considerali come esempi di iperparametri che possono essere ottimizzati.

Nel capitolo precedente, GridSearchCV è stato utilizzato per ottimizzare solo n_neighbors. Per cercare la migliore combinazione di n_neighbors, weights e p, il param_grid può essere definito come:

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

GridSearchCV prova tutte le possibili combinazioni per trovare la migliore, quindi testerà tutte queste:

Ciò aumenta significativamente lo spazio di ricerca. Ad esempio:

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Con 100 combinazioni di iperparametri e cross-validation a 5 fold, il modello viene addestrato e valutato 500 volte.

Per piccoli dataset, questo è gestibile, ma con dataset più grandi e modelli più complessi, il processo diventa molto lento.

Per gestire tali casi, spesso si preferisce RandomizedSearchCV. Esplora solo un sottoinsieme di tutte le possibili combinazioni, riducendo significativamente il tempo di calcolo pur offrendo risultati solidi.

question mark

Il principale problema di GridSearchCV è che prova tutte le possibili combinazioni (di quelle specificate in param_grid), il che può richiedere molto tempo. Questa affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 7
some-alt