Scikit Learn - LASSO

LASSO (Operador de seleção e redução mínima absoluta)

LASSO é a técnica de regularização que realiza a regularização L1. Ele modifica a função de perda adicionando a penalidade (quantidade de encolhimento) equivalente à soma do valor absoluto 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} ^ n | W_i | = perda _ {-} função + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ n | W_i | $$

sklearn.linear_model. Lasso é um modelo linear, com um termo de regularização adicionado, usado para estimar coeficientes esparsos.

Parâmetros

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

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

alpha - flutuante, opcional, padrão = 1,0

Alpha, a constante que multiplica o termo L1, é o parâmetro de ajuste que decide o quanto queremos penalizar o modelo. O valor padrão é 1.0.

2

fit_intercept- Booleano, opcional. Padrão = Verdadeiro

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 - float, opcional

Este parâmetro representa a tolerância para a otimização. otol o valor e as atualizações seriam comparados e se fossem encontradas atualizações menores que tol, a otimização verifica a lacuna dupla quanto à otimização e continua até que seja menor que tol.

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

precompute - Verdadeiro | Falso | semelhante a uma matriz, padrão = Falso

Com este parâmetro, podemos decidir se devemos usar uma matriz de Gram pré-computada para acelerar o cálculo ou não.

8

warm_start - bool, opcional, padrão = falso

Com este parâmetro definido como True, podemos reutilizar a solução da chamada anterior para caber como inicialização. Se escolhermos o padrão, ou seja, falso, ele apagará a solução anterior.

9

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.

10

selection - str, padrão = 'cíclico'

  • Cyclic - O valor padrão é cíclico, o que significa que os recursos serão repetidos sequencialmente por padrão.

  • Random - Se definirmos a seleção como aleatória, um coeficiente aleatório será atualizado a cada iteração.

Atributos

A tabela a seguir consiste nos atributos usados ​​por Lasso 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_ - int ou semelhante a uma matriz, forma (n_targets)

Fornece o número de iterações executadas pelo solucionador de descida por coordenadas para atingir a tolerância especificada.

Exemplo de Implementação

O script Python seguinte usa o modelo Lasso, que ainda usa a descida das coordenadas como o algoritmo para ajustar os coeficientes -

from sklearn import linear_model
Lreg = linear_model.Lasso(alpha = 0.5)
Lreg.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])

Resultado

Lasso(alpha = 0.5, copy_X = True, fit_intercept = True, max_iter = 1000,
   normalize = False, positive = False, precompute = False, random_state = None,
   selection = 'cyclic', tol = 0.0001, warm_start = False)

Exemplo

Agora, uma vez ajustado, o modelo pode prever novos valores da seguinte forma -

Lreg.predict([[0,1]])

Resultado

array([0.75])

Exemplo

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

Lreg.coef_

Resultado

array([0.25, 0. ])

Exemplo

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

Lreg.intercept_

Resultado

0.75

Exemplo

Podemos obter o número total de iterações para obter a tolerância especificada com a ajuda do seguinte script python -

Lreg.n_iter_

Resultado

2

Podemos alterar os valores dos parâmetros para obter a saída desejada do modelo.