टी एल; डॉ: lme4
अनुकूलन डिफ़ॉल्ट रूप से मॉडल पैरामीटर की संख्या में रेखीय प्रतीत होता है, और है जिस तरह से एक बराबर की तुलना में धीमी glm
समूहों के लिए डमी चर के साथ मॉडल। वहाँ कुछ भी है मैं इसे गति कर सकता हूँ?
मैं एक काफी बड़े पदानुक्रमित लॉजिट मॉडल (~ 50k पंक्तियों, 100 कॉलम, 50 समूहों) को फिट करने की कोशिश कर रहा हूं। डेटा के लिए एक सामान्य लॉगिट मॉडल को फिट करना (समूह के लिए डमी वैरिएबल्स के साथ) ठीक काम करता है, लेकिन पदानुक्रमित मॉडल फंसता हुआ प्रतीत होता है: पहला ऑप्टिमाइज़ेशन चरण ठीक पूरा हो जाता है, लेकिन दूसरा बिना किसी बदलाव के और बिना रुके बहुत सारे पुनरावृत्तियों से गुजरता है ।
संपादित करें: मुझे संदेह है कि समस्या मुख्य रूप से यह है कि मेरे पास बहुत सारे पैरामीटर हैं, क्योंकि जब मैं maxfn
कम मूल्य पर सेट करने की कोशिश करता हूं तो यह चेतावनी देता है:
Warning message:
In commonArgs(par, fn, control, environment()) :
maxfun < 10 * length(par)^2 is not recommended.
हालाँकि, पैरामीटर अनुमान अनुकूलन के दौरान बिल्कुल नहीं बदल रहे हैं, इसलिए मैं अभी भी उलझन में हूं कि क्या करना है। जब मैंने maxfn
ऑप्टिमाइज़र नियंत्रण (चेतावनी के बावजूद) में सेट करने की कोशिश की , तो अनुकूलन खत्म करने के बाद यह लटका हुआ लग रहा था।
यहाँ कुछ कोड है जो यादृच्छिक डेटा के लिए समस्या को पुन: पेश करता है:
library(lme4)
set.seed(1)
SIZE <- 50000
NGRP <- 50
NCOL <- 100
test.case <- data.frame(i=1:SIZE)
test.case[["grouping"]] <- sample(NGRP, size=SIZE, replace=TRUE, prob=1/(1:NGRP))
test.case[["y"]] <- sample(c(0, 1), size=SIZE, replace=TRUE, prob=c(0.05, 0.95))
test.formula = y ~ (1 | grouping)
for (i in 1:NCOL) {
colname <- paste("col", i, sep="")
test.case[[colname]] <- runif(SIZE)
test.formula <- update.formula(test.formula, as.formula(paste(". ~ . +", colname)))
}
print(test.formula)
test.model <- glmer(test.formula, data=test.case, family='binomial', verbose=TRUE)
यह आउटपुट:
start par. = 1 fn = 19900.78
At return
eval: 15 fn: 19769.402 par: 0.00000
(NM) 20: f = 19769.4 at 0 <other numbers>
(NM) 40: f = 19769.4 at 0 <other numbers>
मैंने ncol
अन्य मूल्यों के लिए सेटिंग की कोशिश की , और ऐसा प्रतीत होता है कि किए गए पुनरावृत्तियों की संख्या (लगभग) 40 प्रति कॉलम है। जाहिर है, यह एक बड़ा दर्द बन जाता है क्योंकि मैं और कॉलम जोड़ता हूं। क्या मैं अनुकूलन एल्गोरिथ्म में जुड़वाँ कर सकता हूँ जो स्तंभों की संख्या पर निर्भरता को कम करेगा?
glmer
काफी धीमी गति से है, विशेष रूप से उन मॉडलों के लिए जिनके पास एक जटिल यादृच्छिक प्रभाव संरचना है (उदाहरण के लिए, कई यादृच्छिक ढलान, यादृच्छिक प्रभाव, आदि)। मेरा पहला सुझाव एक सरल यादृच्छिक प्रभाव संरचना के साथ फिर से प्रयास करना होगा। हालाँकि, यदि आप इस समस्या को केवल एक रैंडम इंटरसेप्ट मॉडल के साथ अनुभव कर रहे हैं, तो आपकी समस्या बस मामलों की संख्या हो सकती है, जिस स्थिति में आपको बड़े डेटा के लिए विशेषीकृत कुछ टूल आज़माने होंगे।