5

मेरे पास मशीन सीखने की समस्या है और मुझे नहीं पता कि इसके लिए सैद्धांतिक समाधान है या नहीं।मशीन लर्निंग दर्शन: पक्षपातपूर्ण डेटा के लिए मॉडल लागू करना

मैं लेबल डेटा है एक यादृच्छिक वन वर्गीकरण मॉडल बनाने के लिए (यह डाटासेट डी 1 कॉल) है और यह अच्छी तरह से करता है।

अब मेरा मुख्य रुचि इस मॉडल को किसी अन्य डेटासेट डी 2 पर लागू करना है जिसमें शून्य लेबल हैं, जिसका अर्थ है कि मैं इसे प्रशिक्षण के लिए उपयोग नहीं कर सकता। पर प्रदर्शन को मापने का एकमात्र तरीका D2 इससे अनुमानित कक्षाओं के अनुपात की जांच करना है।

समस्या: डी 2डी 1 (सुविधाओं एक ही मतलब नहीं है या एक ही वितरण फिट) की तुलना में विषम है। इस वजह से, मॉडल पर लागू होता है D2 एक वर्ग की ओर भारी skewed परिणाम देता है। मुझे पता है कि यह सामान्य है क्योंकि अधिकांश डी 2डी 1 के छोटे सबसेट के समान है।

लेकिन क्या उस skewness को सही करने के लिए कोई रास्ता है? मैं अपनी समस्या की प्रकृति से जानता हूं कि भविष्यवाणी की गई कक्षाओं के अनुपात कम पक्षपातपूर्ण होना चाहिए। मैंने सामान्यीकरण की कोशिश की है लेकिन यह वास्तव में मदद नहीं करता है।

मुझे लगता है मैं सीधे सोच नहीं कर रहा हूँ: 3

उत्तर

7

प्रश्न पूछना। इस पर मेरा जवाब तीन भागों है।

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

सुविधाओं Y द्वारा X लक्ष्य चर से चिह्नित हैं और वर्गीकारक f(X) |-> Y से सीखा: हालांकि, वहाँ समाधान जो बहुत अच्छे परिणाम

अंकन के लिए प्रदान कर सकते हैं कर रहे हैं।P(X|D1) Testset में

कक्षा वितरण

आप "माने कि एक (भविष्यवाणी चर में वितरण इस्तेमाल कर सकते हैं" से की भविष्यवाणी की कक्षाओं के अनुपात की जांच (थोड़ा कोस अंकन) द्वारा D1 में X का वितरण यह। ")। हालांकि यह केवल एक संकेत हो सकता है। मैं उद्योग में क्लासिफायरों का निर्माण करने के लिए भविष्यवाणी कर रहा हूं कि एक मशीन असफल हो जाएगी (अनुमानित रखरखाव)। बहुत सारे इंजीनियर मेरे इनपुट डेटा को कम करने की कोशिश कर रहे हैं, यह कर रहा है मशीनें अधिक विश्वसनीय उत्पाद बनाती हैं। हालांकि, यह कोई समस्या नहीं है, क्योंकि एक वर्ग मूल रूप से गायब हो जाता है। हालांकि, क्लासिफायर अभी भी वैध हैं।

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

क्या स्काईनेस एक समस्या हो सकती है? दरअसल यह क्लासिफायर के रूप में आमतौर पर F1 माप या कुछ अन्य सांख्यिकीय संपत्ति को कम करने की कोशिश करता है। यदि आप अग्रिम में D2 में वितरण को जानते हैं तो आप एक लागत कार्य प्रदान कर सकते हैं जो इस वितरण के तहत लागत को कम करता है। इन लागतों का उपयोग अन्य उत्तरों में उल्लिखित प्रशिक्षण डेटा को फिर से शुरू करने के लिए किया जा सकता है, हालांकि, कुछ सीखने वाले एल्गोरिदम में भी इस जानकारी को शामिल करने के लिए अधिक विस्तृत तकनीकें हैं।

बाहरी जांच

एक सवाल है कि क्या आप पता लगा सकते हैं कि कुछ आदानों X में बदल गया है। यह बहुत महत्वपूर्ण है क्योंकि इससे संकेत मिलता है कि आपके पास गलत डेटा है। आप काफी सरल परीक्षणों को लागू कर सकते हैं जैसे उदाहरण के लिए सभी आयामों में माध्य और वितरण। हालांकि, यह चर के बीच निर्भरताओं को अनदेखा करता है।

निम्न दो चित्रण im आईरिस डाटासेट enter image description here

दो तकनीकों मेरे मन जो आप पता लगाने के लिए डेटा में है कि कुछ बदल गया है अनुमति देने के लिए कूद का उपयोग कर के लिए

। पहली तकनीक पीसीए परिवर्तन पर निर्भर करती है। केवल संख्यात्मक के लिए लेकिन categorial सुविधाओं के लिए समान विचार हैं। पीसीए आपको अपने इनपुट डेटा को निम्न आयामी अंतरिक्ष में बदलने की अनुमति देता है। यह PCA(X,t)=PCA([X1,...,Xn],t)=[Cond1,...,Condm]=Cond प्रक्षेपण t जहां आम तौर पर n<<m के साथ यह परिवर्तन अभी भी उलट है जैसे कि PCA^1(Cond,t) = X' और त्रुटि MSE(X,X') छोटा है। किसी समस्या का पता लगाने के लिए आप इस त्रुटि की निगरानी कर सकते हैं और एक बार बढ़ने के बाद आप कह सकते हैं कि आप अपनी भविष्यवाणियों पर विश्वास नहीं करते हैं।

अगर मैं versicolor और virginica से सभी डेटा पर एक पीसीए का निर्माण और (पीसीए सभी आईरिस आयामों पर) पुनर्निर्माण दो आयाम में त्रुटि साजिश मैं

enter image description here

मिलता लेकिन यदि वर्सिकलर नए डेटा है परिणाम कम विश्वास कर रहे हैं।

enter image description here

हालांकि, एक पीसीए (या बराबर।इसी तरह) संख्यात्मक डेटा के लिए किसी भी तरह से किया जाता है, इसलिए, यह बिना किसी ओवरहेड के अच्छे संकेत दे सकता है।

एक दूसरी तकनीक जिसे मैं जानता हूं, तथाकथित वन क्लास सपोर्ट वेक्टर मशीनों पर आधारित है। जहां एक सामान्य समर्थन वेक्टर मशीन एक वर्गीकृत का निर्माण करेगी जो दो लक्षित वर्ग Y को अलग करने का प्रयास करती है। एक वर्ग समर्थन वेक्टर मशीन अदृश्य डेटा से अलग अलग करने की कोशिश करता है। यदि आप वर्गीकरण के लिए एक समर्थन वेक्टर मशीन का उपयोग करते हैं तो इन तकनीकों का उपयोग करना काफी आकर्षक है। आपको मूल रूप से दो वर्गीकरण मिलेंगे। पहला लक्ष्य लक्ष्य डेटा और दूसरा कहता है कि पहले समान डेटा देखा गया है या नहीं।

enter image description here

रूप versicolor से डाटा देखा जा सकता है प्रकट होता है संदिग्ध छोड़ने जा रहे हैं:

अगर मैं नवीनता द्वारा setosa और virginca पर एक एक वर्ग वर्गीकारक और रंग का निर्माण मैं निम्नलिखित ग्राफ मिलता है। उस स्थिति में यह एक नई कक्षा है। हालांकि, अगर हम मान लेंगे कि ये कुंवारी के उदाहरण हैं तो वे खतरनाक रूप से हाइपरप्लेन के करीब बह रहे हैं।

अर्द्ध देखरेख सीखने और Transductive

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

Apendix

"जब आप एक सरल समस्या [D2 के लिए लेबल की भविष्यवाणी] को हल करना चाहते एक और अधिक जटिल समस्या [सभी संभव डेटा के लिए एक वर्गीकारक निर्माण] हल करने के लिए कोशिश मत करो" के रूप में

भूखंडों के लिए आरसीडीई

ggplot(iris)+aes(x=Petal.Width,y=Petal.Length,color=Species)+geom_point()+stat_ellipse() 
library(e1071) 
iris[iris$Species %in% c("virginica","setosa"),] 

ocl <- svm(iris[iris$Species %in% c("virginica","setosa"),3:4],type="one-classification") 
coloring <- predict(ocl,iris[,3:4],decision.values=TRUE) 

ggplot(iris)+aes(x=Petal.Width,y=Petal.Length,color=coloring)+geom_point()+stat_ellipse() 
ggplot(iris)+aes(x=Petal.Width,y=Petal.Length)+geom_point(color=rgb(red=0.8+0.1*attr(coloring,"decision.values"),green=rep(0,150),blue=1-(0.8+0.1*attr(coloring,"decision.values")))) 

pca <- prcomp(iris[,3:4]) 

#pca <- prcomp(iris[iris$Species %in% c("virginica","setosa"),1:4], retx = TRUE, scale = TRUE) 
pca <- prcomp(iris[iris$Species %in% c("virginica","setosa"),1:4], retx = TRUE, scale = TRUE,tol=0.2) 
    pca <- prcomp(iris[iris$Species %in% c("virginica","versicolor"),1:4], retx = TRUE, scale = TRUE,tol=0.4) 
    predicted <-predict(pca,iris[,1:4]) 
    inverted <- t(t(predicted %*% t(pca$rotation)) * pca$scale + pca$center) 
    ggplot(inverted[,3:4]-iris[,3:4])+aes(x=Petal.Width,y=Petal.Length,color=iris$ 
            Species)+geom_point()+stat_ellipse() 
2

है कि इस विषम परिणाम के लिए ले जा सकता है कारकों की एक संख्या हो सकती है:

आप संकेत मिलता है कि डी 2 डी 1 की तुलना बढ़ सकता है लगता है, और इसलिए भारी गिरावट के परिणाम संभवतः एक अपेक्षित परिणाम हो सकते हैं (शायद डी 2 डेटासेट समस्या स्थान के एक क्षेत्रीय हिस्से पर केंद्रित है जहां एक वर्ग प्रभावी है)। डेटा की प्रकृति के आधार पर, यह एक वैध परिणाम हो सकता है।

शायद डी 1 किसी विशेष वर्ग पर ओवरट्रेन किया गया है। आप परिणाम निर्धारित करने के लिए अन्य वर्गों में से एक को वर्गीकरण को प्रोत्साहित करने के लिए कक्षा में कम मामलों पर प्रशिक्षण का प्रयास कर सकते हैं। मुझे नहीं पता कि आपके पास कितने प्रशिक्षण या परीक्षण मामले हैं, लेकिन यदि यह बड़ा है और अन्य कक्षाओं के मुकाबले प्रशिक्षण डेटा में उन वर्गों में से अधिक लेबल हैं, तो शायद यह अतिसंवेदनशीलता का कारण बन सकता है।

शायद आप प्रशिक्षण डेटा को वर्गीकरण पर इसका असर देखने के लिए डी 2 के साधनों के करीब होने के लिए भी उपयोग कर सकते हैं। हालांकि मैंने पहले कभी यह कोशिश नहीं की है।

मुझे उम्मीद है कि यह किसी भी तरह से मदद करता है।

संबंधित मुद्दे