Aidemy 2020/9/27
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)
-__ 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.
-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".
・ 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" __.
-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
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_
-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. __ __
-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