कर्नेल अनुमोदन के लिए Nystroem विधि


12

मैं निम्न-श्रेणी कर्नेल aproximation के लिए Nyström विधि के बारे में पढ़ रहा हूं। इस पद्धति को स्किकिट-लर्न [1] में लागू किया गया है, जो कि डेटा सैंपल को कर्नेल फीचर मैपिंग के निम्न-श्रेणी के सन्निकटन के रूप में पेश करता है।

मेरे ज्ञान के सर्वश्रेष्ठ के लिए, एक प्रशिक्षण सेट और कर्नेल फ़ंक्शन दिया गया, यह SVD को लागू करके कर्नेल मैट्रिक्स एक निम्न-श्रेणी सन्निकटन उत्पन्न करता है। और ।{xi}i=1nn×nKWC

K=[WK21TK21K22] C=[WK21] ,W∈Rl×l

हालाँकि, मुझे समझ में नहीं आता है कि कर्नेल मैट्रिक्स के निम्न-श्रेणी के सन्निकटन का उपयोग सन्निकट कर्नेल अंतरिक्ष में नए नमूनों को प्रोजेक्ट करने के लिए कैसे किया जा सकता है । मैंने जो कागजात पाए हैं (उदाहरण के लिए [२]) बहुत मदद के नहीं हैं, क्योंकि वे बहुत कम हैं।

इसके अलावा, मैं इस पद्धति की कम्प्यूटेशनल जटिलता के बारे में उत्सुक हूं, दोनों प्रशिक्षण और परीक्षण चरणों में।

[१] http://scikit-learn.org/stable/modules/kernel_approximation.html#nystroem-kernel-approx

[२] http://www.jmlr.org/papers/volume13/kumar12a/kumar12a.pdf

जवाबों:


15

आइए, Nyström सन्निकटन को इस तरह से प्राप्त करें कि आपके प्रश्नों के उत्तर स्पष्ट हो जाएं।

Nyström में प्रमुख धारणा यह है कि कर्नेल फ़ंक्शन रैंक । (वास्तव में हम मानते हैं कि यह लगभग रैंक के , लेकिन सादगी देना सिर्फ बहाना है के लिए यह वास्तव में रैंक अब के लिए।) इसका मतलब है कि किसी भी गिरी मैट्रिक्स ज्यादा से ज्यादा पद के लिए जा रहा है , और विशेष रूप से है रैंक । इसलिए नॉनज़रो ईजेनवेल्यूज़ हैं, और हम के यूजेंडेकंपोजिशन को रूप में लिख सकते हैंmmmm

K=[k(x1,x1)…k(x1,xn)⋮⋱⋮k(xn,x1)…k(xn,xn)],
mmK
K=UΛUT
nigenvectors के साथ में संग्रहित , आकार , और eigenvalues ​​में व्यवस्था की गई , एक विकर्ण मैट्रिक्स।Un×mΛm×m

तो, चलिए तत्वों को लेते हैं, आमतौर पर समान रूप से यादृच्छिक रूप से लेकिन संभवतः अन्य योजनाओं के अनुसार - इस सरलीकृत संस्करण में जो कुछ भी मायने रखता है वह है कि पूर्ण रैंक का हो। एक बार जब हम ऐसा कर लेते हैं, तो केवल उन बिंदुओं को रीलैब करते हैं ताकि हम ब्लॉकों में कर्नेल मैट्रिक्स के साथ समाप्त हो जाएं: जहां हम (जो ) और ( ) में प्रत्येक प्रविष्टि का मूल्यांकन करते हैं, लेकिन में किसी भी प्रविष्टि का मूल्यांकन नहीं करना चाहते हैं ।mK11

K=[K11K21TK21K22],
K11m×mK21(n−m)×mK22

अब, हम इस ब्लॉक संरचना के अनुसार भी ईगेंडेकोम्पोजिशन को विभाजित कर सकते हैं: start जहां है और है । लेकिन ध्यान दें कि अब हमारे पास । इसलिए हम ज्ञात मैट्रिक्स को eigendecomposing करके और पा सकते हैं ।

K=UΛUT=[U1U2]Λ[U1U2]T=[U1ΛU1TU1ΛU2TU2ΛU1TU2ΛU2T],
U1m×mU2(n−m)×mK11=U1ΛU1TU1ΛK11

हम यह भी जानते हैं कि । यहां, हम इस समीकरण में सब कुछ जानते हैं। को छोड़कर , इसलिए हम इस बात का हल सकते हैं कि कौन-से eigenvalues ​​का तात्पर्य है: दोनों पक्षों को प्राप्त करने के लिए दोनों तरफ से गुणा करें अब हमारे पास : का मूल्यांकन करने के लिए आवश्यक सब कुछ हैK21=U2ΛU1TU2(ΛU1T)−1=U1Λ−1

U2=K21U1Λ−1.
K22
K22=U2ΛU2T=(K21U1Λ−1)Λ(K21U1Λ−1)T=K21U1(Λ−1Λ)Λ−1U1TK21T=K21U1Λ−1U1TK21T(*)=K21K11−1K21T(**)=(K21K11−12)(K21K11−12)T.

(*) में, हमें Nyström एम्बेडिंग का एक संस्करण मिला है जिसे आपने परिभाषा के रूप में देखा होगा। यह हमें प्रभावी कर्नेल मान बताता है, जिसे हम ब्लॉक लिए लागू कर रहे हैं ।K22

(**) में, हम देखते हैं कि सुविधा मैट्रिक्स , जो आकार , इन बाधित कर्नेल मानों से मेल खाती है। यदि हम अंक के लिए करते हैं , तो हमारे पास -dimensional सुविधाएँ हम बस जल्दी से सत्यापित कर सकते हैं कि सही कर्नेल मैट्रिक्स से मेल खाती है: K21K11−12(n−m)×mK1112mm

Φ=[K1112K21K11−12].
Φ
ΦΦT=[K1112K21K11−12][K1112K21K11−12]T=[K1112K1112K1112K11−12K21TK21K11−12K1112K21K11−12K11−12K21T]=[K11K21TK21K21K11−1K21T]=K.

इसलिए, हमें केवल अपने नियमित शिक्षण मॉडल को -dimensional features साथ प्रशिक्षित करना होगा । यह वास्तव में साथ सीखने की समस्या के कर्नेलाइज़्ड संस्करण के रूप में (मान्यताओं के तहत) है ।mΦK

अब, के लिए एक व्यक्तिगत डेटा बिंदु , में सुविधाओं पत्र व्यवहार करने के विभाजन 2 में एक बिंदु लिए , वेक्टर केवल की प्रासंगिक पंक्ति है , ताकि स्टैकिंग ये हमें - इसलिए विभाजन में बिंदुओं के लिए सहमत होता है। यह विभाजन 1 में भी काम करता है: वहाँ, वेक्टर की एक पंक्ति है , इसलिए उन्हें स्टैक करने से , फिर से साथ सहमत हो जाता हैxΦ

ϕ(x)=[k(x,x1)…k(x,xm)]K11−12.
x[k(x,x1)…k(x,xm)]K21K21K11−12ϕ(x)K11K11K11−12=K1112Φ। तो ... यह अभी भी एक अनदेखी-पर-प्रशिक्षण-समय परीक्षण बिंदु । आप बस एक ही काम करते हैं: क्योंकि हमने माना कि कर्नेल रैंक , मैट्रिक्स भी रैंक , और का पुनर्निर्माण अभी भी ठीक उसी तर्क द्वारा सटीक है, जैसा कि ।xnew
Φtest=Ktest,1K11−12.
m[KtrainKtrain,testKtest,trainKtest]mKtestK22


इन सबसे ऊपर, हम मान लिया है कि गिरी मैट्रिक्स था वास्तव में रैंक । यह आमतौर पर मामला नहीं है; एक गाऊसी कर्नेल के लिए, उदाहरण के लिए, है हमेशा रैंक , लेकिन बाद eigenvalues आम तौर पर बहुत जल्दी छोड़ तो यह होने वाला है के करीब रैंक के एक मैट्रिक्स है, और के बारे में हमारी पुनर्निर्माण या सही मानों के करीब होने जा रहे हैं लेकिन वास्तव में समान नहीं हैं। वे बेहतर पुनर्निर्माण करीब की eigenspace हो जाएगा की है कि हो जाता हैKmKnmK21Ktest,1K11Kकुल मिलाकर, यही कारण है कि सही अंक चुनना अभ्यास में महत्वपूर्ण है।m

यह भी ध्यान दें कि यदि में कोई भी शून्य ईजेंवल है, तो आप व्युत्क्रम को pseudoinverses से बदल सकते हैं और सब कुछ अभी भी काम करता है; आप अभी साथ पुनर्निर्माण में को प्रतिस्थापित करते हैं ।K11K21K21K11†K11

यदि आप चाहें, तो आप eigendecomposition के बजाय SVD का उपयोग कर सकते हैं; चूंकि psd है, इसलिए वे एक ही चीज़ हैं, लेकिन कर्नेल मैट्रिक्स में और थोड़ी सी भी संख्यात्मक त्रुटि के लिए SVD थोड़ी अधिक मजबूत हो सकती है, इसलिए यह डरावना-सीखता है। स्किकिट-लर्न का वास्तविक कार्यान्वयन ऐसा करता है, हालांकि यह बजाय व्युत्क्रम में का उपयोग करता है।Kmax(λi,10−12)


1
जब पॉजिटिव सेमीफाइंड हो जाता है, तो eigendecomposition एसवीडी के साथ मेल खाता है। scikit-learn, क्योंकि संख्यात्मक त्रुटि के कारण थोड़ा गैर-psd हो सकता है, इसके बजाय गणना करता है , और , इसलिए कि की सुविधाएँ । यह मूल रूप से एक ही बात है। AUΛUTAUΣVTA−12=VΣ−12VTAAVΣ−12VT=UΣVTVΣ−12VT=UΣ12VT=A12
— डगल

1
वूप्स, क्षमा करें, हाँ, वे । यह सब वास्तव में बात के बाद से नहीं है , लेकिन क्योंकि वे के लिए पक्षांतरित सुविधाओं करना के रूप में अंत । UΣ−12VT=K−12U≈VK11UΣVTVΣ−12UT=UΣ12UT
— डगल

1
एक विकर्ण मैट्रिक्स को एक शक्ति में उठाना प्रत्येक तत्व को एक शक्ति को बढ़ाने के समान है, और । संख्यात्मक प्रसारण संकेतन में, एक वेक्टर द्वारा एलिमेंट वाइज गुणा एक विकर्ण मैट्रिक्स द्वारा सही-गुणा करना है। इसके अलावा, वह कोड का उपयोग करता है जिसका अर्थ है कि मैं को बुला रहा था । x−12=1/xVVT
— डगल

1
वूप्स, क्षमा करें, यह केवल तक होना चाहिए (फिर से लेबल किए गए आदेश में, ताकि वे Nyström आधार अंक हों)। ठीक कर देंगे। xm
— डगल २

1
x एक डेटा बिंदु है, इसका आयाम यहां निर्दिष्ट नहीं है। में हो सकता है , या यह एक स्ट्रिंग या कुछ और हो सकता है; सिर्फ इतना कहना है कि , ताकि । तब बस ढेरों लिए अलग इनपुट। xRdx∈Xk:X×X→Rϕ:X→Rmk(x,xi)m
— डगल २
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.