Scikit Learn - Regressão Bayesian Ridge
A regressão bayesiana permite que um mecanismo natural sobreviva a dados insuficientes ou dados mal distribuídos, formulando a regressão linear usando distribuidores de probabilidade em vez de estimativas pontuais. A saída ou resposta 'y' é considerada retirada de uma distribuição de probabilidade, em vez de estimada como um único valor.
Matematicamente, para obter um modelo totalmente probabilístico, a resposta y é assumida como sendo Gaussiana distribuída em torno de $ X_ {w} $ como segue
$$ p \ left (y \ arrowvert X, w, \ alpha \ right) = N \ left (y \ arrowvert X_ {w}, \ alpha \ right) $$Um dos tipos mais úteis de regressão Bayesiana é a regressão Bayesian Ridge, que estima um modelo probabilístico do problema de regressão. Aqui, a anterior para o coeficiente w é dada por gaussiana esférica da seguinte forma -
$$ p \ left (w \ arrowvert \ lambda \ right) = N \ left (w \ arrowvert 0, \ lambda ^ {- 1} I_ {p} \ right) $$Este modelo resultante é chamado de regressão Bayesian Ridge e no scikit-learn sklearn.linear_model.BeyesianRidge módulo é usado para regressão do cume bayesiano.
Parâmetros
A tabela a seguir consiste nos parâmetros usados por BayesianRidge módulo -
Sr. Não | Parâmetro e Descrição |
---|---|
1 | n_iter - int, opcional Ele representa o número máximo de iterações. O valor padrão é 300, mas o valor definido pelo usuário deve ser maior ou igual a 1. |
2 | fit_intercept - Booleano, opcional, verdadeiro padrão Ele decide se deve calcular a interceptação para este modelo ou não. Nenhuma interceptação será usada no cálculo, se for definida como falsa. |
3 | tol - flutuante, opcional, padrão = 1.e-3 Ele representa a precisão da solução e interromperá o algoritmo se w tiver convergido. |
4 | alpha_1 - flutuante, opcional, padrão = 1.e-6 É o 1 r hiperparâmetro que é um parâmetro de forma para a distribuição Gama prévia sobre o parâmetro alfa. |
5 | alpha_2 - flutuante, opcional, padrão = 1.e-6 É o 2º hiperparâmetro, um parâmetro de escala inversa para a distribuição Gama anterior ao parâmetro alfa. |
6 | lambda_1 - flutuante, opcional, padrão = 1.e-6 É o 1 r hiperparâmetro que é um parâmetro de forma para a distribuição Gama prévia sobre o parâmetro de lambda. |
7 | lambda_2 - flutuante, opcional, padrão = 1.e-6 É o 2º hiperparâmetro, que é um parâmetro de escala inversa para a distribuição Gama anterior ao parâmetro lambda. |
8 | 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. |
9 | compute_score - booleano, opcional, padrão = False Se definido como verdadeiro, ele calcula a probabilidade marginal logarítmica em cada iteração da otimização. |
10 | verbose - Booleano, opcional, padrão = False Por padrão, é falso, mas se definido como verdadeiro, o modo detalhado será habilitado durante o ajuste do modelo. |
Atributos
A tabela a seguir consiste nos atributos usados por BayesianRidge módulo -
Sr. Não | Atributos e descrição |
---|---|
1 | coef_ - matriz, forma = n_features Este atributo fornece os vetores de peso. |
2 | intercept_ - flutuar Ele representa o termo independente na função de decisão. |
3 | alpha_ - flutuar Este atributo fornece a precisão estimada do ruído. |
4 | lambda_ - flutuar Este atributo fornece a precisão estimada do peso. |
5 | n_iter_ - int Ele fornece o número real de iterações feitas pelo algoritmo para atingir o critério de parada. |
6 | sigma_ - matriz, forma = (n_features, n_features) Ele fornece a matriz de variância-covariância estimada dos pesos. |
7 | scores_ - matriz, forma = (n_iter_ + 1) Ele fornece o valor da probabilidade marginal logarítmica em cada iteração da otimização. Na pontuação resultante, a matriz começa com o valor do log da verossimilhança marginal obtido para os valores iniciais de $ a \: e \: \ lambda $, e termina com o valor obtido para $ a \: e \: \ lambda estimados $. |
Exemplo de Implementação
Seguir o script Python fornece um exemplo simples de ajuste do modelo Bayesian Ridge Regression usando sklearn BayesianRidge módulo.
from sklearn import linear_model
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
Y = [0, 1, 2, 3]
BayReg = linear_model.BayesianRidge()
BayReg.fit(X, Y)
Resultado
BayesianRidge(alpha_1 = 1e-06, alpha_2 = 1e-06, compute_score = False, copy_X = True,
fit_intercept = True, lambda_1 = 1e-06, lambda_2 = 1e-06, n_iter = 300,
normalize = False, tol=0.001, verbose = False)
A partir da saída acima, podemos verificar os parâmetros do modelo usados no cálculo.
Exemplo
Agora, uma vez ajustado, o modelo pode prever novos valores da seguinte forma -
BayReg.predict([[1,1]])
Resultado
array([1.00000007])
Exemplo
Da mesma forma, podemos acessar o coeficiente w do modelo da seguinte forma -
BayReg.coef_
Resultado
array([0.49999993, 0.49999993])