पायथन में SVM के लिए लैगरेंज गुणांक की गणना


10

मैं पायथन में एक पूर्ण एसवीएम कार्यान्वयन लिखने की कोशिश कर रहा हूं और मेरे पास कुछ मुद्दे हैं जो कि लैग्रेग गुणांकों की गणना कर रहे हैं।

पहले मुझे यह बताने की कोशिश करें कि मैं एल्गोरिथ्म से क्या समझता हूं यह सुनिश्चित करने के लिए कि मैं सही रास्ते पर हूं।

यदि x1,x2,...,xn एक डाटासेट है और yi{1,1} की कक्षा लेबल है xi , तो

i,yi(wTxi+b)1

इसलिए हमें बस एक अनुकूलन समस्या को हल करने की आवश्यकता है

w2

के अधीनyi(wTxi+b)1

Lagrange गुणांकों के संदर्भ में, यह , और और कम से कम:wbα=(α1,α2,...αn)00

L(α,w,b)=12w2αi(yi(wTx+b)1)

अब चूँकि और हम इसे साथ बाधाओं

Lw=0w=αiyixi
Lb=0yiαi=0
L(α,w,b)=Q(α)=αi12αiαjyiyjxiTxj
αi0 and αiyi=0

इसलिए मैं पायथन का उपयोग करके अनुकूलन समस्या को हल करने की कोशिश कर रहा हूं, और केवल मुफ्त पैकेज जो मुझे मिल सकता है उसे cvxopt कहा जाता है ।

मैं इसे हल करने के लिए कुछ मदद चाहूंगा, मुझे इसके बारे में कोई अच्छा उदाहरण नहीं मिल सकता है, और जब मैं सिद्धांत को समझता हूं, तो मुझे इसे कोड में अनुवाद करने में एक कठिन समय मिल रहा है (मुझे लगता है कि मैं इसके बाद से विपरीत की उम्मीद करूंगा। एक प्रोग्रामिंग पृष्ठभूमि से अधिक)।

ध्यान दें कि कुछ बिंदु पर मैं इसे कर्नेल का उपयोग करके हल करना चाहता हूं लेकिन मुझे यकीन नहीं है कि कोड में इसे हल करने के बारे में क्या निहितार्थ हैं।

L(α,w,b)=Q(α)=αi12αiαjyiyjK(xi,xj)

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

जवाबों:


4

मैंने पहले भी SVM को लागू करने के लिए cvxopt का इस्तेमाल किया है, हालांकि मैटलब में अजगर नहीं है। यह निश्चित रूप से आपके उद्देश्य की पूर्ति करेगा, क्या इसका कुशल पर्याप्त इस पर निर्भर करेगा कि आप इसके लिए क्या उपयोग कर रहे हैं। सबसे कुशल एसवीएम एक क्यूपी सॉल्वर पैकेज का उपयोग नहीं करते हैं, वे एसवीएम के लिए अद्वितीय कुछ अनुकूलन का लाभ उठाते हैं। कई लोग इसे हल करने के लिए एक एसएमओ शैली एल्गोरिथ्म का उपयोग करते हैं।

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

SVMLight एक और पैकेज है, वे एक अलग एल्गोरिथ्म का उपयोग करते हैं (संदर्भ के लिए उनकी साइट देखें)। यह ओपन सोर्स भी है और इसमें अजगर इंटरफेस है।


जानकारीपूर्ण उत्तर के लिए धन्यवाद (जो मुझे लगता है कि सुपरस्टार मेरा है), और आपका स्वागत है!
एरन अहमदिया

+1 दिलचस्प जवाब और मैंने आपके महान लिंक को देखना शुरू कर दिया है जो मुझे बहुत मदद कर रहे हैं!
चार्ल्स मेंग्यु

2

आपकी अनुकूलन समस्या का सामान्य रूप एक द्विघात कार्यक्रम है , भले ही आप कर्नेल चाल या रैखिक कर्नेल का उपयोग कर रहे हों । ऐसा लगता है कि cvxoptआप क्या करने की कोशिश कर रहे हैं क्या करने के लिए पर्याप्त होगा, लेकिन यहां पर अन्य pythonauts साथ भाग्य पड़ा है OpenOpt रूप में अच्छी तरह।


एरन, क्या आप जानते हैं कि इप्टॉप पायथन रैपर कभी तय हो गया है?
ज्यॉफ ऑक्सीबेरी

डेविड केचेसन के छात्रों में से एक ने इसे ओपनओप्ट के साथ काम किया (जो इसे क्वासी-न्यूटन एल्गोरिथ्म के साथ उपयोग कर सकता है), लेकिन ओएस एक्स पर ओपनऑप्ट स्टैक को प्राप्त करने में कुछ कठिनाइयों का सामना करना पड़ा है।
एरन अहमदिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.