सभी पहले, कर्नेल और SVMs कुछ पृष्ठभूमि ...
आप n
वैक्टर (किसी भी आयाम की), क्या करने की जरूरत है के लिए एक कर्नेल पूर्व गणना करने के लिए चाहते हैं, तो गिरी समारोह की गणना है उदाहरणों की प्रत्येक जोड़ी के बीच। कर्नेल फ़ंक्शन दो वैक्टर लेता है और स्केलर देता है, इसलिए आप स्केलर्स के nxn
मैट्रिक्स के रूप में प्रीकंप्यूटेड कर्नेल के बारे में सोच सकते हैं। इसे आमतौर पर कर्नेल मैट्रिक्स, या कभी-कभी ग्राम मैट्रिक्स कहा जाता है।
कई भिन्न कर्नलों रहे हैं, सरल रेखीय गिरी (यह भी डॉट उत्पाद के रूप में जाना जाता है):
sum(x_i * y_i) for i in [1..N] where (x_1,...,x_N) (y_1,..,y_N) are vectors
दूसरे, आपकी समस्या को जवाब देने के लिए कोशिश कर रहा है ...
Libsvm में precomputed कर्नेल के बारे में प्रलेखन वास्तव में बहुत अच्छा है ...
Assume the original training data has three four-feature instances
and testing data has one instance:
15 1:1 2:1 3:1 4:1
45 2:3 4:3
25 3:1
15 1:1 3:1
If the linear kernel is used, we have the following
new training/testing sets:
15 0:1 1:4 2:6 3:1
45 0:2 1:6 2:18 3:0
25 0:3 1:1 2:0 3:1
15 0:? 1:2 2:0 3:1
दूसरे उदाहरण में यहां प्रत्येक वेक्टर कर्नेल मैट्रिक्स में एक पंक्ति है। इंडेक्स शून्य पर मान आईडी मान है और यह सिर्फ अनुक्रमिक गिनती प्रतीत होता है। पहले वेक्टर के इंडेक्स 1 पर मान पहले उदाहरण से पहले वेक्टर के कर्नेल फ़ंक्शन का मान है (यानी (1x1)+(1x1)+(1x1)+(1x1) = 4
), दूसरा दूसरा वेक्टर के कर्नेल फ़ंक्शन का दूसरा है (यानी (1x3)+(1x3)=6
)। यह इस तरह के उदाहरण के लिए इस तरह से चलता है। आप देख सकते हैं कि कर्नेल मैट्रिक्स सममित है, जैसा कि यह होना चाहिए, क्योंकि के (एक्स, वाई) = के (वाई, एक्स)।
यह इंगित करने योग्य है कि वैक्टरों का पहला सेट एक स्पैर प्रारूप में प्रदर्शित होता है (यानी गायब मान शून्य हैं), लेकिन कर्नेल मैट्रिक्स स्पैस नहीं है और नहीं होना चाहिए। मुझे नहीं पता कि ऐसा क्यों है, यह सिर्फ एक libsvm चीज लगता है।
सबसे उपयोगी उत्तर! – JXITC