[PYTHON] Versuchen Sie die Funktionsoptimierung mit Hyperopt

Einführung

Hyperopt ist ein automatisches Optimierungsframework für Hyperparameter. Es scheint hauptsächlich für die Optimierung von Hyperparametern beim maschinellen Lernen verwendet zu werden.

Vorbereitung

Lassen Sie uns zuerst die Bibliothek installieren. Sie können es mit pip install hyperopt </ font> installieren.

Experiment

Diesmal

x^2+y^2+z^2

Optimieren wir das Minimierungsproblem von.

Objektive Funktionsdefinition

Definieren wir zunächst die Zielfunktion.

#Zielfunktion einstellen
def objective_hyperopt(args):
    x, y, z = args
    return x ** 2 + y ** 2 + z ** 2

Optimierungsausführung

Stellen Sie zunächst den Suchraum für die zu optimierenden Parameter ein. Verwenden Sie dann fmin (), um die Suche zu starten. Legen Sie die Anzahl der Suchvorgänge mit dem Argument max_evals fest.

#Optimiert mit Hyperopt
def hyperopt_exe():
    space = [
        hp.uniform('x', -100, 100),
        hp.uniform('y', -100, 100),
        hp.uniform('z', -100, 100)
    ]

    #Ein Objekt zum Aufzeichnen des Suchstatus
    trials = Trials()

    #Beginnen Sie mit der Erkundung
    best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)

Wenn Sie das Endergebnis wissen möchten, fügen Sie Folgendes hinzu.

    #Das Ergebnis ausgeben
    print(best)

Lassen Sie uns die gesuchten Informationen aus dem Testobjekt abrufen. Sie können die Parameter und Zielfunktionswerte für jeden Versuch anzeigen, indem Sie Folgendes hinzufügen.

    #Untersuchen Sie den Suchvorgang
    for i, n in zip(trials.trials, range(500)):
        vals = i['misc']['vals']
        result = i['result']['loss']
        print('vals:', vals, 'result:', result)

Code

Der Code lautet diesmal wie folgt.

# -*- coding: utf-8 -*-
import hyperopt
from hyperopt import hp
from hyperopt import fmin
from hyperopt import tpe
from hyperopt import Trials
import matplotlib.pyplot as plt

#Stellen Sie die Zielfunktion für Hyperopt ein
def objective_hyperopt(args):
    x, y, z = args
    return x ** 2 + y ** 2 + z ** 2

#Optimiert mit Hyperopt
def hyperopt_exe():
    #Suchraumeinstellungen
    space = [
        hp.uniform('x', -100, 100),
        hp.uniform('y', -100, 100),
        hp.uniform('z', -100, 100)
    ]

    #Ein Objekt zum Aufzeichnen des Suchstatus
    trials = Trials()

    #Beginnen Sie mit der Erkundung
    best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)
    #Das Ergebnis ausgeben
    print(best)

    epoches = []
    values = []
    best = 100000
    #Untersuchen Sie den Suchvorgang
    for i, n in zip(trials.trials, range(500)):
        if best > i['result']['loss']:
            best = i['result']['loss']
        epoches.append(n+1)
        values.append(best)
        vals = i['misc']['vals']
        result = i['result']['loss']
        print('vals:', vals, 'result:', result)

    #Zeichnen Sie ein Diagramm
    plt.plot(epoches, values, color="red")
    plt.title("hyperopt")
    plt.xlabel("trial")
    plt.ylabel("value")
    plt.show()

if __name__ == '__main__':
    hyperopt_exe()

Ergebnis

Die Figur des Ergebnisses dieses Experiments ist wie folgt. Es ist in einem frühen Stadium konvergiert. hyperopt.png

Referenzseite

Funktionsoptimierung mit Hyperopt Python: Hyperparameter für maschinelles Lernmodell mit Hyperopt auswählen

Recommended Posts

Versuchen Sie die Funktionsoptimierung mit Hyperopt
Versuchen Sie die Funktionsoptimierung mit Optuna
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Versuchen Sie es mit der Datenintegrationsfunktion von scanpy (sc.tl.ingest).
Versuchen Sie es mit Geopandas
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit Platypus, einer Mehrzweckoptimierungsbibliothek
Versuchen Sie es mit PyODE
Versuchen Sie, das Problem der Funktionsminimierung mithilfe der Partikelgruppenoptimierung zu lösen
Funktionsanpassung (mit Keras)
Versuchen Sie es mit virtualenv (virtualenvwrapper)
[Azure] Versuchen Sie, Azure-Funktionen zu verwenden
Versuchen Sie es jetzt mit virtualenv
Versuchen Sie es mit W & B.
Versuchen Sie es mit Django templates.html
[Kaggle] Versuchen Sie es mit LGBM
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter
Versuchen Sie es mit Tweepy [Python2.7]
Versuchen Sie es mit Pytorchs collate_fn
Versuchen Sie, PythonTex mit Texpad zu verwenden.
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie es mit Jupyters Docker-Image
Versuchen Sie es mit Scikit-Learn (1) - K-Clustering nach Durchschnittsmethode
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie es mit Azure Logic Apps
Versuchen Sie es mit Kubernetes Client -Python-
[Kaggle] Versuchen Sie es mit xg boost
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit OpenCV unter Windows
Versuchen Sie, Jupyter Notebook dynamisch zu verwenden
[Optimierungsproblem] Optuna vs Hyperopt
Versuchen Sie es mit AWS SageMaker Studio
Versuchen Sie, automatisch mit Selen zu twittern.
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 1)
Versuchen Sie es mit der Twitter-API
Hinweise zur Optimierung mit Pytorch
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 2)
Versuchen Sie es mit der Vorlagenfunktion von Django
Versuchen Sie es mit der PeeringDB 2.0-API
Versuchen Sie es mit der Entwurfsfunktion von Pelican
Versuchen Sie es mit pytest-Overview und Samples-
Versuchen Sie, eine in Python geschriebene Funktion mit Fn Project auszuführen
Versuchen Sie die Verschlüsselung / Entschlüsselung mit dem OpenSSL-Schlüssel mit Python3-Pow-Funktion
Versuchen Sie es mit Folium mit Anakonda
Versuchen Sie es mit der Admin-API von Janus Gateway
Versuchen Sie es mit Spyder, das in Anaconda enthalten ist
Lösen Sie multivariate Optimierungsprobleme mit sagemath
Versuchen Sie es mit Designmustern (Exporter Edition)
Versuchen Sie es mit Pillow auf iPython (Teil 1)
Versuchen Sie es mit Pillow auf iPython (Teil 2)
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).