Pembelajaran mendalam vs peningkatan gradien: Kapan menggunakan apa?

30

Saya memiliki masalah data besar dengan dataset besar (misalnya 50 juta baris dan 200 kolom). Dataset terdiri dari sekitar 100 kolom numerik dan 100 kolom kategorikal dan kolom respons yang mewakili masalah kelas biner. Kardinalitas masing-masing kolom kategorikal kurang dari 50.

Saya ingin tahu apriori apakah saya harus menggunakan metode pembelajaran yang mendalam atau metode berbasis pohon (misalnya meningkatkan gradien, adaboost, atau hutan acak). Apakah ada beberapa analisis data eksplorasi atau beberapa teknik lain yang dapat membantu saya memutuskan satu metode daripada yang lain?

Nitesh
sumber
2
Saya pikir kecuali Anda memiliki intuisi yang bagus tentang properti data, Anda akhirnya menjelajahi kedua opsi (mungkin hanya 500.000 baris) dan melakukan validasi silang. Tetapi mungkin ada visualisasi atau analisis lain yang dapat membantu Anda mendapatkan intuisi itu.
Neil Slater
1
Saya sebenarnya telah merencanakan untuk melakukan perbandingan model besar untuk penelitian saya sendiri tentang data nyata minggu ini. Saya akan membersihkan hasilnya sedikit dan mempostingnya di sini. Juga setidaknya satu siswa CS telah mempelajari pertanyaan: academia.edu/3526056/...
shadowtalker
1
@NeilSlater Id ingin melihat jawaban yang membahas intuisi apa yang mungkin / bisa / seharusnya
shadowtalker
1
Saya masih belum memiliki reputasi yang cukup untuk memberikan komentar singkat tentang pertanyaan awal Anda dan ini sebenarnya bukan jawaban. Bagaimanapun, saya ingin mengatakan bahwa saya pikir makalah ini cukup relevan dengan masalah ini: Fernández-Delgado, M., Cernadas, E., Barro, S., & Amorim, D. (2014). Apakah kita membutuhkan ratusan pengklasifikasi untuk menyelesaikan masalah klasifikasi dunia nyata? Jurnal Penelitian Pembelajaran Mesin, 15, 3133-3181. Diperoleh dari dl.acm.org/citation.cfm?id=2697065
José María Mateos
Apakah ada beberapa analisis data eksplorasi atau beberapa teknik lain yang dapat membantu saya memutuskan satu metode di atas yang lain? Dalam kasus umum no, theorem 'no free lunch' membuktikan ini. Tetapi ada heuristik yang dapat memandu Anda ke arah yang benar, misalnya scikit-learn.org/stable/tutorial/machine_learning_map/…
Simon

Jawaban:

32

Mengapa membatasi diri Anda pada dua pendekatan itu? Karena mereka keren? Saya akan selalu memulai dengan classifier linear sederhana \ regressor. Jadi dalam hal ini Linear SVM atau Regresi Logistik, lebih disukai dengan implementasi algoritma yang dapat mengambil keuntungan dari sparsity karena ukuran data. Butuh waktu lama untuk menjalankan algoritma DL pada dataset itu, dan saya biasanya hanya akan mencoba belajar mendalam tentang masalah spesialis di mana ada beberapa struktur hirarkis dalam data, seperti gambar atau teks. Dibutuhkan banyak hal untuk masalah pembelajaran yang lebih sederhana, dan membutuhkan banyak waktu dan keahlian untuk belajar dan juga algoritma DL sangat lambat untuk dilatih. Selain itu, hanya karena Anda memiliki 50 juta baris, tidak berarti Anda harus menggunakan seluruh dataset untuk mendapatkan hasil yang baik. Tergantung pada data, Anda mungkin mendapatkan hasil yang baik dengan sampel beberapa ratus baris atau beberapa juta. Saya akan mulai dengan sederhana, dengan sampel kecil dan classifier linier, dan menjadi lebih rumit dari sana jika hasilnya tidak memuaskan. Setidaknya dengan begitu Anda akan mendapatkan garis dasar. Kami sering menemukan model linier sederhana untuk melakukan model yang lebih canggih di sebagian besar tugas, jadi Anda ingin selalu memulai dari sana.

Simon
sumber
4
+1 untuk memulai dengan model sederhana dan sub-sampling
Matt
Saya setuju dengan menggunakan svm untuk data yang jarang tetapi jangan Anda berpikir bahwa svm akan membutuhkan banyak waktu untuk melatih dataset dimensi yang begitu besar!
blitu12345
Tidak, terutama tidak jika jarang dan menggunakan kernel linier. Tetapi mereka dapat memiliki masalah dengan sejumlah besar baris. Akan jauh lebih cepat daripada model DL. Tetapi perhatikan bahwa saya juga merekomendasikan regresi logistik.
Simon
Poin utama saya adalah memulai dengan model linier sederhana, dan bahkan tidak menggunakan dataset lengkap, karena tidak mungkin Anda membutuhkan seluruh dataset untuk mendapatkan kinerja yang baik. Saya ragu ada banyak perbedaan dalam akurasi antara menggunakan katakanlah baris 100rb dan beberapa juta.
Simon
+1 untuk mencoba pembelajaran mendalam tentang masalah spesialis di mana ada beberapa struktur hierarkis dalam data
eric2323223
4

Selain jawaban lain (dan ada beberapa tautan bagus di komentar) itu tergantung pada apa masalahnya atau jenis pertanyaan apa yang ingin Anda jawab. Karena saya hanya dapat menyarankan berdasarkan pengalaman saya sendiri, maka dalam kasus tugas klasifikasi, metode yang mungkin dapat sangat terbatas berdasarkan keseimbangan kelas dalam dataset.

Begitu Anda mencapai ketidakseimbangan kelas yang lebih besar dari sekitar 1:10, maka sebagian besar metode klasifikasi berhenti bekerja. Anda akan dibiarkan dengan metode berdasarkan hutan acak dan mungkin jaring saraf (belum mencoba). Saya bekerja dengan keseimbangan kelas dalam kisaran 1: 500 hingga 1: 1000 dan telah menemukan bahwa tidak ada down atau upsampling yang berfungsi. Untungnya dataset saya "hanya" pengamatan 6mln oleh 200 variabel dan saya bisa menjalankan pohon yang ditingkatkan pada seluruh set dalam waktu yang wajar.

Jadi untuk langsung menjawab pertanyaan Anda:

  • Anda harus datang dengan banyak pertanyaan yang ingin Anda jawab dan dalam hal klasifikasi kemudian periksa saldo kelas dari variabel target.

  • Anda harus memeriksa distribusi (bukan dalam arti matematis) dari nilai yang hilang di semua data Anda dan mendokumentasikan apa yang Anda temukan. Beberapa metode ML baik-baik saja dengan nilai-nilai yang hilang sementara yang lain tidak dan Anda perlu melihat ke dalam imputasi data (yang memiliki seperangkat aturan, pedoman, dan masalah).

LauriK
sumber
1
Coba SGD classifier dari sklearn dengan class_weight = “balance”
Diego
4

Dari sudut pandang saya, untuk 5 juta contoh Anda membutuhkan banyak pohon untuk mendapatkan batasan generalisasi yang baik (model yang baik dalam istilah awam). Jika ini bukan masalah maka lakukanlah, bahkan jawaban pastinya bergantung pada sifat masalah Anda. GBT adalah metode yang baik terutama jika Anda memiliki jenis fitur campuran seperti kategoris, numerik dan semacamnya. Selain itu, dibandingkan dengan Neural Networks memiliki jumlah hyperparameter yang lebih rendah untuk disetel. Oleh karena itu, lebih cepat untuk memiliki model pengaturan terbaik. Satu hal lagi adalah alternatif pelatihan paralel. Anda dapat melatih banyak pohon sekaligus dengan CPU yang bagus. Jika Anda tidak puas dengan hasilnya, gunakan Neural Nets karena itu berarti model Anda harus lebih luas dan harus mempelajari informasi pesanan lebih tinggi melalui data Anda. Itu adalah karena NN dibandingkan dengan algoritma pembelajaran lainnya.

erogol
sumber
4

Sejalan dengan apa yang telah dikatakan @Simon:

  1. Pendekatan pembelajaran yang mendalam sangat berguna dalam menyelesaikan masalah dalam pemodelan visi, pidato dan bahasa di mana rekayasa fitur rumit dan membutuhkan banyak upaya.
  2. Untuk aplikasi Anda yang tampaknya tidak menjadi masalah karena Anda memiliki fitur yang terdefinisi dengan baik dan hanya diperlukan interaksi fitur dll.
  3. Mengingat bahwa model pembelajaran yang dalam saat ini membutuhkan banyak sumber daya komputasi dan waktu ilmuwan dalam menyusun kode, saya sarankan memilih pendekatan pembelajaran yang tidak mendalam.

Untuk masalah Anda, tradeoff upaya vs manfaat tampaknya tidak mendukung pembelajaran mendalam. DL akan menjadi berlebihan

wabbit
sumber
1

Ketika Anda memiliki kumpulan data yang begitu besar, Anda dapat bermain dengan salah satu teknik pemodelan statistik dan pembelajaran mesin dan itu sangat dianjurkan. Seperti yang lain telah menyarankan saya juga akan merekomendasikan untuk mengambil beberapa juta sampel acak dari data dan bermain dengannya. Karena ini adalah masalah klasifikasi saya akan mengikuti teknik klasifikasi sederhana terlebih dahulu dan kemudian melanjutkan dengan yang lebih kompleks nanti. Regresi logistik bagus untuk memulai.

Saya ingin menambahkan bahwa model generatif juga harus dicoba. Klasifikasi Naif Bayes adalah salah satu pengklasifikasi probabilistik yang paling sederhana dan mengungguli banyak metode kompleks seperti mesin vektor dukungan pada banyak tugas. Anda dapat melihat ini pelaksanaan sederhana NB dan ini link untuk perbandingan NB untuk regresi logistik.

Seseorang dapat membangun classifier Naif bayes (NB) sebagai model dasar dan kemudian pergi untuk teknik pembelajaran mesin seperti Support Vector Machines (SVM) atau multilayer perceptrons (MLP). Sebuah trade off di sini adalah bahwa NB secara komputasi lebih murah daripada MLP sehingga diinginkan kinerja yang lebih baik dari MLP.

Datang ke pertanyaan Anda: Pembelajaran mendalam dan peningkatan pohon gradien adalah teknik yang sangat kuat yang dapat memodelkan segala jenis hubungan dalam data. Tetapi bagaimana jika dalam kasus Anda regresi logistik sederhana atau NB memberikan akurasi yang diinginkan. Jadi selalu lebih baik untuk mencoba teknik-teknik sederhana terlebih dahulu dan memiliki kinerja dasar. Maka seseorang dapat pergi untuk model yang kompleks dan membandingkannya dengan baseline.

naif
sumber