Saya seorang pendatang baru di pembelajaran Mesin (juga beberapa statistik), telah belajar pengetahuan (algoritma pembelajaran yang diawasi / tidak diawasi, metode optimasi yang relevan, regularisasi, beberapa filosofi (seperti trade-off bias-variance?)) Untuk sementara waktu. Saya tahu bahwa tanpa latihan nyata, saya tidak akan mendapatkan pemahaman yang mendalam tentang hal-hal pembelajaran mesin itu.
Jadi saya mulai dengan beberapa masalah klasifikasi dengan data nyata, katakanlah klasifikasi digit tulisan tangan (MNIST). Yang mengejutkan saya, tanpa pembelajaran fitur / rekayasa , akurasi mencapai 0,97 menggunakan random-forest classifier dengan nilai piksel mentah sebagai input. Saya juga mencoba algoritma pembelajaran lainnya, seperti SVM, LR dengan parameter yang sedang disetel.
Lalu saya tersesat, apakah itu terlalu mudah atau saya kehilangan sesuatu di sini? Cukup ambil algoritma pembelajaran dari toolkit dan sesuaikan beberapa parameter?
Jika itu semua tentang pembelajaran mesin dalam praktiknya, maka saya akan kehilangan minat dalam bidang ini. Saya berpikir dan membaca beberapa blog selama beberapa hari, dan saya sampai pada beberapa kesimpulan:
Bagian terpenting dari pembelajaran mesin dalam praktiknya adalah rekayasa fitur , yaitu, mengingat data, mengetahui representasi fitur yang lebih baik.
Algoritma pembelajaran mana yang digunakan juga penting, juga penyetelan parameter, tetapi pilihan terakhir lebih pada eksperimen.
Saya tidak yakin saya memahaminya dengan benar, berharap ada yang bisa memperbaiki saya dan memberi saya beberapa saran tentang pembelajaran mesin dalam prakteknya.
sumber
Jawaban:
Pembelajaran mesin (ML) dalam praktik tergantung pada apa tujuan melakukan ML. Dalam beberapa situasi, pra-pemrosesan yang solid dan menerapkan serangkaian metode ML out-of-the-box mungkin cukup baik. Namun, bahkan dalam situasi ini, penting untuk memahami bagaimana metode ini bekerja agar dapat memecahkan masalah ketika terjadi kesalahan. Namun, ML dalam praktiknya bisa lebih dari ini, dan MNIST adalah contoh bagus mengapa.
Sangat mudah untuk mendapatkan kinerja 'baik' pada dataset MNIST. Misalnya, menurut situs web Yann Le Cun tentang kinerja MNIST , tetangga terdekat K (K-NN) dengan metrik jarak Euclidean (L2) juga memiliki tingkat kesalahan 3%, sama dengan acak out-of-the-box Anda hutan. L2 K-NN adalah sesederhana algoritma ML. Di sisi lain, tembakan terbaik pertama Yann, Yoshua, Leon & Patrick, pada dataset ini, LeNet-4, memiliki tingkat kesalahan 0,7%, 0,7% kurang dari seperempat 3%, jadi jika Anda memasukkan sistem ini ke dalam berlatih membaca angka tulisan tangan, algoritma naif membutuhkan upaya manusia empat kali lebih banyak untuk memperbaiki kesalahannya.
Jaringan saraf convolutional yang digunakan Yann dan rekannya cocok dengan tugas tersebut, tetapi saya tidak akan menyebut ini 'rekayasa fitur', sebanyak berusaha untuk memahami data dan menyandikan pemahaman itu ke dalam algoritma pembelajaran.
Jadi, apa pelajarannya:
sumber
Saya berpikir bahwa contoh yang Anda temukan di blog atau situs web adalah contoh di mana diketahui bahwa metode umum berfungsi dengan baik (bahkan jika, tentu saja, mereka dapat ditingkatkan).
Spesialisasi saya dalam rekayasa fitur dan saya dapat memberi tahu Anda bahwa sering kali algoritma standar tidak berfungsi dengan baik. (Saya tidak memiliki pengetahuan tentang bidang ini tetapi seringkali saya bekerja dengan orang-orang yang memilikinya.).
Di sini ada masalah nyata di mana saya bekerja selama 6 bulan: Diberikan matriks X dengan 100 sampel dan 10.000 variabel yang mewakili nilai genetik pasien dan output y ukuran 100 x 1 yang mewakili kepadatan tulang.
Bisakah Anda memberi tahu saya gen mana yang memengaruhi kepadatan tulang?
Sekarang saya sedang mengerjakan masalah lain. Saya memiliki dataset produksi pabrikan dengan 2000 sampel dan 12000 variabel. Bos saya ingin mengekstrak dari dataset ini tidak lebih dari 30 variabel dengan cara yang tidak diawasi.
Saya telah mencoba beberapa algoritma tetapi saya tidak dapat memilih kurang dari 600 variabel karena ini sangat sangat berkorelasi di antara mereka. (Saya masih mengerjakan ini ...)
Pemikiran penting lain yang perlu dipertimbangkan adalah kecepatan kinerja berbagai algoritma. Dalam banyak situasi Anda tidak bisa menunggu 20 menit menunggu hasilnya. Misalnya Anda perlu tahu kapan harus menggunakan NIPALS dan kapan harus menggunakan SVD untuk menghitung PCA.
Semoga ini bisa memberi Anda gambaran tentang masalah yang umum dalam ml.
sumber