Verbesserung der Leistung des ML-Modells (Fortsetzung…)

Leistungsverbesserung durch Algorithmus-Tuning

Wie wir wissen, sind ML-Modelle so parametrisiert, dass ihr Verhalten an ein bestimmtes Problem angepasst werden kann. Algorithmus-Tuning bedeutet, die beste Kombination dieser Parameter zu finden, damit die Leistung des ML-Modells verbessert werden kann. Dieser Prozess wird manchmal als Hyperparameteroptimierung bezeichnet, und die Parameter des Algorithmus selbst werden als Hyperparameter bezeichnet, und die vom ML-Algorithmus gefundenen Koeffizienten werden als Parameter bezeichnet.

Hier werden wir einige Methoden zur Optimierung von Algorithmusparametern diskutieren, die von Python Scikit-learn bereitgestellt werden.

Optimierung der Rastersuchparameter

Dies ist ein Ansatz zur Parametereinstellung. Der entscheidende Punkt bei der Arbeit dieser Methode ist, dass sie das Modell für jede mögliche Kombination von in einem Raster angegebenen Algorithmusparametern methodisch erstellt und bewertet. Daher können wir sagen, dass dieser Algorithmus Suchcharakter hat.

Example

Im folgenden Python-Rezept führen wir eine Rastersuche durch, indem wir die GridSearchCV-Klasse von sklearn verwenden, um verschiedene Alpha-Werte für den Ridge-Regressionsalgorithmus für den Diabetes-Datensatz von Pima-Indianern auszuwerten.

Importieren Sie zunächst die erforderlichen Pakete wie folgt:

import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV

Jetzt müssen wir den Pima-Diabetes-Datensatz wie in den vorherigen Beispielen laden -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Bewerten Sie als Nächstes die verschiedenen Alpha-Werte wie folgt:

alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)

Jetzt müssen wir die Rastersuche auf unser Modell anwenden -

model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)

Drucken Sie das Ergebnis mit der folgenden Skriptzeile aus -

print(grid.best_score_)
print(grid.best_estimator_.alpha)

Output

0.2796175593129722
1.0

Die obige Ausgabe gibt uns die optimale Punktzahl und den Satz von Parametern im Raster, die diese Punktzahl erreicht haben. Der Alpha-Wert beträgt in diesem Fall 1,0.

Optimierung der zufälligen Suchparameter

Dies ist ein Ansatz zur Parametereinstellung. Der entscheidende Punkt bei der Arbeit dieser Methode ist, dass sie die Algorithmusparameter aus einer zufälligen Verteilung für eine feste Anzahl von Iterationen abtastet.

Example

Im folgenden Python-Rezept führen wir eine Zufallssuche durch, indem wir die RandomizedSearchCV-Klasse von sklearn verwenden, um verschiedene Alpha-Werte zwischen 0 und 1 für den Ridge Regression-Algorithmus für den Diabetes-Datensatz von Pima Indians zu bewerten.

Importieren Sie zunächst die erforderlichen Pakete wie folgt:

import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV

Jetzt müssen wir den Pima-Diabetes-Datensatz wie in den vorherigen Beispielen laden -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Bewerten Sie als Nächstes die verschiedenen Alpha-Werte des Ridge-Regressionsalgorithmus wie folgt:

param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)

Drucken Sie das Ergebnis mit der folgenden Skriptzeile aus -

print(random_search.best_score_)
print(random_search.best_estimator_.alpha)

Output

0.27961712703051084
0.9779895119966027

Die obige Ausgabe gibt uns die optimale Punktzahl, ähnlich wie bei der Rastersuche.