Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Gebrek van GridSearchCV | Modelleren
ML-Introductie met Scikit-learn

bookHet Gebrek van GridSearchCV

Voordat GridSearchCV wordt besproken, is het belangrijk op te merken dat KNeighborsClassifier meerdere hyperparameters heeft naast n_neighbors. Twee daarvan zijn: weights en p.

Weights

KNeighborsClassifier voorspelt door de k dichtstbijzijnde buren te vinden en de meest voorkomende klasse onder hen toe te wijzen, ongeacht hoe dichtbij elke buur is.

Een alternatief is om buren te wegen op basis van hun afstand, waardoor dichterbij gelegen punten meer invloed krijgen. Dit gebeurt met weights='distance'.

Standaard gebruikt de classifier weights='uniform', waarbij alle buren evenveel bijdragen.

P

De hyperparameter p bepaalt hoe afstanden worden berekend:

  • p=1: Manhattan distance (som van absolute verschillen tussen coördinaten);
  • p=2: Euclidische afstand (de rechte lijn afstand, bekend uit de meetkunde).

Een p-parameter kan elke positieve integer aannemen. Er bestaan veel verschillende afstanden, maar deze zijn moeilijker te visualiseren dan bij p=1 of p=2.

Note
Opmerking

Maak je geen zorgen als de details van weights of p onduidelijk zijn. Ze worden hier geïntroduceerd om te laten zien dat er meer dan één hyperparameter is die de voorspellingen van het model kan beïnvloeden. Zie ze als voorbeelden van hyperparameters die afgestemd kunnen worden.

In het vorige hoofdstuk werd GridSearchCV gebruikt om alleen n_neighbors af te stemmen. Om te zoeken naar de beste combinatie van n_neighbors, weights en p, kan de param_grid als volgt worden gedefinieerd:

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

GridSearchCV probeert alle mogelijke combinaties om de beste te vinden, dus het zal al deze proberen:

Dit vergroot de zoekruimte aanzienlijk. Bijvoorbeeld:

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

Met 100 hyperparametercombinaties en 5-voudige cross-validatie wordt het model 500 keer getraind en geëvalueerd.

Voor kleine datasets is dit beheersbaar, maar bij grotere datasets en complexere modellen wordt het proces zeer traag.

Om dergelijke gevallen aan te pakken, wordt vaak RandomizedSearchCV gebruikt. Deze methode onderzoekt slechts een deel van alle mogelijke combinaties, waardoor de rekentijd aanzienlijk wordt verminderd terwijl toch sterke resultaten worden behaald.

question mark

Het belangrijkste probleem van GridSearchCV is dat het alle mogelijke combinaties probeert (van wat is gespecificeerd in param_grid), wat veel tijd kan kosten. Is deze uitspraak correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookHet Gebrek van GridSearchCV

Veeg om het menu te tonen

Voordat GridSearchCV wordt besproken, is het belangrijk op te merken dat KNeighborsClassifier meerdere hyperparameters heeft naast n_neighbors. Twee daarvan zijn: weights en p.

Weights

KNeighborsClassifier voorspelt door de k dichtstbijzijnde buren te vinden en de meest voorkomende klasse onder hen toe te wijzen, ongeacht hoe dichtbij elke buur is.

Een alternatief is om buren te wegen op basis van hun afstand, waardoor dichterbij gelegen punten meer invloed krijgen. Dit gebeurt met weights='distance'.

Standaard gebruikt de classifier weights='uniform', waarbij alle buren evenveel bijdragen.

P

De hyperparameter p bepaalt hoe afstanden worden berekend:

  • p=1: Manhattan distance (som van absolute verschillen tussen coördinaten);
  • p=2: Euclidische afstand (de rechte lijn afstand, bekend uit de meetkunde).

Een p-parameter kan elke positieve integer aannemen. Er bestaan veel verschillende afstanden, maar deze zijn moeilijker te visualiseren dan bij p=1 of p=2.

Note
Opmerking

Maak je geen zorgen als de details van weights of p onduidelijk zijn. Ze worden hier geïntroduceerd om te laten zien dat er meer dan één hyperparameter is die de voorspellingen van het model kan beïnvloeden. Zie ze als voorbeelden van hyperparameters die afgestemd kunnen worden.

In het vorige hoofdstuk werd GridSearchCV gebruikt om alleen n_neighbors af te stemmen. Om te zoeken naar de beste combinatie van n_neighbors, weights en p, kan de param_grid als volgt worden gedefinieerd:

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

GridSearchCV probeert alle mogelijke combinaties om de beste te vinden, dus het zal al deze proberen:

Dit vergroot de zoekruimte aanzienlijk. Bijvoorbeeld:

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

Met 100 hyperparametercombinaties en 5-voudige cross-validatie wordt het model 500 keer getraind en geëvalueerd.

Voor kleine datasets is dit beheersbaar, maar bij grotere datasets en complexere modellen wordt het proces zeer traag.

Om dergelijke gevallen aan te pakken, wordt vaak RandomizedSearchCV gebruikt. Deze methode onderzoekt slechts een deel van alle mogelijke combinaties, waardoor de rekentijd aanzienlijk wordt verminderd terwijl toch sterke resultaten worden behaald.

question mark

Het belangrijkste probleem van GridSearchCV is dat het alle mogelijke combinaties probeert (van wat is gespecificeerd in param_grid), wat veel tijd kan kosten. Is deze uitspraak correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 7
some-alt