Vì chính quy hóa L1 tương đương với Laplace (hàm mũ đôi) trước các hệ số có liên quan, bạn có thể thực hiện như sau. Ở đây tôi có ba biến độc lập x1, x2 và x3 và y là biến mục tiêu nhị phân. Lựa chọn các tham số quy tắc được thực hiện ở đây bằng cách đặt một hyperprior vào nó, trong trường hợp này chỉ thống nhất trên một phạm vi tốt cỡ.λ
model {
# Likelihood
for (i in 1:N) {
y[i] ~ dbern(p[i])
logit(p[i]) <- b0 + b[1]*x1[i] + b[2]*x2[i] + b[3]*x3[i]
}
# Prior on constant term
b0 ~ dnorm(0,0.1)
# L1 regularization == a Laplace (double exponential) prior
for (j in 1:3) {
b[j] ~ ddexp(0, lambda)
}
lambda ~ dunif(0.001,10)
# Alternatively, specify lambda via lambda <- 1 or some such
}
Hãy dùng thử dclone
gói R!
library(dclone)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
prob <- exp(x1+x2+x3) / (1+exp(x1+x2+x3))
y <- rbinom(100, 1, prob)
data.list <- list(
y = y,
x1 = x1, x2 = x2, x3 = x3,
N = length(y)
)
params = c("b0", "b", "lambda")
temp <- jags.fit(data.list,
params=params,
model="modela.jags",
n.chains=3,
n.adapt=1000,
n.update=1000,
thin=10,
n.iter=10000)
Và đây là kết quả, so với hồi quy logistic không thường xuyên:
> summary(temp)
<< blah, blah, blah >>
1. Empirical mean and standard deviation for each variable,
plus standard error of the mean:
Mean SD Naive SE Time-series SE
b[1] 1.21064 0.3279 0.005987 0.005641
b[2] 0.64730 0.3192 0.005827 0.006014
b[3] 1.25340 0.3217 0.005873 0.006357
b0 0.03313 0.2497 0.004558 0.005580
lambda 1.34334 0.7851 0.014333 0.014999
2. Quantiles for each variable: << deleted to save space >>
> summary(glm(y~x1+x2+x3, family="binomial"))
<< blah, blah, blah >>
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.02784 0.25832 0.108 0.9142
x1 1.34955 0.32845 4.109 3.98e-05 ***
x2 0.78031 0.32191 2.424 0.0154 *
x3 1.39065 0.32863 4.232 2.32e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
<< more stuff deleted to save space >>
Và chúng ta có thể thấy rằng ba b
tham số đã thực sự bị thu hẹp về không.
Tôi không biết nhiều về các linh mục cho siêu tham số của phân phối Laplace / tham số chính quy, tôi rất tiếc phải nói. Tôi có xu hướng sử dụng các bản phân phối đồng đều và nhìn vào phía sau để xem nó có vẻ hợp lý hay không, ví dụ, không chồng chất gần một điểm cuối và khá nhiều đỉnh điểm trong các vấn đề sai lệch khủng khiếp ở giữa. Cho đến nay, đó thường là trường hợp. Đối xử với nó như là một tham số phương sai và sử dụng (các) đề xuất của Gelman Các bản phân phối trước cho các tham số phương sai trong các mô hình phân cấp cũng hoạt động với tôi.