Saya sedang mengerjakan proyek pembelajaran mesin di mana saya mencoba menyesuaikan kurva pada data. Sayangnya tanggal memiliki vektor fitur yang agak tinggi. Jadi, saya tidak bisa benar-benar memplotnya pada ruang 2D atau 3D untuk menebak bagaimana bentuk data itu.
Jadi, selain hit dan trial, apakah ada cara matematis untuk menemukan derajat polinomial yang paling cocok dengan data saya.
Maksud saya, saya tahu bahwa saya dapat melihat kesalahan kuadrat terkecil untuk setiap derajat dan kemudian memilih salah satu dengan kesalahan minimum, tetapi kemudian itu akan menjadi masalah optimisasi ganda karena loop pengoptimalan pertama akan terdiri dalam menemukan satu set bobot untuk kurva yang sesuai dengan data, sedangkan loop kedua akan digunakan untuk memeriksa derajat. Ada saran?
Jawaban:
Maaf jika ini terlalu mendasar, saya hanya ingin membuat jawaban ini seadil mungkin. Faktanya, Anda tidak dapat melakukan apa yang Anda gambarkan: polinomial terbaik dari derajat akan selalu cocok paling tidak sebaik polinomial terbaik dari derajat , karena himpunan polinomial derajat mencakup semua derajat polinomial (tetapkan ). Ketika Anda terus meningkatkan , pada titik tertentu Anda akan dapat menemukan polinomial yang sesuai dengan data dengan sempurna (yaitu dengan nol kesalahan).k + 1 k k + 1 k Sebuahk + 1= 0 k
Ini biasanya bukan solusi yang sangat menarik karena sulit membayangkan proses yang harus dijelaskan oleh misalnya polinomial jutaan derajat, dan hampir pasti bahwa model semacam ini akan lebih kompleks daripada yang diperlukan untuk menggambarkan data secara memadai. . Fenomena ini disebut overfitting , dan contoh yang baik adalah gambar Wikipedia ini. Data jelas dekat dengan linear, tetapi dimungkinkan (tetapi tidak diinginkan) untuk mendapatkan kesalahan yang lebih rendah dengan model yang lebih kompleks.
Secara umum, tujuannya adalah untuk meminimalkan kesalahan yang akan terjadi pada data baru dari model dasar yang sama, bukan pada set data saat ini. Seringkali tidak mungkin atau praktis untuk mendapatkan lebih banyak data, jadi biasanya seseorang akan menggunakan beberapa bentuk cross-validasi untuk menemukan model yang menggeneralisasi yang terbaik untuk data yang tidak terlihat. Ada banyak bentuk validasi silang, dan Anda dapat membacanya di artikel Wikipedia atau dalam banyak jawaban di CrossValidated (ha!). Tetapi pada dasarnya mereka semua dapat direduksi menjadi: cocok dengan model pada beberapa data Anda dan menggunakan ini untuk memprediksi nilai untuk sisa data Anda. Lakukan ini berulang kali dan pilih model (dalam hal ini, tingkat polinomial) yang memberi Anda kinerja terbaik rata-rata.
sumber
Salah satu cara untuk memecahkan masalah "pencarian" ini adalah dengan memulai dengan beberapa algoritma meta-heuristik seperti Genetic Programming dan begitu program mampu membuat fungsi "dekat" (kebugaran yang layak), mulailah dengan algoritma regresi pembelajaran mesin tradisional. derajat diidentifikasi oleh GP. Anda masih perlu melakukan validasi silang untuk menyesuaikan model polinomial n-degree Anda. Beberapa hal yang perlu Anda pastikan saat menjalankan GP adalah bahwa tidak untuk menyediakan fungsi yang seharusnya tidak digunakan lagi GP memiliki kecenderungan untuk membuat model yang kompleks meniru pohon keputusan + linear + kuadrat dll.
sumber