Heim > Backend-Entwicklung > Python-Tutorial > Tipps zur Optimierung von Hyperparametern für maschinelles Lernen in Python

Tipps zur Optimierung von Hyperparametern für maschinelles Lernen in Python

WBOY
Freigeben: 2023-06-10 16:23:44
Original
1376 Leute haben es durchsucht

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.

  1. Rastersuche

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_)
Nach dem Login kopieren
  1. Zufallssuche

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_)
Nach dem Login kopieren
  1. Bayesianische Optimierung

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'])
Nach dem Login kopieren
  1. Parametersuche für Interpretierbarkeit

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage