Mungkin kita pernah merasakan (termasuk saya), sebelum melakukan proses komputasi dan membuat model dari machine learning biasanya kita memuat dataset yang ada terlebih dahulu. Proses ini ternyata membutuhkan sumber daya yang besar bahkan sebelum melakukan proses komputasi model pada Machine Learning. Hal ini dikarenakan keterbatasan sumber daya. Sumber daya disini maksudnya adalah perangkat keras yang digunakan. Sangat terbatas mulai dari sisi RAM atau mungkin juga hard disk. Sempat merasakan juga ketika memuat berkas CSV dengan besar ratusan mega membuat komputer kita nge-hang ?. Ini baru ratusan mega belum sampai gigaan.
Mungkin ada yang menyebutkan istilahnya sebagai scaling. Dataset besar yang dimaksud disini adalah besar dari sisi ukuran dimulai dari 1 Giga keatas.
Cara paling mudah mungkin dengan memasangnya di AWS atau Google Cloud platform, tapi ini semua menggunakan third party platform. Ada beberapa cara yang bisa kita gunakan sebenarnya. Bagi yang pernah mengikuti situs Machine Learning Mastery milik Jason Brownlee, dia memberikan beberapa arahan dari mulai bagaimana memasang tambahan RAM dan lain sebagainya. Silakan dicek pada lamannya.
Saya menemukan ada beberapa cara lain dengan memanfaatkan pustaka yang bersifat open source, dengan berbagai macam metode. Walaupun belum mencoba semuanya atau sudah mecoba tapi tidak mendalam akan tetapi sepertinya perkembangannya layak untuk diikuti dan dicoba.
1.Dask
Dask merupakan salah satu pustaka yang menyediakan proses komputasi secara paralel untuk proses analisis. Proses yang dilakukan bahkan disebutkan tidak membutuhkan cluster dan bisa dilakukan pada satu buah komputer. Tentunya satu buah komputer yang dimaksud ada ketentuannya. Komputer-komputer sekarang tentu sudah semakin canggih. Disebutkan pada dokumentasinya dengan menggunakan satu buah komputer dengan multi-core CPU, 32GB RAM sanggup untuk melakukan pemrosesan data hingga 100GB lebih.
2. Parquet
Parquet merupakan pustaka yang menawarkan konsep pemrosesan data yang memiliki metode kompresi tersendiri. Menggunakan parquet tentu saja tetap inline dengan sistem Hadoop. Jika kita membutuhkan memuat dataset yang besar mungkin salah satu caranya bisa dengan mengkonversinya ke parquet. Bahkan pustaka pandas yang biasa digunakan untuk analisis juga memberikan fungsi yang bisa melakukan konversi dari data frame ke parquet. Namun ada hal yang perlu diperhatikan ketika kita melakukan konversi. Sejauh yang penulis pernah coba, ada bug yang hingga hari ini belum bisa diatasi (kecuali buat fungsi sendiri) yakni timestamp antara pandas dengan parquet. Salah satu mendukung hingga nanosecond sedangkan lainnya baru sampai milisecond.
3. Vaex
Untuk pustaka vaex ini dibuat oleh mereka yang berkutat dengan data astronomi yang bergiga-giga. Memuat data dengan menggunakan vaex cukup singkat untuk data sebesar diatas 1G. Kebetulan saya sudah pernah mencobanya. Jika vaex mendukung pemroses data lebih lanjut seperti pandas dengan scikit-learn tentu pustaka ini saya yakin akan lebih populer. Sementara ini dengan pustaka tambahan seperti vaex-ml ada beberapa algoritma yang bisa digunakan untuk melakukan proses komputas seperti kmeans.
Demikian kiranya sebagian kecil dari pustaka yang bisa menjadi salah satu alternatif untuk memuat dataset besar. Ada teknik lain juga sebenarnya tanpa menggunakan pustaka yakni dengan teknik memuat data secara bertahap tidak langsung. Semisal dengan memuat data per sekian ratus ribu baris.
Jika ada pustaka lain yang bermanfaat silakan mention saya siapa tahu bisa ditambahkan. Ke depan mungkin akan lebih enak jika diberikan contohnya satu per satu. Selamat bereksperimen.
andrey
nice