Miglioramento delle prestazioni del modello ML (continua ...)

Miglioramento delle prestazioni con l'ottimizzazione dell'algoritmo

Come sappiamo, i modelli ML sono parametrizzati in modo tale che il loro comportamento possa essere regolato per un problema specifico. L'ottimizzazione dell'algoritmo significa trovare la migliore combinazione di questi parametri in modo che le prestazioni del modello ML possano essere migliorate. Questo processo a volte chiamato ottimizzazione iperparametrica ei parametri dell'algoritmo stesso sono chiamati iperparametri e i coefficienti trovati dall'algoritmo ML sono chiamati parametri.

Qui discuteremo di alcuni metodi per la regolazione dei parametri degli algoritmi forniti da Python Scikit-learn.

Regolazione dei parametri di ricerca della griglia

È un approccio di regolazione dei parametri. Il punto chiave del funzionamento di questo metodo è che costruisce e valuta metodicamente il modello per ogni possibile combinazione di parametri di algoritmo specificati in una griglia. Quindi, possiamo dire che questo algoritmo ha natura di ricerca.

Example

Nella seguente ricetta Python, eseguiremo la ricerca sulla griglia utilizzando la classe GridSearchCV di sklearn per valutare vari valori alfa per l'algoritmo di regressione di Ridge sul set di dati sul diabete degli indiani Pima.

Innanzitutto, importa i pacchetti richiesti come segue:

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

Ora, dobbiamo caricare il set di dati sul diabete Pima come negli esempi precedenti -

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]

Quindi, valuta i vari valori alfa come segue:

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

Ora, dobbiamo applicare la ricerca griglia sul nostro modello:

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

Stampa il risultato con la seguente riga di script:

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

Output

0.2796175593129722
1.0

L'output di cui sopra ci fornisce il punteggio ottimale e l'insieme di parametri nella griglia che hanno raggiunto quel punteggio. Il valore alfa in questo caso è 1.0.

Sintonizzazione dei parametri di ricerca casuale

È un approccio di regolazione dei parametri. Il punto chiave del funzionamento di questo metodo è che campiona i parametri dell'algoritmo da una distribuzione casuale per un numero fisso di iterazioni.

Example

Nella seguente ricetta Python, eseguiremo una ricerca casuale utilizzando la classe di sklearn RandomizedSearchCV per valutare diversi valori alfa tra 0 e 1 per l'algoritmo di regressione della cresta sul set di dati del diabete degli indiani Pima.

Innanzitutto, importa i pacchetti richiesti come segue:

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

Ora, dobbiamo caricare il set di dati sul diabete Pima come negli esempi precedenti -

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]

Quindi, valuta i vari valori alfa sull'algoritmo di regressione di Ridge come segue:

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)

Stampa il risultato con la seguente riga di script:

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

Output

0.27961712703051084
0.9779895119966027

L'output di cui sopra ci dà il punteggio ottimale proprio simile alla ricerca sulla griglia.