Saya harap judulnya cukup jelas. Di Kaggle, sebagian besar pemenang menggunakan susun dengan kadang-kadang ratusan model dasar, untuk memeras beberapa% ekstra MSE, keakuratan ... Secara umum, menurut pengalaman Anda, seberapa pentingkah pemodelan mewah seperti menumpuk vs sekadar mengumpulkan lebih banyak data dan lebih banyak fitur untuk data?
56
Jawaban:
Sebagai latar belakang, saya telah melakukan peramalan toko seri waktu SKU untuk penjualan ritel selama 12 tahun sekarang. Puluhan ribu deret waktu melintasi ratusan atau ribuan toko. Saya suka mengatakan bahwa kami telah melakukan Big Data sejak sebelum istilah tersebut menjadi populer.×
Saya secara konsisten menemukan bahwa satu-satunya hal terpenting adalah memahami data Anda . Jika Anda tidak memahami driver utama seperti Paskah atau promosi, Anda akan menemui ajal. Cukup sering, ini berujung pada pemahaman bisnis yang cukup baik untuk mengajukan pertanyaan yang benar dan mengatakan yang tidak diketahui dari yang tidak diketahui .
Setelah Anda memahami data Anda, Anda perlu bekerja untuk mendapatkan data yang bersih . Saya telah mengawasi cukup banyak junior dan pekerja magang, dan satu hal yang belum pernah mereka alami dalam semua statistik dan kelas ilmu data mereka adalah seberapa banyak omong kosong yang ada dalam data yang Anda miliki. Maka Anda perlu kembali ke sumber dan mencoba untuk mendapatkannya untuk menghasilkan data yang baik, atau mencoba untuk membersihkannya, atau bahkan hanya membuang beberapa barang. Mengubah sistem yang sedang berjalan untuk menghasilkan data yang lebih baik bisa sangat sulit.
Setelah Anda memahami data Anda dan benar-benar memiliki data yang agak bersih, Anda dapat mulai mengutak-atiknya. Sayangnya, pada saat ini, saya sering menemukan diri saya kehabisan waktu dan sumber daya.
Saya pribadi adalah penggemar berat kombinasi model ("susun"), setidaknya dalam arti abstrak , kurang begitu menyukai rekayasa fitur mewah, yang sering melintasi garis ke wilayah overfitting - dan bahkan jika model pelamun Anda berkinerja sedikit lebih baik rata-rata, kita sering menemukan bahwa prediksi yang benar-benar buruk menjadi lebih buruk dengan model yang lebih kompleks. Ini adalah dealbreaker di lini bisnis saya. Satu ramalan yang benar-benar buruk dapat menghancurkan kepercayaan pada seluruh sistem, jadi kekokohan sangat tinggi dalam daftar prioritas saya. Jarak tempuh Anda mungkin beragam.
Dalam pengalaman saya, ya, kombinasi model dapat meningkatkan akurasi. Namun, keuntungan yang sangat besar dibuat dengan dua langkah pertama: memahami data Anda, dan membersihkannya (atau mendapatkan data bersih di tempat pertama).
sumber
Saya tidak bisa berbicara untuk seluruh industri, tentu saja, tetapi saya bekerja di industri dan telah bersaing di Kaggle sehingga saya akan berbagi POV saya.
Pertama, Anda benar untuk mencurigai bahwa Kaggle tidak sama persis dengan apa yang dilakukan orang di industri. Ini adalah permainan, dan tunduk pada permainan, dengan banyak batasan gila. Misalnya, dalam kompetisi Santander yang sedang berjalan :
Jika seseorang memberi saya set data seperti ini di tempat kerja, saya akan segera menawarkan untuk bekerja dengan mereka di fitur engineering sehingga kami bisa mendapatkan fitur yang lebih berguna. Saya akan menyarankan kita menggunakan pengetahuan domain untuk memutuskan kemungkinan istilah interaksi, ambang batas, strategi pengkodean variabel kategorikal, dll. Mendekati masalah dengan cara itu jelas akan lebih produktif daripada mencoba mengekstrak makna dari file knalpot yang dihasilkan oleh insinyur basis data tanpa pelatihan dalam ML.
Lebih jauh, jika Anda belajar, katakanlah, bahwa kolom numerik tertentu sama sekali bukan numerik, melainkan kode ZIP, Anda dapat pergi dan mendapatkan data dari sumber data pihak ketiga seperti Sensus AS untuk menambah data Anda. Atau jika Anda memiliki kencan, mungkin Anda akan menyertakan harga penutupan S&P 500 untuk hari itu. Strategi augmentasi eksternal semacam itu membutuhkan pengetahuan terperinci dari kumpulan data spesifik dan pengetahuan domain yang signifikan tetapi biasanya memiliki hasil yang jauh lebih besar daripada peningkatan algoritmik murni.
Jadi, perbedaan besar pertama antara industri dan Kaggle adalah bahwa dalam industri, fitur (dalam arti data input) dapat dinegosiasikan.
Perbedaan kelas kedua adalah kinerja. Seringkali, model akan digunakan untuk produksi dalam salah satu dari dua cara: 1) prediksi model akan dihitung sebelumnya untuk setiap baris dalam tabel database yang sangat besar, atau 2) aplikasi atau situs web akan mengirimkan model tersebut satu baris data tunggal dan perlu prediksi dikembalikan secara real-time. Kedua kasus penggunaan membutuhkan kinerja yang baik. Untuk alasan ini, Anda tidak sering melihat model yang lambat untuk memprediksi atau menggunakan sejumlah besar memori seperti K-Nearest-Neighbors atau Extra Random Forests. Regresi logistik atau jaringan saraf, sebaliknya, dapat mencetak batch rekaman dengan beberapa perkalian matriks, dan perkalian matriks dapat sangat dioptimalkan dengan perpustakaan yang tepat.Walaupun saya bisa mendapatkan AUC +0.001 jika saya menggunakan model non-parametrik lainnya, saya tidak akan melakukannya karena prediksi throughput dan latensi akan turun terlalu banyak.
Ada dimensi keandalan untuk ini juga - menumpuk empat perpustakaan pihak ke-3 yang berbeda, katakanlah LightGBM , xgboost , catboost , dan Tensorflow (pada GPU , tentu saja) mungkin memberi Anda pengurangan 0,01 pada MSE yang memenangkan kompetisi Kaggle, tetapi empat pustaka berbeda untuk diinstal, digunakan, dan didebug jika ada yang salah. Sangat bagus jika Anda bisa mengerjakan semua hal di laptop Anda, tetapi menjalankannya di dalam wadah Docker yang berjalan di AWS adalah cerita yang sama sekali berbeda. Sebagian besar perusahaan tidak ingin memimpin tim devops kecil hanya untuk menangani masalah penyebaran semacam ini.
Yang mengatakan, menumpuk itu sendiri tidak selalu merupakan masalah besar. Faktanya, menumpuk beberapa model berbeda yang semuanya berkinerja sama dengan baik tetapi memiliki batas keputusan yang sangat berbeda adalah cara yang bagus untuk mendapatkan benjolan kecil di AUC dan benjolan besar dalam ketahanan. Hanya saja, jangan membuang begitu banyak kitchen sink ke dalam ansambel heterogen Anda sehingga Anda mulai memiliki masalah penyebaran.
sumber
Dari pengalaman saya, lebih banyak data dan lebih banyak fitur yang lebih penting daripada model paling fanciest, paling ditumpuk, paling dicari, yang dapat dihasilkan.
Lihatlah kompetisi periklanan online yang terjadi. Model yang menang sangat rumit sehingga mereka akhirnya menghabiskan waktu seminggu penuh untuk berlatih (pada dataset yang sangat kecil, dibandingkan dengan standar industri). Di atas semua itu, prediksi dalam model ditumpuk lebih panjang daripada dalam model linier sederhana. Pada topik yang sama, ingatlah bahwa Netflix tidak pernah menggunakan algoritma 1M $ karena biaya teknik .
Saya akan mengatakan bahwa kompetisi sains data online adalah cara yang baik bagi perusahaan untuk mengetahui "apa akurasi tertinggi (atau metrik kinerja apa pun) yang dapat dicapai" menggunakan data yang mereka kumpulkan (pada beberapa titik waktu). Perhatikan bahwa ini sebenarnya adalah masalah sulit yang sedang dipecahkan! Namun, di industri, pengetahuan lapangan, perangkat keras, dan kendala bisnis biasanya menghambat penggunaan "pemodelan mewah".
sumber
Penumpukan secara signifikan meningkatkan kompleksitas dan mengurangi interpretabilitas. Keuntungannya biasanya relatif kecil untuk membenarkannya. Jadi, sementara ensembling mungkin banyak digunakan (misalnya XGBoost), saya pikir susun relatif jarang di industri.
sumber
Dalam pengalaman saya mengumpulkan data dan fitur yang baik jauh lebih penting.
Klien yang bekerja dengan kami biasanya memiliki banyak data, dan tidak semuanya dalam format yang mudah diekspor atau mudah dikerjakan. Batch data pertama biasanya tidak terlalu berguna; itu adalah tugas kita untuk bekerja dengan klien untuk mencari tahu data apa yang kita perlukan untuk membuat model lebih berguna. Ini adalah proses yang sangat berulang.
Ada banyak eksperimen yang sedang berlangsung, dan kami membutuhkan model yang:
Butir 3) sangat penting, karena model yang mudah diinterpretasikan lebih mudah untuk berkomunikasi dengan klien dan lebih mudah ditangkap jika kita melakukan kesalahan.
sumber
Inilah sesuatu yang tidak banyak muncul di Kaggle: the
semakin banyak risiko yang akan Anda hadapi selama model itu. Waktu biasanya dibekukan dalam kompetisi Kaggle, atau ada jendela waktu pendek di masa depan di mana nilai set tes masuk. Dalam industri, model itu mungkin berjalan selama bertahun-tahun. Dan yang mungkin diperlukan hanyalah satu variabel berubah menjadi kacau agar seluruh model Anda masuk neraka, bahkan jika itu dibangun dengan sempurna. Saya mengerti, tidak ada yang mau menonton kontes di mana pesaing dengan hati-hati menyeimbangkan kompleksitas model dengan risiko, tetapi di luar sana dalam suatu pekerjaan, bisnis dan kualitas hidup Anda akan menderita jika ada yang salah dengan model yang Anda tangani. Bahkan orang yang sangat pintar pun tidak kebal. Ambil contoh, kegagalan prediksi Google Pantau Flu Dunia . Dunia berubah, dan mereka tidak melihatnya datang.
Untuk pertanyaan OP, " Secara umum, dalam pengalaman Anda, seberapa pentingkah pemodelan mewah seperti menumpuk vs hanya mengumpulkan lebih banyak data dan lebih banyak fitur untuk data? " Yah, saya secara resmi sudah tua, tetapi jawaban saya adalah bahwa kecuali Anda memiliki infrastruktur pemodelan benar-benar kuat, lebih baik untuk memiliki model langsung, dengan serangkaian variabel minimal, di mana hubungan input-to-output relatif mudah. Jika variabel hampir tidak meningkatkan metrik kerugian Anda, tinggalkan saja. Ingat itu pekerjaan. Dapatkan tendangan Anda di luar pekerjaan di kontes Kaggle di mana ada insentif "pulang atau pulang".
Satu pengecualian adalah jika situasi bisnis menuntut tingkat kinerja model tertentu, misalnya jika perusahaan Anda perlu mencocokkan atau mengalahkan kinerja pesaing untuk mendapatkan beberapa keuntungan (mungkin dalam pemasaran). Tetapi ketika ada hubungan linier antara kinerja model dan keuntungan bisnis, peningkatan kompleksitas biasanya tidak membenarkan keuntungan finansial (lihat " Netflix tidak pernah menggunakan Algoritma $ 1 Juta karena biaya Rekayasa " - permintaan maaf kepada @ RUser4512 karena mengutip hal yang sama artikel). Namun dalam kompetisi Kaggle, perolehan tambahan itu bisa menggerakkan Anda ratusan peringkat saat Anda melewati solusi terdekat.
sumber
Sebuah jawaban singkat yang merupakan kutipan yang saya sukai dari buku Gary Kasparov, Deep Thinking
Saya bekerja terutama dengan data keuangan time-series, dan proses dari mengumpulkan data, membersihkannya, memprosesnya, dan kemudian bekerja dengan pemilik masalah untuk mencari tahu apa yang sebenarnya ingin mereka lakukan, untuk kemudian membangun fitur dan model untuk mencoba dan mengatasi masalah dan akhirnya secara retrospektif memeriksa proses untuk meningkatkan untuk waktu berikutnya.
Seluruh proses ini lebih besar dari jumlah bagian-bagiannya. Saya cenderung mendapatkan kinerja generalisasi yang 'dapat diterima' dengan regresi linier / logistik dan berbicara dengan para pakar domain untuk menghasilkan fitur, cara yang menghabiskan waktu lebih baik daripada menghabiskan waktu terlalu menyesuaikan model saya dengan data yang saya miliki.
sumber