Melhorando o desempenho do modelo de ML (continuação ...)

Melhoria de desempenho com ajuste de algoritmo

Como sabemos, os modelos de ML são parametrizados de tal forma que seu comportamento pode ser ajustado para um problema específico. O ajuste do algoritmo significa encontrar a melhor combinação desses parâmetros para que o desempenho do modelo de ML possa ser melhorado. Esse processo às vezes é chamado de otimização de hiperparâmetros e os parâmetros do próprio algoritmo são chamados de hiperparâmetros e os coeficientes encontrados pelo algoritmo de ML são chamados de parâmetros.

Aqui, vamos discutir sobre alguns métodos para ajuste de parâmetro de algoritmo fornecidos pelo Python Scikit-learn.

Ajuste de parâmetro de pesquisa de grade

É uma abordagem de ajuste de parâmetro. O ponto principal de trabalho desse método é que ele constrói e avalia o modelo metodicamente para cada combinação possível de parâmetro de algoritmo especificado em uma grade. Logo, podemos dizer que este algoritmo tem natureza de busca.

Example

Na seguinte receita do Python, vamos realizar a pesquisa em grade usando a classe GridSearchCV do sklearn para avaliar vários valores alfa para o algoritmo Ridge Regression no conjunto de dados de diabetes dos índios Pima.

Primeiro, importe os pacotes necessários da seguinte forma -

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

Agora, precisamos carregar o conjunto de dados de diabetes Pima como fizemos nos exemplos 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]

Em seguida, avalie os vários valores alfa da seguinte forma -

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

Agora, precisamos aplicar a pesquisa de grade em nosso modelo -

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

Imprima o resultado com a seguinte linha de script -

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

Output

0.2796175593129722
1.0

A saída acima nos dá a pontuação ideal e o conjunto de parâmetros na grade que alcançou essa pontuação. O valor alfa neste caso é 1,0.

Ajuste de parâmetro de pesquisa aleatória

É uma abordagem de ajuste de parâmetro. O ponto principal de trabalho desse método é que ele faz uma amostra dos parâmetros do algoritmo a partir de uma distribuição aleatória para um número fixo de iterações.

Example

Na seguinte receita Python, vamos realizar uma pesquisa aleatória usando a classe RandomizedSearchCV do sklearn para avaliar diferentes valores alfa entre 0 e 1 para o algoritmo Ridge Regression no conjunto de dados de diabetes dos índios Pima.

Primeiro, importe os pacotes necessários da seguinte forma -

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

Agora, precisamos carregar o conjunto de dados de diabetes Pima como fizemos nos exemplos 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]

Em seguida, avalie os vários valores alfa no algoritmo de regressão de Ridge da seguinte forma -

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 o resultado com a seguinte linha de script -

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

Output

0.27961712703051084
0.9779895119966027

A saída acima nos dá a pontuação ideal, semelhante à pesquisa em grade.