क्या डमी वैरिएबल की आवश्यकता के बिना लॉजिस्टिक रिग्रेशन को सीधे फैक्टर (श्रेणीबद्ध) वैरिएबल संभाल सकता है? [बन्द है]


15

मैं आर में एक रसद प्रतिगमन निर्माण कर रहा हूँ कार्यों के साथ LASSO विधि का उपयोग कर cv.glmnetके चयन के लिए lambdaऔर glmnetअंतिम मॉडल के लिए।

मैं पहले से ही स्वचालित मॉडल चयन के बारे में सभी नुकसान जानता हूं, लेकिन मुझे इसे वैसे भी करने की आवश्यकता है।

मेरी समस्या यह है कि मुझे मॉडल में फैक्टर (श्रेणीबद्ध) चर शामिल करने की आवश्यकता है, क्या बहुत सारे डमी वैरिएबल बनाने के बिना इसे करने का कोई तरीका है? यह चर लगभग सभी तार हैं और संख्याएं नहीं हैं।


2
मैं इस बारे में जाने के लिए सबसे अच्छे तरीके के बारे में उत्सुक हूं।
theforestecologist

जवाबों:


26

glmnet सीधे कारक नहीं ले सकता है, आपको कारक चर को डमी में बदलना होगा। यह उदाहरण के लिए model.matrix का उपयोग करके केवल एक सरल कदम है:

x_train <- model.matrix( ~ .-1, train[,features])
lm = cv.glmnet(x=x_train,y = as.factor(train$y), intercept=FALSE ,family =   "binomial", alpha=1, nfolds=7)
best_lambda <- lm$lambda[which.min(lm$cvm)]

अल्फा = 1 एक LASSO का निर्माण करेगा।


1
+1 शानदार जवाब! क्या मैं पूछ सकता हूं कि आप या कोई भी व्यक्ति एक अवरोधक = FALSE का उपयोग क्यों करता है?
इरोसिनिन

ऐसा लगता है कि विफल होने पर दो श्रेणीबद्ध चर होते हैं: यदि L1 कॉलम में L1 स्तर हैं, लेकिन मैं L1 कॉलम सही रूप से प्राप्त कर रहा हूं, लेकिन L2-1 कॉलम var2 के लिए (जिसमें L2 स्तर हैं)।
पीटर स्ट्राका

@Peter Straka: sum (L1 dummies के लिए var1) = 1 सभी रिकॉर्ड के लिए, और sum (V2 के लिए L2 डमीज़ पर) = 1 सभी रिकॉर्ड्स के लिए, इसलिए var1 के लिए L1 डमी और var2 के लिए L2 डमीज़ रैखिक रूप से निर्भर हैं। Var2 के लिए कम से कम एक डमी L2 डमियां निरर्थक है (रैखिक मॉडल के निर्माण के उद्देश्य से)।
विक्टरजुरकोव्स्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.