Saat menggunakan SVM, mengapa saya perlu mengukur fitur?

9

Menurut dokumentasi objek StandardScaler di scikit-learn:

Misalnya banyak elemen yang digunakan dalam fungsi objektif dari algoritma pembelajaran (seperti kernel RBF dari Support Vector Machines atau L1 dan L2 regularizer model linier) mengasumsikan bahwa semua fitur berpusat di sekitar 0 dan memiliki varian dalam urutan yang sama. Jika suatu fitur memiliki varians yang urutan besarnya lebih besar dari yang lain, itu mungkin mendominasi fungsi objektif dan membuat estimator tidak dapat belajar dari fitur lain dengan benar seperti yang diharapkan.

Saya harus mengukur fitur saya sebelum klasifikasi. Apakah ada cara mudah untuk menunjukkan mengapa saya harus melakukan ini? Referensi ke artikel ilmiah akan lebih baik. Saya sudah menemukan satu tetapi mungkin ada banyak lainnya.

pemalas
sumber

Jawaban:

16

κ(u,v)=exp(uv2)γ=1

Diberikan 3 vektor fitur:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

lalu , yaitu seharusnya lebih mirip dengan kemudian dengan .κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Perbedaan relatif antara dan: x1

x2[0.1,0,0],x3[0.05,10,10].

Jadi tanpa penskalaan, kami menyimpulkan bahwa lebih mirip dengan daripada dengan , meskipun perbedaan relatif per fitur antara dan jauh lebih besar daripada dan .x1x3x2x1x3x1x2

Dengan kata lain, jika Anda tidak mengatur skala semua fitur ke rentang yang sebanding, fitur dengan rentang terbesar akan sepenuhnya mendominasi dalam perhitungan matriks kernel.

Anda dapat menemukan contoh-contoh sederhana untuk menggambarkan hal ini dalam makalah berikut: Panduan Praktis untuk Mendukung Klasifikasi Vektor (Bagian 2.2).

Marc Claesen
sumber
Anda mungkin juga ingin membahas regularisasi: skala bobot tergantung pada skala input ...
seanv507
Efek regularisasi adalah bahwa skala yang berbeda menyiratkan yang berbeda optimal , yang agak ortogonal untuk masalah khusus ini. C
Marc Claesen
2
Tapi memang bisa jadi kedekatan sepanjang satu dimensi lebih penting. Jadi tujuannya tidak benar-benar memiliki varian yang sama di semua fitur, tetapi untuk menskalanya sedemikian rupa sehingga jarak sepanjang setiap fitur memiliki arti yang sama pentingnya dengan tugas tersebut.
isarandi
@Marc Claesen, jika variabel Anda berbeda urutan besarnya, maka bobot Anda juga akan berbeda urutan besarnya, dan norma l2 akan fokus pada input yang memiliki varian kecil dan juga bobot besar. Dengan kata lain, pengaturan norma berat badan memastikan bahwa input 'kecil' memiliki efek kecil. Ini hanya masuk akal jika Anda telah menstandarkan 'kecil' (melintasi input Anda) misalnya dengan menormalkan variabel Anda
seanv507
1
@ seanv507 yang hanya berlaku untuk SVM linear.
Marc Claesen
0

Tergantung pada kernel apa yang Anda gunakan. Sejauh ini yang paling umum digunakan (terlepas dari linear) adalah kernel gaussian, yang memiliki bentuk

f=exp(||x1x2||22σ2)

SVM mengambil fungsi ini dan menggunakannya untuk membandingkan kesamaan suatu titik ( ) dengan setiap titik lain dalam pelatihan yang ditetapkan dengan menjumlahkan perbedaannya sebagai:x1

(x1l1)2+(x2l2)2...+(xnln)2

di mana adalah contoh Anda dan nilai-nilai adalah landmark.xl

Jika fitur berkisar 0 - 50.000 sedangkan fitur berkisar 0 - 0,01, Anda dapat melihat bahwa akan mendominasi jumlah itu sementara hampir tidak memiliki dampak. Untuk alasan ini, perlu mengukur fitur sebelum menerapkan kernal.x1x2x1x2

Jika Anda ingin mempelajari lebih lanjut, saya sarankan modul 12 (Mendukung Mesin Vektor) dari kursus online Stanford dalam pembelajaran mesin di Coursera (gratis dan tersedia kapan saja): https://www.coursera.org/course/ml

ralph346526
sumber