5

पर एक एफ़िन शब्द जोड़ना मैं वर्तमान में एक समस्या पर काम कर रहा हूं जहां मुझे या तो एल 2-नियमितीकृत लॉजिस्टिक रिग्रेशन या एल 2-रेग रैखिक एसवीएम समस्या हल करना है, जहां मेरे पास एक अतिरिक्त एफ़िन शब्द है।रैखिक एसवीएम/लॉजिस्टिक रिग्रेशन ऑब्जेक्ट फ़ंक्शन

इसलिए उदाहरण के लिए मेरी समस्या है:

min_ w {C*sum_i max(1-w*x_i*y_i,0) + 0.5*||w||^2_2 + w * v } 

जहां v एक निरंतर वेक्टर है।

बेशक

इस एक उत्तल समस्या है और सामान्य तरीकों से हल किया जा सकता है, लेकिन मैं इस प्रकार के कई बड़े समस्याओं को हल करने के लिए है, तो मैं बहुत ज्यादा एक मानक पुस्तकालय जैसे liblinear उपयोग करना चाहते हैं।

मेरा सवाल यह है कि डेटा एक्स, लेबल वाई, या वजन घटाने वाला सी (शायद प्रत्येक उदाहरण के लिए एक अलग सी_आई में) को बदलने का कोई तरीका है, जैसे कि यह समस्या एक मानक हिंग- नुकसान एसवीएम या लॉजिस्टिक रिग्रेशन समस्या?

उत्तर

5

मैं इसे किसी ऐसे चीज़ में बदलने का तरीका नहीं सोच सकता जिसे liblinear जैसी किसी चीज़ द्वारा संसाधित किया जा सके। हालांकि, आप विमान अनुकूलन पुस्तकालयों को काटने के सामान्य उद्देश्य में से एक के साथ आसानी से इस अनुकूलन समस्या को हल कर सकते हैं। आपको बस इतना करना है कि सबग्रेडेंट के तत्व की गणना करने के लिए कोड लिखें (जो कि आपके मामले में केवल W + v-C sum_i x_i y_i है) और उद्देश्य का मान है। फिर एक काटने की विमान दिनचर्या इष्टतम डब्ल्यू मिल सकती है।

Shogun में एक सीपीए अनुकूलक और dlib में एक भी है। मैंने शोगुन के संस्करण का उपयोग नहीं किया है, लेकिन मैंने कई समस्याओं के लिए डीएलआईबी में इस्तेमाल किया है (मैं डीएलआईबी का लेखक भी हूं)।

0

यदि आपका ऑफ-द-शेल्फ प्रशिक्षण एल्गोरिथ्म पूर्वाग्रह को आप की सुविधा देता है काज हानि या प्रत्येक डेटा बिंदु के लिए रसद प्रतिगमन यह संभव है। ऐसे।

पिछले दो शर्तों पर वर्ग को पूरा करें:

0.5 ||w||^2 + w'v 
= 0.5 ||w+v/2||^2 - v'v/2 

तो चर

u = w+v/2 

आपका अनुकूलन के परिवर्तन का परिचय तो

min_u C*sum_i max(1-(u-v/2)*x_i*y_i,0) + 0.5*||u||^2_2 

के बराबर है जो, b_i साथ = 1 + v'x_i * y_i/2,

के बराबर है 0
min_u C*sum_i max(b_i - u*x_i*y_i ,0) + 0.5*||u||^2_2 

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

लगभग हर पैकेज एक ही तरीके से b_i को समायोजित करेगा। उदाहरण के लिए, ऊपर

min_u C*sum_i b_i max(1 - u*x_i*y_i/b_i ,0) + 0.5*||u||^2_2 

के बराबर है (यह मानते हुए b_i> 0) तो अपने पैकेज आप प्रत्येक बिंदु को अलग ढंग से वजन की अनुमति देता है, तो आप इसके बाद के संस्करण समस्या को हल कर सकते हैं।

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