मशीन लर्निंग में पदानुक्रमित / नेस्टेड डेटा से कैसे निपटें


29

मैं अपनी समस्या को एक उदाहरण से समझाता हूँ। मान लीजिए कि आप किसी व्यक्ति की आय का अनुमान लगाना चाहते हैं, जो कुछ विशेषताएं बताती है: {आयु, लिंग, देश, क्षेत्र, शहर}। आपके पास एक प्रशिक्षण डाटासेट है

train <- data.frame(CountryID=c(1,1,1,1, 2,2,2,2, 3,3,3,3), 
             RegionID=c(1,1,1,2, 3,3,4,4, 5,5,5,5), 
             CityID=c(1,1,2,3, 4,5,6,6, 7,7,7,8), 
             Age=c(23,48,62,63, 25,41,45,19, 37,41,31,50), 
             Gender=factor(c("M","F","M","F", "M","F","M","F", "F","F","F","M")),
             Income=c(31,42,71,65, 50,51,101,38, 47,50,55,23))
train
   CountryID RegionID CityID Age Gender Income
1          1        1      1  23      M     31
2          1        1      1  48      F     42
3          1        1      2  62      M     71
4          1        2      3  63      F     65
5          2        3      4  25      M     50
6          2        3      5  41      F     51
7          2        4      6  45      M    101
8          2        4      6  19      F     38
9          3        5      7  37      F     47
10         3        5      7  41      F     50
11         3        5      7  31      F     55
12         3        5      8  50      M     23

अब मान लें कि मैं एक नए व्यक्ति की आय की भविष्यवाणी करना चाहता हूं जो सिटी 7 में रहता है। मेरे प्रशिक्षण सेट में सिटी 7 में लोगों के साथ 3 नमूने हैं (मान लीजिए कि यह बहुत है) इसलिए मैं शायद सिटी 7 में औसत आय का उपयोग कर सकता हूं इस नए व्यक्ति की आय की भविष्यवाणी करें।

अब मान लीजिए मैं एक नए व्यक्ति की आय का अनुमान लगाना चाहता हूं जो सिटी 2 में रहता है। मेरे प्रशिक्षण सेट में केवल सिटी 2 के साथ 1 नमूना है, इसलिए सिटी 2 में औसत आय शायद एक विश्वसनीय भविष्यवक्ता नहीं है। लेकिन मैं शायद क्षेत्र 1 में औसत आय का उपयोग कर सकता हूं।

इस विचार को थोड़ा विस्तार देते हुए, मैं अपने प्रशिक्षण डेटासेट को रूपांतरित कर सकता हूं

    Age Gender CountrySamples CountryIncome RegionSamples RegionIncome CitySamples CityIncome
 1:  23      M              4         52.25             3        48.00           2    36.5000
 2:  48      F              4         52.25             3        48.00           2    36.5000
 3:  62      M              4         52.25             3        48.00           1    71.0000
 4:  63      F              4         52.25             1        65.00           1    65.0000
 5:  25      M              4         60.00             2        50.50           1    50.0000
 6:  41      F              4         60.00             2        50.50           1    51.0000
 7:  45      M              4         60.00             2        69.50           2    69.5000
 8:  19      F              4         60.00             2        69.50           2    69.5000
 9:  37      F              4         43.75             4        43.75           3    50.6667
10:  41      F              4         43.75             4        43.75           3    50.6667
11:  31      F              4         43.75             4        43.75           3    50.6667
12:  50      M              4         43.75             4        43.75           1    23.0000

इसलिए, लक्ष्य किसी भी तरह से प्रत्येक के लिए वजन / साख देने के लिए प्रत्येक के लिए प्रशिक्षण नमूनों की संख्या का उपयोग करते हुए औसत CityIncome, RegionIncome, और CountryIncome को संयोजित करना है। (आदर्श रूप में, अभी भी आयु और लिंग की जानकारी शामिल है।)

इस प्रकार की समस्या को हल करने के लिए क्या सुझाव हैं? मैं बेतरतीब जंगल या ग्रेडिएंट बूस्टिंग जैसे ट्री बेस्ड मॉडल्स का इस्तेमाल करना पसंद करता हूं, लेकिन मुझे अच्छा प्रदर्शन करने में दिक्कत हो रही है।

अद्यतन करें

किसी को भी इस समस्या को रोकने के लिए, मैंने आपके प्रस्तावित समाधान का परीक्षण करने के लिए नमूना डेटा तैयार किया है


7
पदानुक्रमित बायेसियन मॉडल आपके डेटा में वर्णित संरचना का शोषण करने के लिए बहुत स्वाभाविक हैं। रैडॉन
व्लादिस्लाव डोभालगेक

इस कागले पर नज़र रखना शुरू करना ट्यूटोरियल चुनौती प्राप्त करें: kaggle.com/c/titanic । यह एक समान समस्या से संबंधित है, यह अनुमान लगाने के लिए कि क्या कोई व्यक्ति टाइटैनिक आपदा से बच गया है, जो व्यक्ति के बारे में विभिन्न विशेषताओं जैसे कि लिंग, टिकट प्रकार आदि के लिए दिया गया है। इस उपयोग के लिए सबसे अच्छा प्रस्तुत समाधान जैसे कि ग्रैडिएंट बूस्टिंग और हायरार्केन बायसन मॉडल आदि
विहारी पिरतला

6
@VihariPiratla इनपुट के लिए धन्यवाद, लेकिन मैं टाइटैनिक डेटासेट और चुनौती से परिचित हूं, और मैं यह नहीं देखता कि यह मेरे द्वारा पूछे गए नेस्टेड डेटा मुद्दे से कैसे संबंधित है।
बेन

उन मॉडलों के लिए एल 2 / एल 1 नियमितीकरण का उपयोग करना जैसे कि लॉजिस्टिक रिग्रेशन / एसवीएम जो इसे निष्पादित करते हैं, उन्हें मदद करनी चाहिए (गरीब आदमी पदानुक्रमित बेयर्स)। प्रभावी ढंग से आप गुणांक को दंडित करते हैं, इसलिए जब तक कि गुणांक में उल्लेखनीय रूप से (बहुत सारे आंकड़ों पर) त्रुटि में सुधार नहीं होता है, इसे शून्य के करीब सेट किया जाएगा। और आप दंड के स्तर को तय करने के लिए क्रॉसवैलिडेशन का उपयोग करते हैं
seanv507

क्या आप उस व्यक्ति की आय का अनुमान लगाने में भी सक्षम होना चाहते हैं जो शहर 9 में रहता है?
जं-ग्लैक्स

जवाबों:


14

मैं इस समस्या के बारे में कुछ समय से सोच रहा हूं, इस साइट पर निम्नलिखित सवालों के प्रेरणा के साथ।

मुझे पहले पदानुक्रमित / नेस्टेड डेटा के लिए मिश्रित-प्रभाव मॉडल प्रस्तुत करना और एक साधारण दो-स्तरीय मॉडल (शहरों के भीतर नेस्टेड नमूने) से शुरू करना चाहिए। के लिए में मई के नमूना मैं मई के शहर, हम परिणाम लिखने y मैं j covariates के एक समारोह के रूप में एक्स मैं जे , (लिंग और उम्र सहित चरों की सूची) y मैं j = ( एक्स मैं j ) + यू मैं + ε मैं j , जहां यू मैं प्रत्येक शहर के लिए यादृच्छिक अवरोधन है, j = 1jiyijxij

yij=f(xij)+ui+ϵij,
ui । अगर हम यह मान यू मैं और ε मैं j मतलब 0 के साथ सामान्य वितरण का पालन करें और प्रसरण σ 2 यू और σ 2 , के अनुभवजन्य बायेसियन (ईबी) अनुमान यू मैं है यू मैं = σ 2 यूj=1,,niuiϵijσu2σ2uiजहां ˉ y मैं=1
u^i=σu2σu2+σ2/ni(y¯i.f(x¯i.)),
,( ˉ एक्स मैं)=1y¯i.=1niiniyijअगर हम इलाज( ˉ y मैं -( ˉ एक्स मैं))के रूप में OLS (साधारण कम से कम वर्ग) के अनुमानयूमैंएक वजन है, तो ईबी अनुमान 0 से भारित योग है और OLS अनुमान है, और नमूना आकार के बढ़ते समारोहni। अंतिम भविष्यवाणी है (एक्समैंj)+ यू मैंf(x¯i.)=1niinif(xij).(y¯i.f(x¯i.))uiniरेखीय प्रतीपगमन या यादृच्छिक वन की तरह मशीन सीखने की विधि से तय प्रभाव का अनुमान है। यह आसानी से डेटा के किसी भी स्तर तक बढ़ाया जा सकता है, कहते हैं कि नमूने शहरों और फिर क्षेत्रों और फिर देशों में घोंसले में बंधे हुए हैं। ट्री-आधारित विधियों के अलावा,SVMपर आधारित एक विधि है।
f^(xij)+u^i,
जहां ( एक्स मैं j )f^(xij)

यादृच्छिक-वन-आधारित पद्धति के लिए, आप CRAN पर MixRF()हमारे R पैकेज में प्रयास कर सकते हैं MixRF


क्या आप बता सकते हैं कि इंटरसेप्ट को साथ अलग-अलग होने की अनुमति क्यों है , लेकिन f में सभी i के लिए एक ही पैरामीटर है ? ओवरफिटिंग से बचने या समस्या को सुगम बनाने के लिए क्या यह एक सरल धारणा है? ifi
user20160

fuixijui,

6

यह देखते हुए कि आपके पास केवल दो चर और सरल घोंसले के शिकार हैं, मैं दूसरों की टिप्पणियों को एक श्रेणीबद्ध बेयर मॉडल का उल्लेख करते हुए प्रतिध्वनित करूंगा। आप पेड़-आधारित तरीकों के लिए एक प्राथमिकता का उल्लेख करते हैं, लेकिन क्या इसके लिए कोई विशेष कारण है? भविष्यवक्ताओं की एक न्यूनतम संख्या के साथ, मुझे पता है कि रैखिकता अक्सर एक मान्य धारणा है जो अच्छी तरह से काम करती है, और किसी भी मॉडल के गलत विनिर्देश को आसानी से अवशिष्ट भूखंडों के माध्यम से जांचा जा सकता है।

यदि आपके पास भविष्यवक्ताओं की एक बड़ी संख्या है, तो @Randel द्वारा उल्लिखित EM दृष्टिकोण पर आधारित RF उदाहरण निश्चित रूप से एक विकल्प होगा। एक अन्य विकल्प जो मैंने अभी तक नहीं देखा है वह है मॉडल-आधारित बूस्टिंग ( आर में mboost पैकेज के माध्यम से उपलब्ध ) का उपयोग करना। अनिवार्य रूप से, यह दृष्टिकोण आपको विभिन्न आधार शिक्षार्थियों (रैखिक और गैर-रैखिक) का उपयोग करके अपने निश्चित-प्रभावों के कार्यात्मक रूप का अनुमान लगाने की अनुमति देता है, और यादृच्छिक प्रभाव का अनुमान उस विशेष कारक में सभी स्तरों के लिए रिज-आधारित दंड का उपयोग करके लगाया जाता है। यह पेपर एक बहुत अच्छा ट्यूटोरियल है (पेज 11 पर यादृच्छिक प्रभाव आधार शिक्षार्थियों पर चर्चा की गई है)।

मैंने आपके नमूना डेटा पर एक नज़र डाली, लेकिन ऐसा लगता है कि इसमें केवल शहर, क्षेत्र और देश के यादृच्छिक प्रभाव चर हैं। इस मामले में, यह केवल उन कारकों के लिए अनुभवजन्य बेस अनुमानों की गणना करने के लिए उपयोगी होगा, किसी भी भविष्यवक्ताओं से स्वतंत्र। यह वास्तव में सामान्य रूप से शुरू करने के लिए एक अच्छा व्यायाम हो सकता है, क्योंकि शायद उच्च स्तर (देश, उदाहरण के लिए), के परिणाम में न्यूनतम विचरण को समझाया गया है, और इसलिए संभवतः उन्हें अपने मॉडल में जोड़ना सार्थक नहीं होगा।


1
mboostपैकेज शुरू करने के लिए +1 ।
रान्डेल

मैं जिस वास्तविक डेटा के साथ काम कर रहा हूं, उसमें दो से अधिक चर हैं, जो बहुत सारे वास्तविक-संसार में गड़बड़ी को जोड़ते हैं जो मेरे सरल उदाहरण (जैसे गैर रेखीयता, कोडपेंडेंस, लापता मान, श्रेणीबद्ध मान आदि) द्वारा नहीं उठाया जाता है। । मेरे अनुभव में, पेड़-आधारित शिक्षार्थी सभी वास्तविक दुनिया की गड़बड़ी से निपटने में सबसे अच्छा काम करते हैं, यही कारण है कि मैं उनका उपयोग करने की ओर झुकता हूं। (वहाँ एक कारण है XGBoost केगल पर लगभग सभी संरचित डेटा प्रतियोगिताओं को जीतता है।) mboostदिलचस्प लगता है - मैं इसे एक नज़र दूँगा। धन्यवाद
बेन

1
मैं देखता हूं, सहमत हूं कि पेड़ निश्चित रूप से उस स्थिति में उपयोगी हो सकते हैं। उस स्थिति में @ रेंडेल के सुझाव के साथ चिपकना एक अच्छा विकल्प होगा। Mboost में एक ट्री बेस लर्नर भी है जो यादृच्छिक प्रभावों के आधार शिक्षार्थियों के साथ संयोजन में उपयोगी साबित हो सकता है।
dmartin

3

यह उत्तर के बजाय एक टिप्पणी या सुझाव का अधिक है, लेकिन मुझे लगता है कि आप यहां एक महत्वपूर्ण सवाल पूछते हैं। जैसा कि कोई व्यक्ति जो बहुस्तरीय डेटा के साथ विशेष रूप से काम करता है, मैं कह सकता हूं कि मैंने बहुस्तरीय डेटा के साथ मशीन सीखने के बारे में बहुत कम पाया है। हालांकि, डैन मार्टिन, हाल ही में वर्जीनिया विश्वविद्यालय में मात्रात्मक मनोविज्ञान में पीएचडी स्नातक, बहुस्तरीय डेटा के साथ प्रतिगमन पेड़ों के उपयोग पर अपने शोध प्रबंध किया था। नीचे एक R पैकेज का लिंक दिया गया है जो उसने इनमें से कुछ उद्देश्यों के लिए लिखा था:

https://github.com/dpmartin42/mleda/blob/master/README.md

इसके अलावा, आप यहाँ उनके शोध प्रबंध पा सकते हैं:

http://dpmartin42.github.io/about.html


2
संदर्भ के लिए धन्यवाद, एरिक! मेरे शोध प्रबंध को ध्यान में रखने वाली एक बात यह है कि यह केवल मूल्यांकन करता है कि बहु-स्तरीय डेटा संरचनाओं के संपर्क में आने पर वन पद्धति "बॉक्स से बाहर" कैसे प्रदर्शन करती है। जिन तरीकों का उल्लेख @ रैंडल ने किया है उनकी चर्चा अध्याय 3 में साहित्य समीक्षा के रूप में की गई है, लेकिन अनुकरण अध्ययन ने मुख्य रूप से ब्रेमन के मूल एल्गोरिथ्म और सशर्त प्रवेश पेड़ों / जंगलों की जांच की।
dmartin

1

RFcluster()आर के लिए गेमक्लास पैकेज से समारोह "यादृच्छिक क्लस्टली डेटा के साथ काम करने के लिए यादृच्छिक रूप से और अक्षम रूप से कार्य करने के लिए यादृच्छिक जंगलों को गोद लेता है"। निम्नलिखित उदाहरण के लिए मदद पृष्ठ से है RFcluster:

 library(randomForest)
 library(gamclass)
 data(mlbench::Vowel)
 RFcluster(formula=Class ~., id = V1, data = Vowel, nfold = 15,
           tree=500, progress=TRUE, printit = TRUE, seed = 29)

यह एक ओओबी सटीकता देता है (जहां "बैग" स्पीकरों के बैग हैं, न कि व्यक्तिगत स्पीकर नमूनों के बैग), जो मेरी मशीन 0.57 के रूप में देती है।


0

आप मेटबॉस्ट पर एक नज़र डालना चाहते हैं : मिलर पीजे एट अल। मेटबॉस्ट: पदानुक्रमिक रूप से क्लस्टर किए गए डेटा के साथ अन्वेषणात्मक प्रतिगमन विश्लेषण। XXiv: 1702.03994

सार से उद्धरण: हम हिस्टॉरिकली क्लस्टर्ड डेटा के लिए मेटबॉस्ट कहे जाने वाले निर्णय निर्णय पेड़ों को बढ़ाने के लिए एक विस्तार का प्रस्ताव देते हैं। यह प्रत्येक पेड़ की संरचना को समूहों में समान करने के लिए विवश करके काम करता है, लेकिन टर्मिनल नोड को अलग करने का अर्थ है। यह भविष्यवाणियों और विभाजन बिंदुओं को प्रत्येक समूह के भीतर अलग-अलग भविष्यवाणियों के लिए नेतृत्व करने की अनुमति देता है, और nonlinear समूह विशिष्ट प्रभावों का अनुमान लगाता है। महत्वपूर्ण रूप से, मेटबॉस्ट हजारों टिप्पणियों और सैकड़ों भविष्यवक्ताओं के लिए कम्प्यूटेशनल रूप से व्यवहार्य बना रहता है जिसमें लापता मान शामिल हो सकते हैं।

यह आर पैकेज mvtboost में लागू किया गया है


1
कृपया केवल लिंक के बजाय संदर्भ प्रदान करें (विशेषकर आपके पहले लिंक के लिए), क्योंकि लिंक मर सकते हैं
एंटोनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.