रैखिक पृथक्करण के लिए परीक्षण


20

क्या उच्च आयामों में दो-स्तरीय डेटासेट के रैखिक पृथक्करण का परीक्षण करने का एक तरीका है? मेरे फ़ीचर वैक्टर 40-लंबे हैं।

मुझे पता है कि मैं हमेशा लॉजिस्टिक रिग्रेशन प्रयोगों को चला सकता हूं और यह निष्कर्ष निकालने के लिए हिट्रेट बनाम झूठी अलार्म दर निर्धारित कर सकता हूं कि दोनों वर्ग रैखिक रूप से अलग हैं या नहीं, लेकिन यह जानना अच्छा होगा कि क्या ऐसा करने के लिए पहले से ही एक मानक प्रक्रिया मौजूद है।



यह अलगाव की साजिश करने के लिए उपयोगी है: x = misclassified points सामान्य-से-अलग-प्लेन, y = संचयी हानि (x)। (एक नमूना कथानक के लिए, svm और डेटा-विज़ुअलाइज़ेशन के टैग के साथ एक नया प्रश्न आज़माएं।)
denis

3 वर्गों की समस्या के बारे में क्या? क्या सभी 3+ वर्गों की समस्याएं गैर-रैखिक हैं?
रोजी

जवाबों:


3

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

आप सुविधा चयन (आवरण मॉडल) के लिए एक खोज विधि के साथ एसवीएम को लपेट सकते हैं और यह देखने की कोशिश कर सकते हैं कि आपकी कोई भी विशेषता आपके पास मौजूद कक्षाओं को रैखिक रूप से विरल कर सकती है या नहीं।

SVM का उपयोग करने के लिए कई दिलचस्प उपकरण हैं जिनमें LIBSVM , MSVMPack और Scikit-learn SVM शामिल हैं


1
+1। यह लगभग वैसा ही है जैसे निक एसवीएम का वर्णन कर रहे थे, उनकी बात नहीं सुनी जा रही थी। आर में, आप इस्तेमाल कर सकते हैं (रहस्यमय तरीके से नाम) e1071पैकेज है svmसाथ kernel="linear"और बनाम वास्तविक भविष्यवाणी पर नज़र।
वेन

1
मुझे एसवीएम के बारे में पता है। बस मुझे नहीं पता था कि मैं वास्तव में प्रत्येक नमूने को वर्गीकृत किए बिना रैखिक पृथक्करण के परीक्षण के लिए उनका उपयोग कर सकता हूं ।
निक

4
@Wayne: Nik वास्तव में SVMs के लिए नहीं कह रहा है। मैं अपने जवाब में समझाता हूं कि यह उसकी समस्या का समाधान क्यों नहीं है।
राफेल

2
एक " रैखिक आरबीएफ कर्नेल " मौजूद नहीं है।
मार्क क्लेसेन

बेशक ! क्या मतलब था कि एक आरबीएफ कर्नेल है जो डेटा को रैखिक रूप से अलग करने योग्य स्थान में मैप करता है।
सूफानोम

17

कम्प्यूटेशनल रूप से यह तय करने का सबसे प्रभावी तरीका है कि रैखिक प्रोग्रामिंग को लागू करने से दो सेट अंक रैखिक रूप से अलग होते हैं या नहीं । GLTK उस उद्देश्य के लिए एकदम सही है और बहुत अधिक हर हाइलेवल भाषा इसके लिए एक इंटरफ़ेस प्रदान करती है - आर , पायथन, ऑक्टेव, जूलिया, आदि।

एसवीएम के उपयोग का सुझाव देने वाले उत्तर के संबंध में :

एसवीएम का उपयोग दो कारणों से रैखिक पृथक्करण की पुष्टि करने के लिए एक उप-इष्टतम समाधान है:

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

  2. एसवीएम अधिकतम मार्जिन वाले क्लासिफायर हैं। इसका मतलब है कि एल्गोरिथ्म एक अलग प्लेन खोजने की कोशिश करेगा जो दोनों वर्गों को अलग कर रहा है, जहाँ तक संभव हो दोनों से दूर रहने की कोशिश कर रहा है। फिर से यह कम्प्यूटेशनल प्रयास को अनावश्यक रूप से बढ़ाने वाला एक फीचर है क्योंकि यह कुछ ऐसी गणना करता है जो रैखिक पृथक्करण के प्रश्न का उत्तर देने के लिए प्रासंगिक नहीं है।


मान लें कि आपके पास A और B का एक सेट है:

यहां छवि विवरण दर्ज करें

फिर आपको निम्नलिखित शर्तों के लिए 0 को न्यूनतम करना होगा:

(ए नीचे एक मैट्रिक्स है, ऊपर से बिंदुओं का सेट नहीं)

यहां छवि विवरण दर्ज करें

"मिनिमाइजिंग 0" प्रभावी रूप से इसका मतलब है कि आपको वास्तव में एक उद्देश्य फ़ंक्शन का अनुकूलन करने की आवश्यकता नहीं है क्योंकि यह पता लगाना आवश्यक नहीं है कि सेट रैखिक रूप से अलग हैं या नहीं।

अंत में ( यहां छवि विवरण दर्ज करें) अलग हो रहे विमान को परिभाषित कर रहा है।


यहां छवि विवरण दर्ज करें

यदि आप R या गणित के विवरण में एक कामकाजी उदाहरण में रुचि रखते हैं, तो इसे देखें ।


3
एसवीएम सॉफ्ट-मार्जिन क्लासिफायर हैं ... सिवाय जब आप हार्ड मार्जिन एसवीएम का उपयोग करते हैं। उस ने कहा, एसवीएम का उपयोग करना एक तोप के साथ एक मक्खी की शूटिंग की तरह होगा।
मार्क क्लेसेन

यह सही है - हालांकि एसवीएम पुस्तकालयों का बहुत (या शायद दूर का बहुमत) इस विकल्प की पेशकश नहीं करता है
राफेल

2
सी

0

रैखिक पर्सेप्ट्रॉन को एक समाधान खोजने की गारंटी दी जाती है यदि कोई मौजूद है। यह दृष्टिकोण बड़े आयामों के लिए कुशल नहीं है। कम्प्यूटेशनल रूप से यह तय करने का सबसे प्रभावी तरीका कि अंकों के दो सेट रैखिक रूप से अलग हैं, @Raffel द्वारा उल्लिखित रैखिक प्रोग्रामिंग को लागू करने से।

एक त्वरित समाधान एक अवधारणात्मक हल करना होगा। एक उदाहरण के साथ एक कोड Matlab में Perceptron का उपयोग कर हल करने के लिए है

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