Mejora del rendimiento del modelo de aprendizaje automático (continuación…)
Mejora del rendimiento con ajuste de algoritmos
Como sabemos, los modelos ML están parametrizados de tal manera que su comportamiento se puede ajustar a un problema específico. El ajuste del algoritmo significa encontrar la mejor combinación de estos parámetros para que se pueda mejorar el rendimiento del modelo ML. Este proceso a veces se denomina optimización de hiperparámetros y los parámetros del algoritmo en sí se denominan hiperparámetros y los coeficientes encontrados por el algoritmo ML se denominan parámetros.
Aquí, vamos a discutir sobre algunos métodos para el ajuste de parámetros de algoritmos proporcionados por Python Scikit-learn.
Ajuste de parámetros de búsqueda de cuadrícula
Es un enfoque de ajuste de parámetros. El punto clave del trabajo de este método es que construye y evalúa el modelo metódicamente para cada combinación posible de parámetro de algoritmo especificado en una cuadrícula. Por lo tanto, podemos decir que este algoritmo tiene naturaleza de búsqueda.
Example
En la siguiente receta de Python, realizaremos una búsqueda en cuadrícula utilizando la clase GridSearchCV de sklearn para evaluar varios valores alfa para el algoritmo Ridge Regression en el conjunto de datos de diabetes de los indios Pima.
Primero, importe los paquetes necesarios de la siguiente manera:
import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
Ahora, debemos cargar el conjunto de datos de diabetes Pima como se hizo en ejemplos anteriores:
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]
A continuación, evalúe los distintos valores alfa de la siguiente manera:
alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)
Ahora, debemos aplicar la búsqueda de cuadrícula en nuestro modelo:
model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)
Imprima el resultado con la siguiente línea de secuencia de comandos:
print(grid.best_score_)
print(grid.best_estimator_.alpha)
Output
0.2796175593129722
1.0
La salida anterior nos da la puntuación óptima y el conjunto de parámetros en la cuadrícula que logró esa puntuación. El valor alfa en este caso es 1.0.
Ajuste de parámetros de búsqueda aleatoria
Es un enfoque de ajuste de parámetros. El punto clave del funcionamiento de este método es que muestrea los parámetros del algoritmo de una distribución aleatoria para un número fijo de iteraciones.
Example
En la siguiente receta de Python, realizaremos una búsqueda aleatoria utilizando la clase RandomizedSearchCV de sklearn para evaluar diferentes valores alfa entre 0 y 1 para el algoritmo de regresión de Ridge en el conjunto de datos de diabetes de los indios Pima.
Primero, importe los paquetes necesarios de la siguiente manera:
import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
Ahora, debemos cargar el conjunto de datos de diabetes Pima como se hizo en ejemplos anteriores:
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]
A continuación, evalúe los diversos valores alfa en el algoritmo de regresión Ridge de la siguiente manera:
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)
Imprima el resultado con la siguiente línea de secuencia de comandos:
print(random_search.best_score_)
print(random_search.best_estimator_.alpha)
Output
0.27961712703051084
0.9779895119966027
La salida anterior nos da la puntuación óptima similar a la búsqueda de cuadrícula.