Die Hyperparameter-Abstimmung ist eine Technik, mit der die Genauigkeit des Modells verbessert wird. Wenn Sie ein Modell mit scikit-learn erstellen und keine Parameter festlegen, wird es mit der entsprechenden Komplexität festgelegt.
Es ist ein Parameter, der vor dem Training festgelegt wird und die Trainingsmethode, Geschwindigkeit und Modellkomplexität bestimmt.
Quelle: http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
Es ist eine Methode, Kandidaten für jeden Parameter zu bestimmen und alle Kombinationen davon auszuprobieren. Da alle ausprobiert werden, ist es nicht möglich, die Anzahl der Parameterkandidaten zu erhöhen.
Es ist eine Methode, Kandidaten für jeden Parameter zu bestimmen und eine zufällige Kombination von Parametern n-mal zu wiederholen. Es ist möglicherweise nicht möglich, nach einer besseren Kombination von Parametern zu suchen, da wir nicht alle ausprobieren.
import numpy as np
params_list01 = [1, 3, 5, 7]
params_list02 = [1, 2, 3, 4, 5]
#Rastersuche
grid_search_params = []
for p1 in params_list01:
for p2 in params_list02:
grid_search_params.append(p1, p2)
# append():Fügen Sie am Ende der Liste ein Element hinzu
#Zufällige Suche
random_search_params = []
count = 10
for i in range(count):
p1 = np.random.choice(params_list01) # random.choice():Holen Sie sich den Inhalt des Arrays zufällig
p2 = np.random.choice(params_list02)
random_search_params.append(p1, p2)
scikit-learn
Klicken Sie hier, um eine Referenz zum Scikit-Lernen zu erhalten
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
params = {
"max_depth": [2, 4, 6, 8, None],
"n_estimators": [50,100,200,300,400,500],
"max_features": range(1, 11),
"min_samples_split": range(2, 11),
"min_samples_leaf": range(1, 11)
}
#Rastersuche
gscv = GridSearchCV(RandomForestRegressor(), params, cv=3, n_jobs=-1, verbose=1)
gscv.fit(X_train_valid, y_train_valid)
print("Best score: {}".format(gscv.best_score_))
print("Best parameters: {}".format(gscv.best_params_))
#Zufällige Suche
rscv = RandomizedSearchCV(RandomForestRegressor(), params, cv=3, n_iter=10, n_jobs=-1, verbose=1)
rscv.fit(X_train_valid, y_train_valid)
print("Best score: {}".format(rscv.best_score_))
print("Best parameters: {}".format(rscv.best_params_))
Bei der Frage, welche übernommen werden soll, wird eine zufällige Suche durchgeführt. Es scheint, dass eine gute Kombination von Parametern effizient gefunden werden kann.
Buch: Datenanalysetechnologie, die mit Kaggle gewinnt (Technical Review)
Recommended Posts