2009-11-18 20 views
17

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

समस्या यह है कि अधिकांश ट्यूटोरियल एक समीकरण तक जाते हैं जिसे "वर्गिक समस्या" के रूप में हल किया जा सकता है, लेकिन वे कभी भी वास्तविक एल्गोरिदम नहीं दिखाते हैं! तो क्या आप मुझे एक बहुत ही सरल कार्यान्वयन के लिए इंगित कर सकते हैं जिसे मैं पढ़ सकता हूं, या (बेहतर) एक ट्यूटोरियल के लिए जो कार्यान्वयन के विवरण के लिए सभी तरह से जाता है?

बहुत बहुत धन्यवाद!

उत्तर

12

अनुक्रमिक मिनिमल अनुकूलन (एसएमओ) विधि के लिए कुछ स्यूडोकोड जॉन सी प्लैट द्वारा इस पत्र में पाया जा सकता है: Fast Training of Support Vector Machines using Sequential Minimal Optimization। एसएमओ एल्गोरिदम का एक जावा कार्यान्वयन भी है, जिसे अनुसंधान और शैक्षणिक उद्देश्य (SVM-JAVA) के लिए विकसित किया गया है।

अन्य आमतौर पर इस्तेमाल किया तरीकों QP अनुकूलन समस्या को हल करने में शामिल हैं:

  • विवश संयुग्म ढ़ाल
  • आंतरिक बिंदु तरीकों
  • सक्रिय सेट तरीकों

लेकिन ध्यान रखें कि कुछ गणित ज्ञान इन चीजों को समझने के लिए जरूरी है (लग्रेंज गुणक, करुश-कुह्न-टकर स्थितियां, आदि)।

+0

मेरे पास गणित पृष्ठभूमि है, मेरे पास अभी बहुत समय नहीं है ... आपके उत्तर के लिए धन्यवाद! –

9

आप कर्नेल या नहीं का उपयोग करने में रुचि रखते हैं? कर्नेल के बिना, इन प्रकार की अनुकूलन समस्याओं को हल करने का सबसे अच्छा तरीका स्टोकास्टिक ग्रेडियेंट वंश के विभिन्न रूपों के माध्यम से होता है। http://ttic.uchicago.edu/~shai/papers/ShalevSiSr07.pdf में एक अच्छा संस्करण वर्णित है और इसमें एक स्पष्ट एल्गोरिदम है।

स्पष्ट एल्गोरिदम कर्नेल के साथ काम नहीं करता है लेकिन संशोधित किया जा सकता है; हालांकि, कोड और रनटाइम जटिलता के मामले में यह अधिक जटिल होगा। पेज 11 के शीर्ष Pegasos एल्गोरिथ्म का वर्णन भी kernels.It हो सकता है के लिए:

+0

नहीं, अभी के लिए मैं केवल रैखिक एसवीएम में रुचि रखता हूं। आपके उत्तर के लिए धन्यवाद! –

+0

क्या आप कर्नेल के साथ एक सरल, न्यूनतम उदाहरण जानते हैं? मैं ढाल वंश समझता हूं, लेकिन कर्नेल अधिक दिलचस्प है। एक कर्नेल के बिना, यह मूल रूप से रैखिक सक्रियण के साथ एक perceptron है, है ना? –

1

liblinear पर और गैर रेखीय SVM के libsvm

+0

आपको कम से कम भंडारों के लिंक जोड़ना चाहिए। –

0

निम्नलिखित कागज "SVM के लिए प्राइमल अनुमानित उप ढाल सॉल्वर Pegasos" पर के लिए एक नज़र http://ttic.uchicago.edu/~nati/Publications/PegasosMPB.pdf

से डाउनलोड यह समन्वय वंश और उपद्रव वंश का एक संकर प्रतीत होता है। इसके अलावा, एल्गोरिदम की पंक्ति 6 ​​गलत है। भविष्यवाणी में y_i_t की दूसरी उपस्थिति को इसके बजाय y_j के साथ प्रतिस्थापित किया जाना चाहिए।

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