জেজিএসে নিয়মিত বেইসিয়ান লজিস্টিক রিগ্রেশন


14

এখানে বেশ কয়েকটি গণিত-ভারী কাগজপত্র রয়েছে যা বেয়েসিয়ান লাসোর বর্ণনা করে তবে আমি পরীক্ষিত, জাএজিএস কোড ব্যবহার করতে পারি যা সঠিকভাবে ব্যবহার করতে চাই।

কেউ কি নিয়মিত লজিস্টিক রিগ্রেশন প্রয়োগ করে এমন বিগিজ / জাগএস কোডের নমুনা পোস্ট করতে পারে? যে কোনও স্কিম (এল 1, এল 2, ইলাস্টিকনেট) দুর্দান্ত হবে তবে লাসোর পছন্দ হয় is আমি আরও অবাক হই যে আকর্ষণীয় বিকল্প বাস্তবায়নের কৌশলগুলি আছে কিনা।

উত্তর:


19

যেহেতু এল 1 নিয়মিতকরণ প্রাসঙ্গিক সহগের পূর্বে একটি ল্যাপ্লেসের (ডাবল এক্সফোনেনশিয়াল) সমতুল্য, আপনি এটি নিম্নলিখিত হিসাবে এটি করতে পারেন। এখানে আমার কাছে তিনটি পৃথক ভেরিয়েবল x1, x2 এবং x3 রয়েছে এবং y হ'ল বাইনারি টার্গেট ভেরিয়েবল। নিয়মিতকরণ প্যারামিটারের নির্বাচন এই ক্ষেত্রে শুধু একটি ভাল মাপের সীমায় ইউনিফর্ম এটি একটি hyperprior নির্বাণ, এখানে সম্পন্ন করা হয়।λ

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
}

আসুন আর এর মধ্যে dcloneপ্যাকেজটি ব্যবহার করে দেখুন !

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)

একটি অনিয়মিত লজিস্টিক রিগ্রেশন এর সাথে তুলনা করে ফলাফলগুলি এখানে রয়েছে:

> 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 >>

এবং আমরা দেখতে পাচ্ছি যে তিনটি bপরামিতি সত্যই শূন্যের দিকে সঙ্কুচিত হয়েছে।

আমি ল্যাপ্লেস বিতরণ / নিয়মিতকরণ প্যারামিটারের হাইপারপ্যারামিটারের জন্য প্রাইয়ারদের সম্পর্কে খুব বেশি কিছু জানি না, আমি দুঃখের সাথে বলতে পারি। আমি অভিন্ন ডিস্ট্রিবিউশনগুলি ব্যবহার করি এবং এটি উত্তরোত্তর দিকে তাকান যে এটি যথাযথভাবে ভাল আচরণ করা দেখায়, যেমন, কোনও শেষ পয়েন্টের কাছে পাইলড না হয়ে মাঝারি ডাব্লু / ও ভয়ঙ্কর স্কিউনেস সমস্যায় ডুবে গেছে। এখনও অবধি, এটি সাধারণত ছিল। এটিকে ভেরিয়েন্স প্যারামিটার হিসাবে বিবেচনা করা এবং শ্রেণিবদ্ধ মডেলগুলিতে ভেরিয়েন্স প্যারামিটারগুলির জন্য গেলম্যান প্রাইমার ডিস্ট্রিবিউশনের প্রস্তাবনা (গুলি) ব্যবহার করাও আমার পক্ষে কাজ করে।


1
তুমিই সেরা! কারও কারওর অন্য বাস্তবায়ন ঘটলে আমি কিছুক্ষণের জন্য প্রশ্নটি ছেড়ে দেব। একটির জন্য, এটি বাইনারি সূচকগুলি পরিবর্তনশীল অন্তর্ভুক্তি / বর্জন আরোপের জন্য ব্যবহার করা যেতে পারে বলে মনে হয় । এটি বায়েশিয়ান লাসোর অধীনে পরিবর্তনশীল নির্বাচন প্রকৃতপক্ষে ঘটবে না এর জন্য ক্ষতিপূরণ দেয়, যেহেতু ডাবল এক্সফোনেনশিয়াল পূর্বের সাথে বেটাসে পোস্টেরিয়ারগুলি ঠিক শূন্য হয় না।
জ্যাক ট্যানার 17'12

আমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.