Bagaimana cara menjelaskan kernel secara intuitif?

98

Banyak pengklasifikasi pembelajaran mesin (mis. Mesin vektor dukungan) memungkinkan seseorang untuk menentukan kernel. Apa yang akan menjadi cara intuitif untuk menjelaskan apa itu kernel?

Satu aspek yang telah saya pikirkan adalah perbedaan antara kernel linear dan non-linear. Secara sederhana, saya dapat berbicara tentang 'fungsi keputusan linier' dan 'fungsi keputusan non-linear'. Namun, saya tidak yakin apakah memanggil kernel sebagai 'fungsi keputusan' adalah ide yang bagus.

Saran?

hashkey
sumber

Jawaban:

114

Kernel adalah cara menghitung titik produk dari dua vektor dan y dalam beberapa ruang fitur (mungkin sangat tinggi), yang mengapa fungsi kernel kadang-kadang disebut "produk titik umum".xy

Misalkan kita memiliki pemetaan yang membawa vektor kami di R n beberapa fitur ruang R m . Maka produk titik dari x dan y dalam ruang ini adalahφ( x ) T φ( y ). Kernel adalah fungsikyang sesuai dengan produk titik ini, yaituk( x , y )=φ( x ) T φ( y ).φ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

Mengapa ini berguna? Kernel memberikan cara untuk menghitung titik produk di beberapa ruang fitur tanpa mengetahui apa ruang ini dan apa yang .φ

Sebagai contoh, pertimbangkan kernel polinomial sederhana dengan x , yR 2 . Ini sepertinya tidak sesuai dengan fungsi pemetaan φ , itu hanya fungsi yang mengembalikan bilangan real. Dengan asumsi bahwa x = ( x 1 , x 2 ) dan y = ( y 1 , y 2 ) , mari perluas ekspresi ini:k(x,y)=(1+xTy)2x,yR2φx=(x1,x2)y=(y1,y2)

k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x12y12+x22y22+2x1y1+2x2y2+2x1x2y1y2

Perhatikan bahwa ini tidak lain adalah produk titik antara dua vektor dan(1,y 2 1 ,y 2 2 ,(1,x12,x22,2x1,2x2,2x1x2), danφ(x)=φ(x1,x2)=(1,x 2 1 ,x 2 2 ,(1,y12,y22,2y1,2y2,2y1y2). Jadi kernelk(x,y)=(1+ x Ty)2=φ(x)Tφ(y)menghitung produk titik dalam ruang 6 dimensi tanpa secara eksplisit mengunjungi ruang ini.φ(x)=φ(x1,x2)=(1,x12,x22,2x1,2x2,2x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)

k(x,y)=exp(γxy2)φ

Akhirnya, saya akan merekomendasikan kursus online "Belajar dari Data" oleh Profesor Yaser Abu-Mostafa sebagai pengantar yang baik untuk metode berbasis kernel. Secara khusus, kuliah "Mendukung Mesin Vektor" , "Metode Kernel" dan "Fungsi Dasar Radial" adalah tentang kernel.

Alexey Grigorev
sumber
2
Definisi tag saat ini: "Intuitif: pertanyaan yang mencari pemahaman statistik konseptual atau non-matematis." Tidak ada indikasi yang jelas apakah konseptual diperlakukan sebagai sinonim dari non-matematika.
rolando2
40

Cara berpikir yang sangat sederhana dan intuitif tentang kernel (setidaknya untuk SVM) adalah fungsi kesamaan. Diberikan dua objek, kernel menghasilkan beberapa skor kesamaan. Objek dapat berupa apa saja mulai dari dua bilangan bulat, dua vektor bernilai nyata, pohon apa pun asalkan fungsi kernel tahu cara membandingkannya.

Contoh yang paling sederhana adalah kernel linear, juga disebut dot-product. Diberikan dua vektor, kesamaannya adalah panjang proyeksi satu vektor pada vektor lainnya.

Contoh kernel lain yang menarik adalah kernel Gaussian. Diberikan dua vektor, kesamaan akan berkurang dengan jari-jari . Jarak antara dua objek adalah "reweighted" oleh parameter radius ini.σ

Keberhasilan belajar dengan kernel (sekali lagi, setidaknya untuk SVM), sangat bergantung pada pilihan kernel. Anda dapat melihat kernel sebagai representasi ringkas dari pengetahuan tentang masalah klasifikasi Anda. Sangat sering masalah khusus.

Saya tidak akan menyebut kernel sebagai fungsi keputusan karena kernel digunakan di dalam fungsi keputusan. Diberikan titik data untuk diklasifikasi, fungsi keputusan memanfaatkan kernel dengan membandingkan titik data itu dengan sejumlah vektor dukungan yang dibobot oleh parameter yang dipelajari . Vektor pendukung berada dalam domain titik data itu dan sepanjang parameter yang dipelajari ditemukan oleh algoritma pembelajaran.αα

Vladislavs Dovgalecs
sumber
Produk dan proyeksi dot tidak persis sama.
ttnphns
Dalam kasus SVM, saya percaya bahwa kernel adalah ukuran jarak di ruang yang berbeda. Ini sesuai dengan gagasan bahwa SVM menggeneralisasikan classifier vektor dukungan. Secara umum, kernel bisa lebih rumit.
aginensky
30

Contoh visual untuk membantu intuisi

Pertimbangkan dataset berikut di mana titik kuning dan biru jelas tidak dapat dipisahkan secara linear dalam dua dimensi.

masukkan deskripsi gambar di sini

Jika kita dapat menemukan ruang dimensi yang lebih tinggi di mana titik-titik ini terpisah secara linear , maka kita dapat melakukan hal berikut:

  • Memetakan fitur asli ke ruang transformator yang lebih tinggi (pemetaan fitur)
  • Lakukan SVM linier di ruang yang lebih tinggi ini
  • Dapatkan satu set bobot yang sesuai dengan hyperplane batas keputusan
  • Petakan hyperplane ini kembali ke ruang 2D asli untuk memperoleh batas keputusan nonlinier

Ada banyak ruang dimensi yang lebih tinggi di mana titik-titik ini terpisah secara linear. Ini salah satu contohnya

x1,x2:→z1,z2,z3
z1=2x1x2  z2=x12  z3=x22

Di sinilah trik Kernel berperan. Mengutip jawaban bagus di atas

Misalkan kita memiliki pemetaan yang membawa vektor kita di ke beberapa ruang fitur . Maka produk titik dan di ruang ini adalah . Kernel adalah fungsi yang sesuai dengan produk titik ini, yaituφ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

Jika kita dapat menemukan fungsi kernel yang setara dengan peta fitur di atas, maka kita dapat menyambungkan fungsi kernel dalam SVM linier dan melakukan perhitungan dengan sangat efisien.

Kernel polinomial

Ternyata fitur peta di atas sesuai dengan kernel polinomial terkenal : . Biarkan dan kita dapatkanK(x,x)=(xTx)dd=2x=(x1,x2)T

k((x1x2),(x1x2))=(x1x2+x2x2)2=2x1x1x2x2+(x1x1)2+(x2x2)2=(2x1x2 x12 x22) (2x1x2x12x22)

k((x1x2),(x1x2))=ϕ(x)Tϕ(x)

ϕ((x1x2))=(2x1x2x12x22)

Memvisualisasikan peta fitur dan garis batas yang dihasilkan

  • Plot sisi kiri menunjukkan titik-titik yang diplot dalam ruang yang ditransformasikan bersama-sama dengan bidang batas linear SVM
  • Plot sisi kanan menunjukkan hasil dalam ruang 2-D asli

masukkan deskripsi gambar di sini


Sumber

Xavier Bourret Sicotte
sumber
4

Sangat sederhana (tapi akurat) kernel adalah faktor penimbangan antara dua urutan data. Faktor penimbangan ini dapat menetapkan bobot lebih untuk satu " titik data " pada satu " titik waktu " daripada " titik data " lainnya, atau menetapkan bobot yang sama atau memberikan bobot lebih ke " titik data " lainnya dan seterusnya.

Dengan cara ini, korelasi ( produk titik ) dapat menetapkan lebih banyak "kepentingan" di beberapa titik daripada yang lain dan dengan demikian mengatasi non-linearitas (misalnya ruang non-datar ), informasi tambahan, perataan data , dan sebagainya.

Dengan cara lain kernel adalah cara untuk mengubah dimensi relatif (atau unit dimensi ) dari dua sekuens data untuk mengatasi hal-hal yang disebutkan di atas.

Dengan cara ketiga (terkait dengan dua sebelumnya), kernal adalah cara untuk memetakan atau memproyeksikan satu urutan data ke yang lain secara 1-ke-1 dengan mempertimbangkan informasi atau kriteria yang diberikan (misalnya ruang melengkung, data yang hilang, data pemesanan ulang dan sebagainya). Jadi misalnya kernel yang diberikan dapat meregangkan atau mengecilkan atau memotong atau menekuk satu urutan data agar sesuai atau memetakan 1-ke-1 ke yang lain.

Kernel dapat bertindak seperti Procrustes untuk " paling cocok "

Nikos M.
sumber
Saya pikir Anda mungkin berbicara tentang kernel dalam arti estimasi kepadatan kernel, bukan kernel Mercer positif-semidefinite yang digunakan dalam SVM dan metode terkait.
Dougal
@Dougal, dalam arti jawaban ini, kernel adalah fungsi penimbangan atau ukuran yang digunakan untuk mengkorelasikan data dengan cara tertentu atau untuk mengeksploitasi fitur data tertentu, sehingga metode kernel SVM tercakup juga
Nikos M.