[PYTHON] Überwachtes Lernen 3 Hyperparameter und Abstimmung (2)

Aidemy 2020/9/27

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur KI-Fachschule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der dritte Beitrag des überwachten Lernens. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ Hyperparameter für Entscheidungsbaum, zufällige Gesamtstruktur und k-NN ・ Automatisierung der Abstimmung (Parametereinstellung)

Hyperparameter des Entscheidungsbaums

Parameter max_depth

-__ Max_depth__ gibt die Tiefe des Baums an, den das __- Modell lernt. Wenn dieser Wert nicht festgelegt ist oder der Wert zu groß ist, liegt er zu nahe an den Lehrerdaten und wird nicht verallgemeinert. Begrenzen Sie daher max_depth, um ihn zu verallgemeinern. Dies wird als "Beschneiden des Entscheidungsbaums" bezeichnet.

Parameter random_state

Zufällige Waldhyperparameter

Parameter n_estimators

Parameter max_depth

Parameter random_state

k-NN-Hyperparameter

Parameter n_neighbors

-K-NN ist ein Modell, das "k Lehrerdaten ähnlich den Vorhersagedaten extrahiert und die häufigste Klasse als Vorhersageergebnis ausgibt", aber n_nachbarn gibt den Wert __ dieses __k an. .. Das heißt, "die Anzahl der Lehrerdaten, die zur Vorhersage in Bezug auf eine Daten verglichen werden sollen".

Automatisierung der Abstimmung (Parametereinstellung)

・ Es ist sehr mühsam, alle Parameter einzustellen, während ihre Werte geändert werden. Daher können Sie Zeit sparen, indem Sie den Parameterbereich __ angeben und den Computer den Parametersatz mit den besten Ergebnissen suchen lassen. -Es gibt zwei Arten der Automatisierung: __ "Rastersuche" und "Zufallssuche" __.

Rastersuche

-Grid-Suche ist eine __ Methode, bei der mehrere Kandidaten für __ Parameterwerte im Voraus angegeben werden, jeder Satz ausgewertet wird und der Satz mit den besten Ergebnissen übernommen wird.

from sklearn.model_selection import GridSearchCV
#Parameterkandidaten (Kernel ist nicht vorberechnet, C ist-5~10 zur i-ten Potenz mit bis zu 5 als Index)
set_grid = {SVC():{"kernel":["linear","poly","rbf","sigmoid"],"C":[10**i for i in range(-5,5)],"decision_function_shape":["ovr","ovo"],"random_state":[0]}}
#Definieren Sie die "richtige Antwortrate" und den "verwendeten Parameter" mit den besten Ergebnissen, die später gespeichert werden sollen
max_score = 0
best_param = None
#set_Führen Sie eine Rastersuche mit "SVC ()" des Rasters als "Modell" und "Parameter (Kandidat)" als "Parameter" durch.
for model,param in set_grid.items():
    search_model = GridSearchCV(model, param)
    search_model.fit(train_X, train_y)
#Berechnen Sie die richtige Antwortrate und speichern Sie den Parametersatz mit den besten Ergebnissen und der richtigen Antwortrate.
    pred_y = search_model.predict(test_X)
    score = f1_score(test_y,pred_y,average="micro")
    if max_score<score:
        max_score = score
        best_model = model.class.name
        best_param = searchmodel.best_param

Zufällige Suche

import scipy.stats as sc
from sklearn.model_selection import RandomizedSearchCV
#Parameterkandidaten (C ist durchschnittlich 0).00001,Gleichmäßige Verteilung mit Standardabweichung von 1000, zufällig_state nimmt zufällig einen ganzzahligen Wert von 0 bis 100 an)
set_rondom = {SVC():{"kernel":["linear","poly","rbf","sigmoid"],"C":sc.uniform(0.00001,1000),"decision_function_shape":["ovr","ovo"],"random_state":sc.randint(0,100)}}
#Definieren Sie die "richtige Antwortrate" und den "verwendeten Parameter" mit den besten Ergebnissen, die später gespeichert werden sollen(Das Folgende ist fast das gleiche wie das Gitter)
max_score = 0
best_param = None
#set_Führen Sie eine zufällige Suche mit "SVC ()" im Raster als "Modell" und "Parameter (Kandidat)" als "Parameter" durch.
for model,param in set_random.items():
    search_model = RandomizedSearchCV(model, param)
    search_model.fit(train_X, train_y)
#Berechnen Sie die richtige Antwortrate und speichern Sie den Parametersatz mit den besten Ergebnissen und der richtigen Antwortrate.
    pred_y = search_model.predict(test_X)
    score = f1_score(test_y,pred_y,average="micro")
    if max_score<score:
        max_score = score
        best_model = model.__class__.__name__
        best_param = search_model.best_params_

Schwierigkeiten bei der Einstellung der Hyperparameter

-Automatische Parametereinstellung verwendet grundsätzlich eine Methode namens Gradientenmethode, bei der der Wert verschoben wird, um die Verlustfunktion zu reduzieren. Bei dieser Gradientenmethode gibt es eine Pseudolösung __ Sattelpunkt __, und wenn Sie sich darauf einlassen, können Sie die ursprüngliche Lösung nicht erreichen. ・ Da sich diese Verlustfunktion jedoch je nach Fall ändert, muss beim Versuch die Einstellung __ festgelegt werden. __ __

Zusammenfassung

-Der Hyperparameter des Entscheidungsbaums enthält zusätzlich zu __ "max_depth" __ "random_state", wodurch die Tiefe des Baums begrenzt wird.

Diese Zeit ist vorbei. Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

Überwachtes Lernen 3 Hyperparameter und Abstimmung (2)
Überwachtes Lernen 2 Hyperparameter und Abstimmung (1)
Python: Überwachtes Lernen: Hyperparameter Teil 2
Betreutes Lernen (Klassifizierung)
Maschinelles Lernen: Betreut --AdaBoost
Python: Deep Learning Tuning
Lernen mit einem Lehrer (Rückkehr) 1 Grundlagen
Python: Überwachtes Lernen (Rückkehr)
Python: Überwachtes Lernen (Klassifizierung)
Hyperparameter-Tuning mit LightGBM-Tuner
Ensemble-Lernen und Korbanalyse
Maschinelles Lernen: Überwacht - Lineare Regression
Deep Running 2 Tuning von Deep Learning
Maschinelles Lernen: Überwacht - Zufälliger Wald
Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Lernen mit dem Lehrer (Rückkehr) 2 Advanced Edition
Maschinelles Lernen und mathematische Optimierung
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Modellbildung, Lernen und Denken lernen
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Python: Anwendung des überwachten Lernens (Rückkehr)
Random Forest (Klassifizierung) und Hyperparameter-Tuning
Klassifikation und Regression beim maschinellen Lernen
Organisation von Plattformen für maschinelles Lernen und tiefes Lernen
Maschinelles Lernen: Überwacht - Lineare Diskriminanzanalyse