Ada apa dengan Machine Learning dalam praktik nyata?

11

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:

  1. Bagian terpenting dari pembelajaran mesin dalam praktiknya adalah rekayasa fitur , yaitu, mengingat data, mengetahui representasi fitur yang lebih baik.

  2. 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.

loganecolss
sumber
1
Saya tidak berpikir saya bisa menjawab pertanyaan Anda secara keseluruhan, tetapi saya ingin meyakinkan Anda bahwa ada banyak masalah di mana algoritma / alat tidak memuaskan selain kualitas fitur yang buruk (dalam pengalaman saya ilmu-ilmu sosial marak dengan kedua situasi). Saya tidak berpikir bahwa itu satu-satunya masalah Anda, tetapi Anda tampaknya tidak nyaman dengan kemudahan proyek Anda sejauh ini.
1
@ Matius, ya, saya baru saja tersesat tanpa tahu harus mulai dari mana ketika saya menghadapi satu masalah nyata, haruskah saya menganalisis data untuk mengetahui sifatnya sehingga saya dapat mengekstrak fitur yang berguna atau hanya mengambil algoritma pembelajaran dan menjalankannya?
alpukat
Saya tidak akan naik pesawat yang terbang dengan benar 97 kali dari 100.
lcrmorin

Jawaban:

12

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:

  1. Sangat mudah untuk mencapai baseline kinerja yang naif menggunakan metode out-of-the-box dan preprocessing yang baik. Anda harus selalu melakukan ini, sehingga Anda tahu di mana garis dasar berada dan apakah tingkat kinerja ini cukup baik untuk kebutuhan Anda. Namun berhati-hatilah, sering metode ML out-of-the-box 'rapuh' yaitu, sangat sensitif terhadap pra-pemrosesan. Setelah Anda melatih semua metode out-of-the-box, hampir selalu merupakan ide bagus untuk mencoba mengantongi mereka.
  2. Masalah sulit memerlukan pengetahuan khusus domain atau lebih banyak data atau keduanya untuk dipecahkan. Rekayasa fitur berarti menggunakan pengetahuan khusus domain untuk membantu algoritma ML. Namun, jika Anda memiliki cukup data, algoritme (atau pendekatan) yang dapat memanfaatkan data tersebut untuk mempelajari fitur-fitur kompleks, dan seorang ahli yang menerapkan algoritme ini maka Anda terkadang dapat melepaskan pengetahuan ini (misalnya tantangan Kaggle Merck ). Juga, terkadang pakar domain salah tentang fitur yang baik; jadi lebih banyak data dan keahlian ML selalu membantu.
  3. Pertimbangkan tingkat kesalahan bukan akurasi. Metode ML dengan akurasi 99% membuat setengah kesalahan yang satu dengan akurasi 98%; terkadang ini penting.
qdjm
sumber
2
+1, terima kasih banyak. Ketika saya membaca jawaban Anda, jika saya tidak memiliki pengetahuan khusus domain untuk melakukan rekayasa fitur, maka saya harus fokus pada menciptakan metode yang baik untuk melakukan pembelajaran fitur menggunakan data yang diberikan, dan mencoba algoritma pembelajaran yang berbeda.
alpukat
@loganecolss Atau Anda juga bisa membaca apa yang dilakukan orang lain pada data yang sama atau berbicara dengan pakar domain.
qdjm
7

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.

Donbeo
sumber
n<<p