Mit der weit verbreiteten Beliebtheit von Anwendungen für maschinelles Lernen haben immer mehr Datenwissenschaftler und Entwickler für maschinelles Lernen begonnen, der Optimierung der Modellleistung Aufmerksamkeit zu schenken, wobei die Optimierung von Hyperparametern ein unverzichtbarer Bestandteil ist. Beim maschinellen Lernen stellen Hyperparameter Parameter eines Modells dar und nicht Gewichte, die aus Trainingsdaten gelernt werden. Falsche Hyperparametereinstellungen können zu einer schlechten Modellleistung während des Trainings und Tests führen, daher ist die Optimierung der Hyperparameter ein wichtiger Schritt.
Python bietet viele beliebte Bibliotheken für maschinelles Lernen, wie Scikit-learn, TensorFlow usw. Diese Bibliotheken bieten viele Tools, die uns bei der Optimierung von Hyperparametern helfen. In diesem Artikel besprechen wir einige Tipps zur Optimierung von Hyperparametern für maschinelles Lernen in Python.
Die Rastersuche ist eine einfache und effektive Methode zur Optimierung von Hyperparametern. Die Kernidee besteht darin, verschiedene Hyperparameterkombinationen auszuprobieren und für jede Kombination eine Kreuzvalidierung durchzuführen, um die Hyperparameterkombination mit der besten Leistung zu finden. In Scikit-learn können wir die GridSearchCV-Klasse verwenden, um die Rastersuche zu implementieren.
Das Folgende ist der allgemeine Prozess der Rastersuche:
1) Definieren Sie die Parameter und Parameterkombinationen, die optimiert werden müssen.
2) Verwenden Sie die GridSearchCV-Klasse, um eine Kreuzvalidierung und Rastersuche durchzuführen.
3) Geben Sie das Beste aus Hyperparameterkombination
Wenn Sie beispielsweise die Support Vector Machine (SVM) in Scikit-learn zur Klassifizierung verwenden, können Sie den folgenden Code verwenden, um eine Rastersuche durchzuführen:
from sklearn.model_selection import GridSearchCV from sklearn import svm, datasets iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target parameters = {'kernel':('linear', 'rbf'), 'C':[0.1, 1, 10]} svc = svm.SVC() clf = GridSearchCV(svc, parameters) clf.fit(X, y) print("Best parameters:", clf.best_params_)
Die Rastersuche ist einfach und zuverlässig. Wenn jedoch der umfassende Raum der Hyperparameter groß ist, ist der Rechenaufwand extrem groß. Zufällige Suchmethoden entschärfen diese Situation, indem sie zufällig eine Reihe von Parametern im Parameterraum abtasten und ihre Leistung bewerten. Diese Methode untersucht einen größeren Parameterraum, insbesondere wenn die Parameter einen großen Bereich haben und unabhängig voneinander sind, kann die Zufallssuche bei gleichen Rechenressourcen effizienter sein als die Rastersuche.
Das Folgende ist der allgemeine Prozess der Zufallssuche:
1) Definieren Sie die Parameter und Parameterbereiche, die optimiert werden müssen.
2) Verwenden Sie die RandomizedSearchCV-Klasse, um eine Kreuzvalidierung und Zufallssuche durchzuführen.
3) Geben Sie das Beste aus Hyperparameterkombination
Im Random Forest-Modell kann beispielsweise der folgende Code für die Zufallssuche verwendet werden:
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import RandomizedSearchCV import numpy as np # Load data iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target # Define parameter grid param_grid = {'n_estimators': np.arange(10, 200, 10), 'max_features': ['auto', 'sqrt', 'log2'], 'max_depth' : np.arange(1, 10), 'criterion' :['gini', 'entropy'] } # Random search using 10-fold cross validation rf = RandomForestClassifier() rf_random = RandomizedSearchCV(estimator=rf, param_distributions=param_grid, n_iter=100, cv=10, random_state=42) # Fit the model rf_random.fit(X, y) # Print the best parameters print("Best parameters:", rf_random.best_params_)
Bayesianische Optimierung ist eine effiziente Methode zur Optimierung von Hyperparametern. Diese Methode durchsucht den Hyperparameterraum, indem sie die Hyperparameterkombination auswählt, die die Leistung in jeder Iteration am wahrscheinlichsten verbessert, und konvergiert dabei allmählich. Dieser Ansatz nutzt die Ergebnisse früher Durchläufe als Schlussfolgerung beim Ausprobieren verschiedener Parameter. Da die A-priori-Wahrscheinlichkeit D zur Modellierung der Wahrscheinlichkeitsverteilung der Parameter des Modells verwendet wird, kann er Situationen optimieren, in denen nur ein geringer Umfang an Erkundungen durchgeführt werden kann , und kann gut funktionieren. Es kann diskrete oder kontinuierliche Parameter, verschiedene Arten von Zielfunktionen und Rauschen verarbeiten und voreingestellte Suchregeln automatisch anpassen. Es bietet erhebliche Vorteile bei der mehrdimensionalen Hyperraumoptimierung.
Das Folgende ist der allgemeine Prozess der Bayes'schen Optimierung:
1) Definieren Sie die Parameter und Parameterbereiche, die optimiert werden müssen.
2) Definieren Sie die Zielfunktion und verwenden Sie den Bayes'schen Optimierungsalgorithmus zur Optimierung.
3) Geben Sie das Beste aus Hyperparameter-Kombination
Wenn Sie beispielsweise die Gradient Boosting Machine (GBM) in Scikit-learn zur Klassifizierung verwenden, können Sie den folgenden Code für die Bayes'sche Optimierung verwenden:
from sklearn.datasets import load_iris from sklearn.ensemble import GradientBoostingClassifier from sklearn.model_selection import cross_val_score from bayes_opt import BayesianOptimization # Load data iris = load_iris() X = iris.data[:, :2] y = iris.target # Define objective function def gbmler_learning_rate(learning_rate): gb = GradientBoostingClassifier(learning_rate=learning_rate) return cross_val_score(gb, X, y, cv=5).mean() # Define parameter space param_space = {'learning_rate': (0.01, 1.0)} # Initialize optimizer optimizer = BayesianOptimization( f=gbmler_learning_rate, pbounds=param_space, random_state=42 ) # Optimize optimizer.maximize( init_points=5, n_iter=25 ) # Print the best parameters print("Best parameters:", optimizer.max['params'])
Normalerweise setzt die Superparametersuche die Klassifikatoridee vor der Hyperparametersuche und führt eine Kodierung aller möglichen Hyperparametereinstellungen durch. Während des Suchvorgangs wird beispielsweise jede Hyperparametereinstellung in Form eines Arrays angeordnet und das Array wird als Eingabe verwendet. Das Hauptproblem bei der Durchführung einer Suche mit diesem Ansatz besteht darin, dass die Hyperparameter als Individuen erscheinen und Informationen über ihre interaktiven Auswirkungen verlieren. Dieser Ansatz ist vielmehr Teil einer einfachen und interpretierbaren statistischen Modellierung. Ein weiterer Vorteil der Bayes'schen Optimierung ist die Möglichkeit, bei der probabilistischen Modellinferenz nach Beziehungen zwischen Kameras und eingeschränkten Hyperparametern zu suchen.
Zusammenfassend bietet Python viele Techniken für die Optimierung von Hyperparametern beim maschinellen Lernen, einschließlich Rastersuche, Zufallssuche, Bayes'sche Optimierung und interpretierbare Parametersuche. Die Auswahl einer Methode, die zu Ihrem Datensatz passt, kann Ihnen dabei helfen, bessere Ergebnisse bei der Optimierung von Hyperparametern zu erzielen.
Das obige ist der detaillierte Inhalt vonTipps zur Optimierung von Hyperparametern für maschinelles Lernen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!