গ্ল্যামনেট: বহুজাতিক প্যারামিটারাইজেশন কীভাবে বোধ করবেন?


11

নিম্নলিখিত সমস্যা: আমি গ্ল্যামনেট () ব্যবহার করে একটি (বা আরও) শ্রেণীবদ্ধ ভেরিয়েবলের সাথে একটি শ্রেণিবদ্ধ প্রতিক্রিয়ার ভেরিয়েবলের পূর্বাভাস দিতে চাই।

তবে, আউটপুট গ্ল্যামনেট আমাকে দেয় তা আমি বুঝতে পারি না।

ঠিক আছে, প্রথমে দুটি সম্পর্কিত শ্রেণীবদ্ধ ভেরিয়েবল উত্পন্ন করা যাক:

ডেটা তৈরি করুন

p <- 2 #number variables
mu <- rep(0,p)
sigma <- matrix(rep(0,p^2), ncol=p)
sigma[1,2] <- .8 #some relationship ..
diag(sigma) <- 1
sigma <- pmax(sigma, t(sigma))
n <- 100
set.seed(1)
library(MASS)
dat <- mvrnorm(n, mu, sigma)
#discretize
k <- 3 # number of categories
d <- apply(dat, 2, function(x) {
  q <- quantile(x, probs=seq(0,1, 1/k))[-c(1, k+1)]
  out <- numeric(length(x))
  for(i in 1:(k-1))
  {  out[x<q[k-i]] <- i } 
  return(out)
})
d <- data.frame(apply(d, 2, as.factor))
d[,2] <- relevel(d[,2], ref="0")
d[,1] <- relevel(d[,1], ref="0")
colnames(d) <- c("X1", "X2")

আমরা পেতে:

> table(d)
   X2
X1   0  1  2
  0 22 11  1
  1  9 14 10
  2  3  8 22

পূর্বাভাস: মাল্টিনম ()

তারপরে নেট প্যাকেজ থেকে মাল্টিনাম () ব্যবহার করে এক্স 2 দ্বারা এক্স 1 এর পূর্বাভাস দেওয়া যাক:

library(nnet)
mod1 <- multinom(X1~X2, data=d)
mod1

যা আমাদের দেয়:

Call:
multinom(formula = X1 ~ X2, data = d)

Coefficients:
  (Intercept)      X21      X22
1  -0.8938246 1.134993 3.196476
2  -1.9924124 1.673949 5.083518

ম্যানুয়াল চেক

এখন আসুন আমরা পরীক্ষা করে দেখি যে আমরা সেই ম্যানুয়ালি পুনরুত্পাদন করতে পারি:

tb <- table(d)
log(tb[2,1] / tb[1,1]) #intercept category1
[1] -0.8938179
log(tb[3,1] / tb[1,1]) #intercept category2
[1] -1.99243
log((tb[1,1]*tb[2,2]) / (tb[1,2]*tb[2,1])) #logodds-ratio cat X1 0vs1 in X2 0vs1
[1] 1.13498
#same for the three remaining log odds ratios

আমরা একই সংখ্যা উত্পাদন, ভাল!

পূর্বাভাস: গ্ল্যামনেট ()

এখন গ্ল্যামনেট দিয়ে এটি করা যাক:

library(glmnet)
y <- d[,1]
X <- model.matrix(X1~X2, data=d)[,-1]
mod2 <- glmnet(X, y, family="multinomial", lambda=c(0))
coef(mod2, s=0) #meaning of coefficients unclear!
$`0`
3 x 1 sparse Matrix of class "dgCMatrix"
                     1
(Intercept)  0.9620216
X21         -1.1349130
X22         -3.1958293   

$`1`
3 x 1 sparse Matrix of class "dgCMatrix"
                     1
(Intercept) 0.06825755
X21         .         
X22         .         

$`2`
3 x 1 sparse Matrix of class "dgCMatrix"
                     1
(Intercept) -1.0302792
X21          0.5388814
X22          1.8870363

নোট করুন যে আমি s = 0 সেট করেছি, সুতরাং নিয়মিতকরণ নেই এবং প্যারামিটারগুলিতে মাল্টিনম () ফাংশনের পরামিতিগুলির মতো ঠিক একই তথ্য থাকা উচিত।

তবুও, আমরা খুব আলাদা পরামিতি পাই। এটি গ্ল্যামনেটে ব্যবহৃত বিভিন্ন প্যারামিটারাইজেশনের কারণে এটি দেখুন:

http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html (শিরোনাম: বহু বহু মডেল) বা সংশ্লিষ্ট কাগজ: http://www.jstatsoft.org/v33/i01/paper (শিরোনাম: 4. নিয়মিত করা হয়েছে বহুজাতিক রিগ্রেশন)

তবে ঠিক কীভাবে কোনও প্যারামিটারাইজ করে, এক হিসাবে একই , উপর বিভাগীয় কে শর্তাধীন হওয়ার সম্ভাবনা abilityP(Y=k|X)

শর্তাধীন সম্ভাবনা: মাল্টিনম ()

সুতরাং আমি প্রথমে মাল্টিনম () থেকে এই সম্ভাবনাগুলি গণনা করি:

p.fit <- predict(mod1, type="probs")
head(d)
head(p.fit)
ccp <- matrix(0,3,3)
ccp[,3] <- p.fit[1,]
ccp[,2] <- p.fit[2,]
ccp[,1] <- p.fit[4,]
ccp
           [,1]      [,2]       [,3]
[1,] 0.64705896 0.3333332 0.03030114
[2,] 0.26470416 0.4242450 0.30303140
[3,] 0.08823688 0.2424218 0.66666746
colSums(ccp) #sum to 1, ok; sorry for the awful code ...
[1] 1 1 1

আমাদের যেমন এখানে একটি স্যাচুরেটেড মডেল রয়েছে, এটি ডেটা থেকে আমরা গণনা করতে পারি তার মতোই হওয়া উচিত:

emp <- table(d)/100
cemp <- apply(emp, 2, function(x) {
  x / sum(x)
})
cemp 
   X2
             0         1          2
  0 0.64705882 0.3333333 0.03030303
  1 0.26470588 0.4242424 0.30303030
  2 0.08823529 0.2424242 0.66666667

যা আসলে ঘটনা।

শর্তাধীন সম্ভাবনা: গ্ল্যামনেট ()

গ্ল্যামনেট থেকে এখন একই:

c1 <- coef(mod2, s=0)
c <-matrix(rapply(c1, function(x) { as.matrix(x)}, how="unlist"), 3,3, byrow=T)

ccp2 <- matrix(0,3,3)
config <- rbind(c(0,0), c(1,0), c(0,1))

for(l in 1:3) #loop through categories
{
  denom <- numeric(3)
  for(i in 1:3) # loop through possible predictor combinations
  { 
    x1 <- config[i, 1]
    x2 <- config[i, 2]
    denom[i] <- exp(c[l,1] + x1 * c[l,2]  + x2 * c[l,3])
  }
  ccp2[l,1] <- denom[1] / sum(denom)
  ccp2[l,2] <- denom[2] / sum(denom)
  ccp2[l,3] <- denom[3] / sum(denom)
}
ccp2
          [,1]      [,2]       [,3]
[1,] 0.7340082 0.2359470 0.03004484
[2,] 0.3333333 0.3333333 0.33333333
[3,] 0.1073668 0.1840361 0.70859708
colSums(ccp2)
[1] 1.1747083 0.7533165 1.0719753

সেল শর্তসাপেক্ষ সম্ভাবনাগুলি কিছুটা সম্পর্কিত তবে আলাদা। এছাড়াও তারা এক যোগফল না।

সুতরাং আমাদের এখানে দুটি সমস্যা রয়েছে:

ক) শর্তসাপেক্ষ সম্ভাবনাগুলি 1 এবং এর মধ্যে যোগ হয় না

খ) প্যারামিটারগুলি আমরা ডেটাতে যা দেখি তা বর্ণনা করে না: উদাহরণস্বরূপ সারি 2 এ কলামগুলিতে পার্থক্য রয়েছে, তবে গ্ল্যামনেট উভয় সহগকে (ইন্টারসেপ্ট নয়) শূন্য হিসাবে অনুমান করে।

আমি লিনিয়ার রিগ্রেশন সমস্যা ব্যবহার করেছি এবং s = 0 এর সাথে গ্ল্যামেট এবং গ্ল্যামনেটের তুলনা করেছি যে স = 0 এর অর্থ শূন্য নিয়মিতকরণ (সমাধানগুলি প্রায় অভিন্ন ছিল) make

কোন সহায়তা এবং ধারণা অত্যন্ত প্রশংসা করা হবে!

উত্তর:


5

মাল্টিনোম এবং গ্ল্যামনেট থেকে প্রাপ্ত প্যারামিটারগুলি সম্পর্কে, আমি এই উত্তরটি উপকারী বলে মনে করেছি, আমি বহুজাতিক সংক্রান্ত লজিস্টিক রিগ্রেশন করতে গ্ল্যাম অ্যালগরিদম ব্যবহার করতে পারি?

বিশেষত, "হ্যাঁ, পোইসন জিএলএম (লগ লিনিয়ার মডেল) দিয়ে আপনি বহুজাতিক মডেলগুলিতে ফিট করতে পারেন Hence সুতরাং বহুজাতিক লজিস্টিক বা লগ লিনিয়ার পোইসন মডেল সমতুল্য" "

সুতরাং আমি গ্ল্যামনেট সহগের মাল্টিনাম সহগের পুনরায় সংশোধন করব।

n.subj=1000
x1 <- rnorm(n.subj)
x2 <- rnorm(n.subj)
prob <- matrix(c(rep(1,n.subj), exp(3+2*x1+x2), exp(-1+x1-3*x2)), , ncol=3)
prob <- sweep(prob, 1, apply(prob, 1, sum), "/")

y = c()
for (i in 1:n.subj)
  y[i] <- sample(3, 1, replace = T, prob = prob[i,])

multinom(y~x1+x2)

x <- cbind(x1,x2); y2 <- factor(y)
fit <- glmnet(x, y2, family="multinomial", lambda=0, type.multinomial =     "grouped")
cf <- coef(fit)

cf[[2]]@x - cf[[1]]@x   # for the category 2
cf[[3]]@x - cf[[1]]@x   # for the category 3

আশাকরি এটা সাহায্য করবে. তবে আমি মনে করি না যে আমি জেনারালাইজড লিনিয়ার মডেল (পোইসন) এবং বহুজাতিক বহিরাগত লজিস্টিক মডেলটির অভ্যন্তরীণ এবং সামঞ্জস্য বুঝতে পারি।

ভাল এবং পঠনযোগ্য এবং "সহজে" বোধগম্য উত্স আছে কিনা তা আমাকে বলুন ..


1
"কেন" এই ক্ষেত্রে এটির জন্য আপনার আরও কোনও ব্যাখ্যা আছে? অর্থাত্ - কেন গ্ল্যাম্টটি সহগগুলি তৈরি করে যেগুলি আরও সাধারণ বহু-বহুগুণ সহগ এবং 'বেস' সহগের সংমিশ্রণ। এটি কি আমাদের সহগের প্রতিটি সেটকে লগ-লিনিয়ার মডেল হিসাবে ব্যাখ্যা করার অনুমতি দেয় ?
નમૂના দিন 1

0

পছন্দের সম্ভাবনার যোগফল 1 হ'ল তা নিশ্চিত করতে, রেফারেন্স বিকল্পের সমস্ত পরামিতি শূন্য হওয়া দরকার। সুতরাং, আমি গ্লোনেট () এর ফলাফল বিজোড় বলে মনে করি।

সম্পর্কিত প্রশ্ন: গ্ল্যামনেট কেন সমস্ত বিভাগের জন্য প্যারামিটার গণনা করা যেতে পারে?

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