रिज रिग्रेशन का परिणाम lm.ridge और glmnet का उपयोग करने में भिन्न होता है


11

मैंने आर। में रिज रिग्रेशन का उपयोग करते हुए प्रतिगमन मॉडल का सबसे अच्छा चर समाधान खोजने के लिए कुछ डेटा लागू किया था। मैंने ( lm.ridgeऔर ) का उपयोग किया है , लेकिन परिणाम विशेष रूप से बहुत अलग हैं । यह मान लें कि दोनों पैरामीटर अनुमानकों में समान मूल्य हैं। तो, यहाँ क्या समस्या है? सादरglmnetalpha=0lambda=0

जवाबों:


14

glmnet y चर का मानकीकरण करता है और चुकता त्रुटियों के योग के बजाय माध्य चुकता त्रुटियों का उपयोग करता है। इसलिए आपको उनके आउटपुट से मेल खाने के लिए उपयुक्त समायोजन करने की आवश्यकता है।

library(ElemStatLearn)
library(glmnet)
library(MASS)

dof2lambda <- function(d, dof) {
    obj <- function(lam, dof) (dof - sum(d ^ 2 / (d ^ 2 + lam))) ^ 2
    sapply(dof, function(x) optimize(obj, c(0, 1e4), x)$minimum)
}

lambda2dof <- function(d, lam) {
    obj <- function(dof, lam) (dof - sum(d ^ 2 / (d ^ 2 + lam))) ^ 2
    sapply(lam, function(x) optimize(obj, c(0, length(d)), x)$minimum)
}

dat   <- prostate
train <- subset(dat,  train, select = -train)
test  <- subset(dat, !train, select = -train)

train.x <- as.matrix(scale(subset(train, select = -lpsa)))
train.y <- as.matrix(scale(train$lpsa))

d   <- svd(train.x)$d
dof <- seq(1, 8, 0.1)
lam <- dof2lambda(d, dof)

ridge1 <- lm.ridge(train.y ~ train.x, lambda = lam)
ridge2 <- glmnet(train.x, train.y, alpha = 0, lambda = lam / nrow(train.x))

matplot(dof, t(ridge1$coef), type = 'l')
matplot(lambda2dof(d, ridge2$lambda * nrow(train.x)), t(ridge2$beta), type = 'l')

हैलो। रिज रिग्रेशन के लिए आप किस आर पैकेज की सलाह देते हैं? glmnet, bigRR, मास, अन्य? उनमें से कोई भी दोहराया उपायों (यादृच्छिक प्रभाव) से निपटने में सक्षम है?
स्कैन

मुझे glmnet और MASS lm.ridge आउटपुट के बीच कुछ विसंगति मिली है, जिसे समस्याओं के समाधान के द्वारा समझाया नहीं जा सकता। हालांकि, lm.ridge ने मुझे वह परिणाम दिया जो हाथ की गणना के साथ मेल खाता है। यदि मेरे पास भविष्य में समय है, तो मैं पूरा उदाहरण पोस्ट करूंगा। अभी, मैं MASS के साथ जाऊंगा। इसके अलावा, glmnet स्वयं चेतावनी देता है कि परिणाम आपके द्वारा लैम्बडा पैरामीटर सेट करने के तरीके पर निर्भर करते हैं, यह glmnet के खिलाफ एक और हड़ताल है।
PA6OTA
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.