मल्टीस्कल्स एसवीएम प्रदर्शन करने का सबसे अच्छा तरीका


18

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

कोड: MATLAB में

   u=unique(TrainLabel); 
    N=length(u); 
    if(N>2)    
        itr=1;    
        classes=0;   
        while((classes~=1)&&(itr<=length(u)))   
            c1=(TrainLabel==u(itr));    
            newClass=double(c1); 
            tst = double((TestLabel == itr));
            model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154');  
            [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);    
            itr=itr+1;   
        end
        itr=itr-1;
    end

इसे कैसे सुधारा जा सकता है?


classesकोड में चर क्या करता है ? यह बेकार लगने लगा है।

क्या आप किसी निष्कर्ष पर पहुंचे? मेरे पास मेरे काम के साथ यह समस्या है। यदि आप एक उपयुक्त rusult पर पहुंच गए हैं तो कृपया अपना बहुविकल्पी कोड यहाँ साझा करें। धन्यवाद।
me.rasouli

जवाबों:


16

मल्टी-क्लास वर्गीकरण के लिए बहुत सारे तरीके हैं। दो क्लासिक विकल्प, जो एसवीएम-विशिष्ट नहीं हैं:

  1. एक-बनाम-सभी (ओवीए) वर्गीकरण:
    मान लीजिए कि आपके पास ए, बी, सी और डी कक्षाएं हैं, एक चार रास्ता वर्गीकरण करने के बजाय, चार बाइनरी क्लासीफायर को प्रशिक्षित करें: ए बनाम नहीं-ए, बी बनाम नहीं-बी , सी बनाम नहीं-सी, और डी बनाम नहीं-डी। फिर, या तो सकारात्मक वर्ग चुनें जो "सर्वश्रेष्ठ" है (उदाहरण के लिए, सभी चार रनों के मार्जिन से सबसे आगे)। यदि कोई भी वर्गीकरण सकारात्मक नहीं है (यानी, वे सभी नहीं-एक्स हैं), तो उस वर्ग के "विपरीत" को चुनें जो सबसे खराब है (जैसे, मार्जिन के सबसे करीब)।

  2. सभी-बनाम-सभी:
    वर्गीकरण के सभी संभव जोड़े को प्रशिक्षित करें। कुछ कारक (उदाहरण के लिए, # चयनित समय) की कक्षाओं को रैंक करें, और सर्वश्रेष्ठ चुनें।

जो सबसे अच्छा काम करता है वह विवादास्पद है: डुआन और कीर्थी ने एक अनुभवजन्य अध्ययन किया है जो एक विशिष्ट ऑल-बनाम-ऑल विधि का सुझाव देता है, जबकि रिफ़किन और क्लॉटौ एक-बनाम-सभी योजना के लिए तर्क देते हैं। यहां तक ​​कि ऐसी योजनाएं भी हैं जहां कोई स्वयं लेबल के बजाय कक्षा लेबल का वर्णन करने वाले त्रुटि-सुधार कोड सीखता है।

सौभाग्य!

संपादित करें: क्या आप वास्तव में चाहते हैं, विशेष रूप से ओवीए के लिए, प्रत्येक वर्ग की उत्तरवर्ती संभावना है। कुछ तरीकों के लिए, Naive Bayes की तरह, जो बाहर निकलने के लिए तुच्छ है। एसवीएम आमतौर पर आपको संभावनाएं नहीं देते हैं, लेकिन उन्हें गणना करने के तरीके हैं। जॉन प्लैट के 1999 के पेपर "सपोर्ट वेक्टर मशीनों के लिए संभाव्य आउटपुट" देखें ...


2
ओवीए के लिए - क्या आप उस वर्ग को चुन सकते हैं जिसमें सबसे बड़ी संभावना है (प्लॉट स्केलिंग से प्रेरित)?
B_Miner

1
हाँ, यह मूल रूप से डुआन और कीर्थी पेपर का अपशॉट है। वे प्लास्ट संभावनाओं को हस्ती की जोड़ीदार युग्मन चाल के साथ जोड़ते हैं और अच्छे परिणाम प्राप्त करते हैं। मुझे संभवतः इसे शामिल करने के लिए पाठ को संपादित करना चाहिए। अच्छा पकड़ B_Miner!
मैट क्रूस

SVM में, क्या आपको वोटिंग या सम-पूलिंग करने की आवश्यकता है?
लाकेश

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

वह कुछ क्या है?
लाकेश २esh

6

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

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