2012-02-28 11 views
53

मैं कुछ दस्तावेजों को वर्गीकृत करने के लिए LibSVM का उपयोग कर रहा हूं। दस्तावेजों को अंतिम परिणाम दिखाने के रूप में वर्गीकृत करना मुश्किल लगता है। हालांकि, मैंने अपने मॉडल को प्रशिक्षित करते समय कुछ देखा है। और यह है: यदि मेरा प्रशिक्षण सेट उदाहरण के लिए 1000 में से लगभग 800 को समर्थन वैक्टर के रूप में चुना जाता है। मैंने यह देखने के लिए हर जगह देखा है कि यह एक अच्छी बात है या बुरा है। मेरा मतलब है समर्थन समर्थन वैक्टरों और क्लासिफायर प्रदर्शन की संख्या के बीच एक रिश्ता है? मैंने इस पोस्ट को previous post पढ़ा है। हालांकि, मैं पैरामीटर चयन कर रहा हूं और मुझे भी यकीन है कि फीचर वैक्टर में विशेषताओं का ऑर्डर किया गया है। मुझे बस संबंध जानने की जरूरत है। धन्यवाद। p.s: मैं एक रैखिक कर्नेल का उपयोग करता हूं।समर्थन वेक्टरों और प्रशिक्षण डेटा और वर्गीकरण प्रदर्शन की संख्या के बीच संबंध क्या है?

+0

50000 एमएनआईएसटी अंकों (784 डी) पर एफवीआईवी, आरबीएफ-एसवीएम 14398 समर्थन वैक्टर, 2 9% देता है। – denis

उत्तर

126

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

हार्ड मार्जिन रैखिक SVM

एक प्रशिक्षण सेट जहां डाटा रैखिक वियोज्य है, और आप एक कठिन मार्जिन (कोई ढीला अनुमति), समर्थन वैक्टर अंक जो समर्थन पर ही स्थित हैं कर रहे हैं प्रयोग कर रहे हैं hyperplanes (hyperplanes मार्जिन के किनारों पर विभाजन hyperplane के समानांतर)

Hard-Margin SVM

समर्थन वैक्टर के सभी मार्जिन पर वास्तव में झूठ बोलते हैं। आयाम या डेटा सेट के आकार की संख्या की परवाह किए बिना, समर्थन वैक्टर की संख्या हो सकता है के रूप में छोटे से 2. के रूप में हमारे डाटासेट रैखिक पृथक करने योग्य नहीं है

मुलायम मार्जिन रैखिक SVM

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

Soft-margin Linear SVM

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

गैर रैखिक SVM

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

enter image description here

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

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

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

एक अच्छा संसाधन: A Tutorial on Support Vector Machines for Pattern Recognition

+7

बहुत अच्छा और पूरी तरह से स्पष्टीकरण। धन्यवाद! – nunos

+0

महान जवाब! लेकिन लिंक अब काम नहीं कर रहा है ... क्या आप इसे अपडेट कर सकते हैं? – Matteo

+0

[पैटर्न पहचान के लिए समर्थन वेक्टर मशीनों पर एक ट्यूटोरियल (कैश संस्करण से संग्रहीत)] (https://archive.is/mm8Pd)। – user1712447

6

एसवीएम वर्गीकरण समर्थन वैक्टर (एसवी) की संख्या में रैखिक है। एसवी की संख्या प्रशिक्षण नमूने की संख्या के बराबर सबसे खराब स्थिति में है, इसलिए 800/1000 अभी तक का सबसे बुरा मामला नहीं है, लेकिन यह अभी भी बहुत खराब है।

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

+0

बस उत्सुक है, आप क्या मानते हैं कि ओपी पहले से ही एक रैखिक एसवीएम का उपयोग नहीं कर रहा है? कुछ गैर-रैखिक कर्नेल का उपयोग करते समय मुझे इसे याद करना होगा। –

+0

@ChrisA .: वे एक रैखिक एसवीएम का उपयोग कर रहे हैं, लेकिन फिर एक LibibVM में लागू किया गया है, जो LibLinear में से तुलना में उपोष्णकटिबंधीय है। –

+0

मैं रैखिक कर्नेल – Hossein

11

दोनों नमूने की संख्या और विशेषताओं समर्थन वैक्टर की संख्या को प्रभावित कर सकते की संख्या, मॉडल और अधिक जटिल बना रही है। मेरा मानना ​​है कि आप गुणों के रूप में शब्दों या यहां तक ​​कि ngrams का उपयोग करते हैं, इसलिए उनमें से बहुत सारे हैं, और प्राकृतिक भाषा मॉडल स्वयं बहुत ही जटिल हैं। तो, 1000 नमूने के 800 समर्थन वैक्टर ठीक लगते हैं। (सी/एन पैरामीटर के बारे में @ करेनू की टिप्पणियों पर भी ध्यान दें जो एसवी संख्या पर भी बड़ा प्रभाव डालते हैं)।

इस याद के बारे में अंतर्ज्ञान प्राप्त करने के लिए SVM मुख्य विचार। एसवीएम बहुआयामी फीचर स्पेस में काम करता है और हाइपरप्लेन खोजने के लिए प्रयास करता है जो सभी दिए गए नमूने को अलग करता है। आप नमूने की एक बहुत कुछ और केवल 2 सुविधाओं (2 आयाम) है, तो डेटा और hyperplane कुछ ऐसा दिखाई देगा:

enter image description here

यहाँ वहाँ केवल 3 समर्थन वैक्टर कर रहे हैं, अन्य सभी उनके पीछे हैं और इस प्रकार कोई भूमिका निभाओ मत। ध्यान दें, कि इन समर्थन वैक्टरों को केवल 2 निर्देशांक द्वारा परिभाषित किया जाता है।

अब कल्पना करें कि आपके पास 3 आयामी स्थान है और इस प्रकार वेक्टरों का समर्थन 3 निर्देशांक द्वारा परिभाषित किया जाता है।

enter image description here

इसका मतलब यह है वहाँ एक और पैरामीटर (समन्वय) को समायोजित करने की है, और इस समायोजन अधिक नमूने इष्टतम hyperplane खोजने की जरूरत पड़ सकती है। दूसरे शब्दों में, सबसे बुरे मामले में एसवीएम प्रति नमूना केवल 1 हाइपरप्लेन समन्वय पाता है।

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

+0

आपके उत्तर के लिए धन्यवाद! क्या आपने पिछले पैराग्राफ में जो बताया है उसके लिए आपके पास कोई संदर्भ है? "जब डेटा अच्छी तरह से संरचित होता है (यानी पैटर्न बहुत अच्छी तरह से रखता है) केवल कई समर्थन वैक्टरों की आवश्यकता हो सकती है - अन्य सभी उनके पीछे रहेंगे। लेकिन पाठ बहुत ही खराब संरचित डेटा है। एसवीएम नमूना फिट करने की कोशिश कर रहा है साथ ही साथ संभव है, और इस तरह बूंदों की तुलना में समर्थन वैक्टरों को और भी नमूने के रूप में लेता है। " thx – Hossein

+0

यह सही नहीं है - यदि डेटासेट रैखिक रूप से अलग करने योग्य है और सही वितरण है, तो आपके पास केवल 2 समर्थन वैक्टर के साथ 3 आयामी डेटा सेट हो सकता है। आपके पास एक ही सटीक डेटासेट भी हो सकता है और 80% समर्थन वैक्टर के साथ समाप्त हो सकता है। यह सब इस बात पर निर्भर करता है कि आप सी कैसे सेट करते हैं। असल में, एनयू-एसवीएम में आप एनयू को बहुत कम सेट करके समर्थन वैक्टरों की संख्या को नियंत्रित कर सकते हैं।1) – karenu

+0

@ केरेनू: I _didn't_ ने कहा कि गुणों की संख्या _always_ की संख्या बढ़ने से समर्थन वैक्टर की संख्या में वृद्धि हुई है, मैंने अभी कहा है कि निश्चित सी/एनयू पैरामीटर के साथ समर्थन वैक्टर की संख्या फीचर आयामों की संख्या पर निर्भर करती है और नमूनों की संख्या। और टेक्स्ट डेटा के लिए, जो इसकी प्रकृति से बहुत खराब संरचित है मार्जिन के अंदर समर्थन वैक्टरों की संख्या (हार्ड-मार्जिन एसवीएम उच्च वर्गीकरण कर्नेल के साथ भी टेक्स्ट वर्गीकरण के लिए अपरिहार्य है) हमेशा उच्च रहेगा। – ffriend

15

800 1000 से बाहर मूल रूप से आपको बताता है कि SVM लगभग हर प्रशिक्षण नमूना उपयोग करने के लिए प्रशिक्षण सेट एन्कोड करने के लिए की जरूरत है। यह मूल रूप से आपको बताता है कि आपके डेटा में अधिक नियमितता नहीं है।

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

+1

दिए गए डेटा से ग्रेट निष्कर्ष, इसे ध्यान में रखना चाहिए। –

+4

मैं इसे उत्तर के रूप में चुना होगा। पहले लंबे उत्तर केवल अप्रासंगिक सी एंड पी एसवीएम स्पष्टीकरण –

+2

मैं सहमत हूं। हालांकि अन्य उत्तरों ने एक अच्छा सारांश देने की कोशिश की, यह ओपी के लिए सबसे प्रासंगिक है। यदि एसवी का हिस्सा है। यह बड़ा है याद रखना, सीखना नहीं, और इसका मतलब है कि सामान्य सामान्यीकरण => नमूना त्रुटि (परीक्षण सेट त्रुटि) से बड़ा होगा। – Kai

0

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

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