Het 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
.
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.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Het 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
.
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.
Bedankt voor je feedback!