Der Fehler von GridSearchCV
Bevor GridSearchCV betrachtet wird, ist es wichtig zu beachten, dass KNeighborsClassifier mehrere Hyperparameter neben n_neighbors besitzt. Zwei davon sind: weights und p.
Gewichte
KNeighborsClassifier trifft Vorhersagen, indem die k nächsten Nachbarn gefunden und die am häufigsten vorkommende Klasse unter ihnen zugewiesen wird, unabhängig davon, wie nah jeder Nachbar ist.
Eine Alternative ist es, Nachbarn nach ihrer Entfernung zu gewichten, sodass näher gelegene Punkte mehr Einfluss erhalten. Dies wird mit weights='distance' erreicht.
Standardmäßig verwendet der Klassifikator weights='uniform', wobei alle Nachbarn gleich gewichtet werden.
P
Der Hyperparameter p definiert, wie Distanzen berechnet werden:
p=1: Manhattan-Distanz (Summe der absoluten Differenzen zwischen den Koordinaten);p=2: Euklidische Distanz (die Luftlinienentfernung, bekannt aus der Geometrie).
Ein p-Parameter kann jede positive ganze Zahl annehmen. Es gibt viele verschiedene Distanzen, aber sie sind schwieriger zu visualisieren als p=1 oder p=2.
Machen Sie sich keine Sorgen, wenn die Details von weights oder p unklar sind. Sie werden lediglich eingeführt, um zu zeigen, dass es mehr als einen Hyperparameter gibt, der die Vorhersagen des Modells beeinflussen kann. Betrachten Sie sie als Beispiele für Hyperparameter, die angepasst werden können.
Im vorherigen Kapitel wurde GridSearchCV verwendet, um nur n_neighbors abzustimmen.
Um die beste Kombination aus n_neighbors, weights und p zu finden, kann das param_grid wie folgt definiert werden:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV testet alle möglichen Kombinationen, um die beste zu finden, daher werden alle folgenden ausprobiert:
Dadurch vergrößert sich der Suchraum erheblich. Zum Beispiel:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Bei 100 Hyperparameter-Kombinationen und 5-facher Kreuzvalidierung wird das Modell 500 Mal trainiert und bewertet.
Für kleine Datensätze ist dies handhabbar, aber bei größeren Datensätzen und komplexeren Modellen wird der Prozess sehr langsam.
Um solche Fälle zu bewältigen, wird häufig RandomizedSearchCV bevorzugt. Es untersucht nur eine Teilmenge aller möglichen Kombinationen, was die Rechenzeit erheblich reduziert und dennoch gute Ergebnisse liefert.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.13
Der Fehler von GridSearchCV
Swipe um das Menü anzuzeigen
Bevor GridSearchCV betrachtet wird, ist es wichtig zu beachten, dass KNeighborsClassifier mehrere Hyperparameter neben n_neighbors besitzt. Zwei davon sind: weights und p.
Gewichte
KNeighborsClassifier trifft Vorhersagen, indem die k nächsten Nachbarn gefunden und die am häufigsten vorkommende Klasse unter ihnen zugewiesen wird, unabhängig davon, wie nah jeder Nachbar ist.
Eine Alternative ist es, Nachbarn nach ihrer Entfernung zu gewichten, sodass näher gelegene Punkte mehr Einfluss erhalten. Dies wird mit weights='distance' erreicht.
Standardmäßig verwendet der Klassifikator weights='uniform', wobei alle Nachbarn gleich gewichtet werden.
P
Der Hyperparameter p definiert, wie Distanzen berechnet werden:
p=1: Manhattan-Distanz (Summe der absoluten Differenzen zwischen den Koordinaten);p=2: Euklidische Distanz (die Luftlinienentfernung, bekannt aus der Geometrie).
Ein p-Parameter kann jede positive ganze Zahl annehmen. Es gibt viele verschiedene Distanzen, aber sie sind schwieriger zu visualisieren als p=1 oder p=2.
Machen Sie sich keine Sorgen, wenn die Details von weights oder p unklar sind. Sie werden lediglich eingeführt, um zu zeigen, dass es mehr als einen Hyperparameter gibt, der die Vorhersagen des Modells beeinflussen kann. Betrachten Sie sie als Beispiele für Hyperparameter, die angepasst werden können.
Im vorherigen Kapitel wurde GridSearchCV verwendet, um nur n_neighbors abzustimmen.
Um die beste Kombination aus n_neighbors, weights und p zu finden, kann das param_grid wie folgt definiert werden:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV testet alle möglichen Kombinationen, um die beste zu finden, daher werden alle folgenden ausprobiert:
Dadurch vergrößert sich der Suchraum erheblich. Zum Beispiel:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Bei 100 Hyperparameter-Kombinationen und 5-facher Kreuzvalidierung wird das Modell 500 Mal trainiert und bewertet.
Für kleine Datensätze ist dies handhabbar, aber bei größeren Datensätzen und komplexeren Modellen wird der Prozess sehr langsam.
Um solche Fälle zu bewältigen, wird häufig RandomizedSearchCV bevorzugt. Es untersucht nur eine Teilmenge aller möglichen Kombinationen, was die Rechenzeit erheblich reduziert und dennoch gute Ergebnisse liefert.
Danke für Ihr Feedback!