Lernmodell (ML) sollte nicht auswendig lernen Die Trainingsdaten. Stattdessen sollte es lernen intestine aus den angegebenen Trainingsdaten, damit sie können verallgemeinern Intestine zu neuen, unsichtbaren Daten.
Die Standardeinstellungen eines ML -Modells funktionieren möglicherweise nicht intestine für jede Artwork von Drawback, die wir zu lösen versuchen. Wir müssen diese Einstellungen manuell anpassen, um bessere Ergebnisse zu erzielen. Hier, „Einstellungen“ beziehen sich auf Hyperparameter.
Was ist ein Hyperparameter in einem ML -Modell?
Der Benutzer definiert vor dem Schulungsprozess einen Hyperparameterwert manuell und lernt seinen Wert während des Modelltrainingsprozesses nicht aus den Daten. Nach der Definition bleibt sein Wert festgelegt, bis er vom Benutzer geändert wird.
Wir müssen zwischen einem Hyperparameter und einem Parameter unterscheiden.
Ein Parameter lernt seinen Wert aus den angegebenen Daten, und sein Wert hängt von den Werten der Hyperparameter ab. Während des Trainingsprozesses wird ein Parameterwert aktualisiert.
Hier ist ein Beispiel dafür, wie sich unterschiedliche Hyperparameterwerte auf das Modell der Help Vector Machine (SVM) auswirken.
from sklearn.svm import SVC
clf_1 = SVC(kernel='linear')
clf_2 = SVC(C, kernel='poly', diploma=3)
clf_3 = SVC(C, kernel='poly', diploma=1)
Beide Clf_1 Und Clf_3 Modelle führen die lineare SVM -Klassifizierung durch, während die CLF_2 Das Modell führt eine nichtlineare Klassifizierung durch. In diesem Fall kann der Benutzer sowohl lineare als auch nichtlineare Klassifizierungsaufgaben ausführen, indem er den Wert des „Kernel“ Hyperparameter in der SVC () Klasse.
Was ist Hyperparameter -Tuning?
Die Hyperparameter -Abstimmung ist ein iterativer Prozess, bei dem die Leistung eines Modells optimiert wird, indem die optimalen Werte für Hyperparameter gefunden werden, ohne eine Überanpassung zu verursachen.
Manchmal, wie im obigen SVM -Beispiel, hängt die Auswahl einiger Hyperparameter von der Artwork des Issues (Regression oder Klassifizierung) ab, die wir lösen möchten. In diesem Fall kann der Benutzer einfach festlegen ‚linear‘ zur linearen Klassifizierung und „Poly“ Für nichtlineare Klassifizierung. Es ist eine einfache Auswahl.
Zum Beispiel muss der Benutzer jedoch erweiterte Suchmethoden verwenden, um den Wert für die auszuwählen ‚Grad‘ Hyperparameter.
Bevor wir Suchmethoden diskutieren, müssen wir zwei wichtige Definitionen verstehen: Hyperparameter -Suchraum Und Hyperparameterverteilung.
Hyperparameter -Suchraum
Der Hyperparameter -Suchraum enthält eine Reihe möglicher Hyperparameterwertkombinationen, die vom Benutzer definiert wurden. Die Suche wird auf diesen Raum beschränkt.
Der Suchraum kann sein n-dimensionalWo N ist eine optimistic ganze Zahl.
Die Anzahl der Dimensionen im Suchraum ist die Anzahl der Hyperparameter. (zB 3-dimensionale-3 Hyperparameter).
Der Suchraum ist definiert als ein Python -Wörterbuch, das Hyperparameternamen als Schlüssel und Werte für diese Hyperparameter als Wertelisten enthält.
search_space = {'hyparam_1':(val_1, val_2),
'hyparam_2':(val_1, val_2),
'hyparam_3':('str_val_1', 'str_val_2')}
Hyperparameterverteilung
Die zugrunde liegende Verteilung eines Hyperparameters ist ebenfalls wichtig, da er entscheidet, wie jeder Wert während des Abstimmungsprozesses getestet wird. Es gibt vier Arten von beliebten Verteilungen.
- Einheitliche Verteilung: Alle Mögliche Werte innerhalb des Suchraums werden gleich ausgewählt.
- Logarithmische Verteilung: A Die logarithmische Skala wird auf einheitlich verteilte Werte angewendet. Dies ist nützlich, wenn der Bereich der Hyperparameter groß ist.
- Normalverteilung: Die Werte werden um einen Mittelwert von Null und eine Standardabweichung von 1 verteilt.
- Log-normale Verteilung: A Die logarithmische Skala wird auf regular verteilte Werte angewendet. Dies ist nützlich, wenn der Bereich der Hyperparameter groß ist.
Die Auswahl der Verteilung hängt auch von der Artwork des Werts des Hyperparameters ab. Ein Hyperparameter kann diskrete oder kontinuierliche Werte annehmen. Ein diskreter Wert kann eine Ganzzahl oder eine Zeichenfolge sein, während ein kontinuierlicher Wert immer schwimmende Punktzahlen erfordert.
from scipy.stats import randint, uniform, loguniform, norm
# Outline the parameter distributions
param_distributions = {
'hyparam_1': randint(low=50, excessive=75),
'hyparam_2': uniform(loc=0.01, scale=0.19),
'hyparam_3': loguniform(0.1, 1.0)
}
- Randint (50, 75): Wählt zufällige Ganzzahlen zwischen 50 und 74 aus
- Uniform (0,01, 0,49): Wählt Gleitkomma-Zahlen gleichmäßig zwischen 0,01 und 0,5 (kontinuierliche gleichmäßige Verteilung) aus
- loguniform (0,1, 1,0): Wählt Werte zwischen 0,1 und 1,0 auf einer logarithmischen Skala (logarithmisch-uniforme Verteilung) aus.
Hyperparameter -Tuning -Methoden
Es gibt viele verschiedene Arten von Hyperparameter -Tuning -Methoden. In diesem Artikel werden wir uns nur auf drei Methoden konzentrieren, die unter die fallen erschöpfende Suche Kategorie. Bei einer umfassenden Suche durchsucht der Suchalgorithmus ausführlich den gesamten Suchraum. In dieser Kategorie gibt es drei Methoden: manuelle Suche, Gittersuche und zufällige Suche.
Manuelle Suche
Es gibt keinen Suchalgorithmus, um eine manuelle Suche durchzuführen. Der Benutzer legt nur einige Werte basierend auf dem Instinkt fest und sieht die Ergebnisse. Wenn das Ergebnis nicht intestine ist, versucht der Benutzer einen anderen Wert und so weiter. Der Benutzer lernt aus früheren Versuchen, in zukünftigen Versuchen bessere Werte festzulegen. Daher fällt die manuelle Suche unter die informierte Suche Kategorie.
Es gibt keine klare Definition des Hyperparameter -Suchraums in der manuellen Suche. Diese Methode kann zeitaufwändig sein, kann jedoch nützlich sein, wenn sie mit anderen Methoden wie Gittersuche oder zufälliger Suche kombiniert werden.
Die manuelle Suche wird schwierig, wenn wir zwei oder mehr Hyperparameter gleichzeitig durchsuchen müssen.
Ein Beispiel für die manuelle Suche ist, dass der Benutzer einfach einstellen kann ‚linear‘ zur linearen Klassifizierung und „Poly“ Für nichtlineare Klassifizierung in einem SVM-Modell.
from sklearn.svm import SVC
linear_clf = SVC(kernel='linear')
non_linear_clf = SVC(C, kernel='poly')
Gittersuche
Bei der Grid -Suche testet der Suchalgorithmus alle möglichen Hyperparameter -Kombinationen, die im Suchraum definiert sind. Daher ist diese Methode eine Brute-Drive-Methode. Diese Methode ist zeitaufwändig und erfordert mehr Rechenleistung, insbesondere wenn die Anzahl der Hyperparameter zunimmt (Fluch der Dimensionalität).
Um diese Methode effektiv zu verwenden, müssen wir einen genau definierten Hyperparameter-Suchraum haben. Andernfalls werden wir viel Zeit damit verschwenden, unnötige Kombinationen zu testen.
Der Benutzer muss jedoch nicht die Verteilung von Hyperparametern angeben.
Der Suchalgorithmus lernt nicht aus früheren Versuchen (Iterationen) und versucht daher keine besseren Werte in zukünftigen Versuchen. Daher fällt die Grid -Suche unter die Uninformierte Suche Kategorie.
Zufällige Suche
Bei der zufälligen Suche testet der Suchalgorithmus zufällig Hyperparameterwerte in jeder Iteration. Wie bei der Grid -Suche lernt es nicht aus früheren Versuchen und versucht daher bei zukünftigen Versuchen keine besseren Werte. Daher fällt auch die zufällige Suche unter Uninformierte Suche.

Die zufällige Suche ist viel besser als die Suche nach der Gitter, wenn ein großer Suchraum vorhanden ist und wir keine Ahnung vom Hyperparameterraum haben. Es wird auch als rechnerisch effizient angesehen.
Wenn wir die gleiche Größe des Hyperparameterraums für die Rastersuchung und die zufällige Suche anbieten, können wir zwischen beiden keinen großen Unterschied sehen. Wir müssen einen größeren Suchraum definieren, um die zufällige Suche über die Gittersuche zu nutzen.
Es gibt zwei Möglichkeiten, die Größe des Hyperparameter -Suchraums zu erhöhen.
- Durch Erhöhen der Dimensionalität (Hinzufügen neuer Hyperparameter)
- Durch Erweiterung des Bereichs der Hyperparameter
Es wird empfohlen, die zugrunde liegende Verteilung für jeden Hyperparameter zu definieren. Wenn nicht definiert, verwendet der Algorithmus die Standardeinstellung, die die gleichmäßige Verteilung ist, bei der alle Kombinationen die gleiche Wahrscheinlichkeit haben, ausgewählt zu werden.
Es gibt zwei wichtige Hyperparameter in der zufälligen Suchmethode selbst!
- Salpeter: Die Anzahl der Iterationen oder die Größe der Zufallsstichprobe von Hyperparameter -Kombinationen zu testen. Nimmt eine Ganzzahl. Dies handelt von der Laufzeit gegen die Qualität der Ausgabe. Wir müssen dies definieren, damit der Algorithmus eine zufällige Stichprobe von Kombinationen testen kann.
- random_state: Wir müssen diesen Hyperparameter definieren, um die gleiche Ausgabe über mehrere Funktionsaufrufe hinweg zu erhalten.
Der Hauptnachteil der zufälligen Suche besteht darin, dass sie über mehrere Funktionsaufrufe verschiedener zufälliger Zustände hinweg hohe Varianz erzeugt.
Dies ist das Ende des heutigen Artikels.
Bitte lassen Sie mich wissen, ob Sie Fragen oder Suggestions haben.
Wie wäre es mit einem KI -Kurs?
Wir sehen uns im nächsten Artikel. Viel Spaß beim Lernen für Sie!
Entworfen und geschrieben von:
Rukshan Pramoditha
2025–08–22
