Scikit Learn - Regressão do cume

A regressão de cume ou regularização de Tikhonov é a técnica de regularização que realiza a regularização de L2. Ele modifica a função de perda adicionando a penalidade (quantidade de encolhimento) equivalente ao quadrado da magnitude dos coeficientes.

$$ \ displaystyle \ sum \ limits_ {j = 1} ^ m \ left (Y_ {i} -W_ {0} - \ displaystyle \ sum \ limits_ {i = 1} ^ nW_ {i} X_ {ji} \ right ) ^ {2} + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ nW_i ^ 2 = perda _ {-} função + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ nW_i ^ 2 $$
  • sklearn.linear_model.Ridge é o módulo usado para resolver um modelo de regressão em que a função de perda é a função de mínimos quadrados lineares e a regularização é L2.

Parâmetros

A tabela a seguir consiste nos parâmetros usados ​​por Ridge módulo -

Sr. Não Parâmetro e Descrição
1

alpha - {float, array-like}, forma (n_targets)

Alpha é o parâmetro de ajuste que decide o quanto queremos penalizar o modelo.

2

fit_intercept - booleano

Este parâmetro especifica que uma constante (polarização ou interceptação) deve ser adicionada à função de decisão. Nenhuma interceptação será usada no cálculo, se for definida como falsa.

3

tol - flutuante, opcional, padrão = 1e-4

Ele representa a precisão da solução.

4

normalize - Booleano, opcional, padrão = False

Se este parâmetro for definido como True, o regressor X será normalizado antes da regressão. A normalização será feita subtraindo a média e dividindo pela norma L2. E sefit_intercept = False, este parâmetro será ignorado.

5

copy_X - Booleano, opcional, padrão = Verdadeiro

Por padrão, é verdade, o que significa que X será copiado. Mas se for definido como falso, X pode ser substituído.

6

max_iter - int, opcional

Como o nome sugere, ele representa o número máximo de iterações tomadas para solvers de gradiente conjugado.

7

solver - str, {'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga'} '

Este parâmetro representa qual solucionador usar nas rotinas computacionais. A seguir estão as propriedades das opções neste parâmetro

  • auto - Permite escolher o solucionador automaticamente com base no tipo de dados.

  • svd - Para calcular os coeficientes de Ridge, este parâmetro usa uma Decomposição de Valor Singular de X.

  • cholesky - Este parâmetro usa o padrão scipy.linalg.solve() função para obter uma solução de forma fechada.

  • lsqr - É o mais rápido e usa a rotina de mínimos quadrados regularizada dedicada scipy.sparse.linalg.lsqr.

  • sag - Ele usa processo iterativo e uma descida do Gradiente Médio Estocástico.

  • saga - Ele também usa processo iterativo e uma descida gradiente médio estocástico aprimorada.

8

random_state - int, instância RandomState ou Nenhum, opcional, padrão = nenhum

Este parâmetro representa a semente do número pseudoaleatório gerado que é usado ao embaralhar os dados. A seguir estão as opções -

  • int - Neste caso, random_state é a semente usada pelo gerador de números aleatórios.

  • RandomState instance - Neste caso, random_state é o gerador de números aleatórios.

  • None - Nesse caso, o gerador de número aleatório é a instância RandonState usada por np.random.

Atributos

A tabela a seguir consiste nos atributos usados ​​por Ridge módulo -

Sr. Não Atributos e descrição
1

coef_ - matriz, forma (n_features,) ou (n_target, n_features)

Este atributo fornece os vetores de peso.

2

Intercept_- float | matriz, forma = (n_targets)

Ele representa o termo independente na função de decisão.

3

n_iter_ - matriz ou nenhum, forma (n_targets)

Disponível apenas para os solucionadores 'sag' e 'lsqr', retorna o número real de iterações para cada destino.

Exemplo de Implementação

Seguir o script Python fornece um exemplo simples de implementação de Ridge Regression. Estamos usando 15 amostras e 10 recursos. O valor de alfa é 0,5 em nosso caso. Existem dois métodos, a saberfit() e score() usado para ajustar este modelo e calcular a pontuação, respectivamente.

from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
rng = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
rdg = Ridge(alpha = 0.5)
rdg.fit(X, y)
rdg.score(X,y)

Resultado

0.76294987

A saída mostra que o modelo Ridge Regression acima deu a pontuação de cerca de 76 por cento. Para obter mais precisão, podemos aumentar o número de amostras e recursos.

Exemplo

Para o exemplo acima, podemos obter o vetor de peso com a ajuda do seguinte script python -

rdg.coef_

Resultado

array([ 0.32720254, -0.34503436, -0.2913278 , 0.2693125 , -0.22832508,
   -0.8635094 , -0.17079403, -0.36288055, -0.17241081, -0.43136046])

Exemplo

Da mesma forma, podemos obter o valor de interceptar com a ajuda do seguinte script python -

rdg.intercept_

Resultado

0.527486