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 -
|
10 | selection - str, padrão = 'cíclico'
|
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.