Data Science itu luas, dan banyak yang bingung mau mulai masuk dari mana.
Artikel ini dibuat dengan harapan untuk menjawab kebingungan itu.
Penulis yakin tak sedikit dari pembaca yang belum terbayang Data Science itu apa. Mungkin juga baru dengar istilahnya karena sedang booming. Mari kita liat istilah formalnya:
Data science is an inter-disciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from many structural and unstructured data.
~ Wikipedia
Intinya ada 2: inter-disciplinary dan extracting knowledge and insight. Jadi bisa dibilang juga:
Memakai pengetahuan dari berbagai bidang untuk dapat ilmu dan insight dari data.
Supaya lebih terbayang, di bawah ada beberapa contoh Data Science Problem Statements:
-
Given records of ticket transactions for the past month,
predict how many extra tickets will be booked everyday for the next week. -
Given pictures of product and their category,
build an automatic categorizer of product pictures. -
Given a number of texts and their category (containing explicit content or not),
build an automatic categorizer for unlabeled texts. -
Given a set of images,
build an image segmentation algorithm to find all the same landmarks.
Cari contoh lainnya di Kaggle, DrivenData, MachineHack, Analytics Vidhya, dan platform kompetisi lain.
Terdengar sulit, dan seringkali memang tidak mudah
Tapi disinilah kita ingin membangun confidence untuk men-tackle permasalahan-permasalahan tersebut
Data Science luas karena masalah yang tercakup di dalamnya sangat banyak. Tapi secara umum, kita bisa buat grouping untuk permasalahan yang dibahas dalam Data Science, terutama terkait competitive data science:
-
Tabular Data
Maksudnya, data disimpan dalam suatu bentuk tabel.Tipe ini yang paling mudah terbayang prosesnya dan recommended buat yang baru masuk dan mau main-main dulu ke Data Science.
Contoh kompetisi for beginner:
-
Image Data
Bidang terkait ini biasa disebut Computer Vision.Contoh task-nya antara lain:
- mengklasifikasi suatu gambar
- mendeteksi suatu objek dalam suatu gambar atau
- membuat batasan objek2 dalam gambar, dll.
Contoh kompetisi for beginner:
-
Text Data
Yang membahas ini biasa disebut Natural Language Processing (NLP).Contoh task-nya antara lain:
- analisis sentimen atau klasifikasi emosi
- aplikasi peringkasan berita
- aplikasi mesin penerjemah, dll.
Contoh kompetisi for beginner:
-
Supervised Learning
Supervised Learning adalah tipe pembelajaran ketika model atau algoritma mempelajari pola dari data yang sudah berlabel. Tipe pembelajaran ini adalah yang paling sering dimanfaatkan pada Competitive Data Science.
Ibaratnya, kita mengajari model untuk membedakan yang mana bunga Mawar, Melati atau Bugenvil dengan cara memberi gambar masing-masing bunga beserta namanya.
Setelah model dirasa sudah cukup bisa mengenali karakteristik dari bunga-bunga ini maka kita bisa main tebak-tebakan dengan model ini dengan memberinya gambar bunga yang belum diketahui namanya.
Supervised Learning biasanya terkait dengan beberapa permasalahan populer di Machine Learning yaitu:
- Regression: meminta model untuk memprediksi nilai kontinu (Misal: Apakah harga=101500?, harga=201700?, dst.)
- Clasification: meminta model untuk memprediksi kelas yang diskrit (Misal: Apakah kategori=perkakas, kategori=gadget, dst.)
-
Unsupervised Learning
Unsupervised Learning adalah tipe pembelajaran ketika model atau algoritma mempelajari pola dari data yang tidak memiliki label.
Ibaratnya, kita ditempatkan di satu ruangan bersama dengan 100 orang yang belum kita kenal, kemudian kita diminta untuk mencari kesamaan masing-masing dan membentuk grup sebanyak n. Setelah terbentuk kelompok, akhirnya kita baru tahu Kelompok A ternyata kumpulan penonton video masak, Kelompok B ternyata kumpulan penonton video kucing, dan Kelompok C ternyata kumpulan orang yang tidak punya kesamaan dengan kelompok lainnya.
Unsupervised learning biasanya terkait dengan beberapa permasalahan:
- Clustering: mengelompokkan data berdasarkan kemiripan
- Anomaly Detection: mendeteksi keabnormalan atau hal ganjil dari data
- Association: mencari item lain yang terasosiasi dengan item tertentu
-
Reinforcement Learning
Reinforcement Learning adalah tipe pembelajaran ketika model/algoritma/agen hanya diberikan sebuah goal dan reward tanpa diberi tahu bagaimana cara mencapai goal tersebut.
Model hanya diberikan sekumpulan langkah-langkah yang boleh dilakukan dan akan mendapatkan reward apabila langkah yang dipilih menuju atau mendekati goal.
Anggap saja kita bermain bulutangkis. Ketika kita berhasil menjatuhkan kok ke wilayah lawan, maka kita akan dapat poin (reward). Ketika kita berhasil dapat poin, kita bisa belajar dari keberhasilan kita (misal: gerakan apa yang bagus, dsb.), dan ketika lawan yang dapat poin, kita bisa belajar dari kesalahan kita (misal: salah bergerak, kurang kerjasama, dsb.). Hal yang sama diterapkan ke model ML. Mereka belajar dari keberhasilan dengan diberi reward, dan belajar kesalahan dari kehilangan reward.
Skills penting yang dibutukan sebelum masuk ke Skill yang lebih spesifik untuk Data Science (Section "Specific Technical Skills")
Ini sangat pondasi. Bukan berarti 100% dalam Data Science itu skill programming, ya. Tapi lebih baik jangan masuk ke Data Science jika topik dasar pemrograman seperti if-else, looping, function and procedures, belum terlalu lancar, karena eratnya hubungan antara Data Science dan Programming. Bahkan topik yang intermediate di programming seperti Object Oriented Programming (OOP) juga good to have agar lebih mudah paham dokumentasi dari berbagai tools yang ada. Tanpa ilmu programming, kita tak akan bisa berjalan terlalu jauh atau menyelam terlalu dalam.
Terkait bahasa pemrograman, umumnya untuk data tabular bisa pakai R atau Python. Untuk tipe data yang lain, support untuk Python jauh lebih kuat. Jadi penulis pribadi menyarankan Python.
- Youtube dan Google (Cari "Introduction to Python" atau yang semisal)
- Codecademy
- W3Schools
- FreeCodeCamp
- Khan Academy
Basic Math di sini setidaknya paham operasi matriks, dan statistik dasar seperti mean, standard deviation, dsb. Gunanya untuk mengerti konsep-konsep dasar dan ketika menyusun solusi, bisa punya gambaran besar bagaimana cara kerjanya, dan tidak hanya sembarang pakai tools
Dari 2 skill di atas, penulis pribadi simpulkan kalau rata-rata lulusan SMA sudah cukup untuk mulai masuk ke Data Science, selama sudah paham pemrograman.
Berarti secara timeline ITB, rata-rata mahasiswa ITB bisa mulai di semester 2 TPB.
- SMA
- Youtube dan Google (Cari "Basic Statistics" atau yang semisal)
- StatQuest Youtube Channel
- Coursera - Basic Statistics
- FreeCodeCamp - Statistics for Data Science
Skills penting yang perlu dipelajari ketika sudah mulai masuk ke Data Science
Tools untuk analisis data. Di antaranya:
- Pandas Library for Python
- R Programming Language
Dua tools di atas sangat valuable karena berbasis programming, jadi cukup powerful untuk meng-handle berbagai macam sumber data. Tapi bisa dipertimbangkan juga yang berbasis app seperti:
- Excel
- Tableau
- Power BI
- Google DS
Tools di atas terutama penting ketika handle data tabular. Berhubung sekarang TPB semester 1 sudah belajar pandas, itu jadi pondasi yg sangat bagus utk mulai.
Proses apa aja yang dilakuin ke sebuah data. Di antara contoh istilahnya:
- Data Cleansing
- Null or Missing Value Handling
- Outlier Handling
- Remove Duplicate
- Normalization
Kita perlu paham secara garis besar cara kerja suatu model Machine Learning, agar kita bisa memilih preprocessing data yang tepat untuk model itu, dan bagaimana caranya kita bisa mainkan (tuning) algoritmanya untuk hasilkan performa optimal. Tidak harus paham sampai seluk-beluknya, namun di awal, cukup bisa paham intuisi bagaimana modelnya bekerja.
Setelah memahami konsep-konsep model Machine Learning maupun langkah-langkah pemrosesan data, kita perlu tau juga step-step yang biasanya dilakukan oleh para Data Scientist dari awal sampai akhir secara end-to-end. Framework paling umum yang digunakan namanya CRISP-DM. Untuk belajar lebih lanjut bisa dibaca di sini
Data Science sangat luas dan berhubungan dengan banyak ketidakpastian, dan dalam medan seperti itu, ada softskills tertentu yang berguna untuk kita miliki, di samping hardskill, ketika tackle sebuah masalah:
"Apa yang belum aku tahu? Metode apa yang belum dipakai?"
Sebagai bidang yang sangat luas, Data Science sering punya topik-topik baru yang muncul dengan laju yang sangat cepat. Kita tak bisa mengandalkan satu kali belajar aja untuk bisa mengerjakan semua task Data Science.
Bahkan sangat mungkin kita menyelesaikan kompetisi di suatu topik, dan ketika kita masuk kompetisi berikutnya, 90% dari kompetisi itu berisi hal baru yang kita harus pelajari. Maka mindset continuous learning sangat penting dalam Data Science.
"Alur ini valid gak ya?"
Semangat eksplorasi ada baiknya dibarengi dengan keraguan yang proporsional. Tak bisa setiap kali kita paham metode baru, kemudian kita terapkan metode tersebut kepada setiap problem. Hal ini karena setiap data, dan setiap problem mempunyai karakteristik yang berbeda.
Bahkan untuk task yang sama, misalkan memprediksi demand barang, jika tipe data dari dua buah problem berbeda, maka kita bisa saja butuh metode pemrosesan data yang berbeda, dan sangat mungkin pakai model yang berbeda. Bagaimana kita menerapkan softskill ini, bergantung kepada softskill yang ketiga.
"Ini maksudnya gimana ya? Bisa dipake di mana ya?"
Untuk paham apakah suatu metode cocok untuk suatu persoalan, kita perlu paham secara garis besar bagaimana metode itu bekerja, dan untuk tipe persoalan seperti apa dia baiknya. Hal ini menuntut kita untuk selalu 'penasaran' tentang intuisi dari suatu metode/library/framework yang baru kita pelajari. Tak hanya belajar cara memakai/ngodingnya saja, atau bahkan cuma copas kodenya saja.
Data Science punya banyak sekali pintu masuk, dan penulis sendiri juga percaya kalau cara belajar setiap orang sebaiknya personalized. Tapi bagian ini ditulis hanya sebagai masukan, agar yang belum masuk bisa ambil salah satu pintu.
Untuk sekedar masuk ke Data Science, penulis percaya bahwa tidak terlalu banyak yang harus dikuasai terlebih dahulu. Tidak seperti fisika kuantum, quantum computing, distributed systems, dll. Memang, bidang-bidang di Data Science banyak yang tingkat kompleksitasnya tinggi. Hal itu terlihat jelas kalo kita coba baca paper-paper terkini di bidang Data Science.
Tapi untuk sekedar memulai, atau untuk sekedar mengikuti kompetisi skala kecil, menurut penulis setidaknya hanya perlu 2 skill yang dikuasai, yaitu sebagaimana yang ada di section sebelumnya: Basic Programming dan Basic Math.
Menurut penulis poin #1 penting karena banyak hal di bidang ini yang hanya bisa dipelajari/dimengerti ketika sudah masuk langsung (hands-on). Jadi lebih penting untuk "masuk" dahulu dibandingkan "mempersiapkan untuk masuk".
Mulai ikut kompetisi-kompetisi Data Science, atau proyek kecil-kecilan. Ide proyek dan implementasinya sangat banyak di internet.
Beberapa sumber ide dan implementasi proyek:
Lomba-lomba yang bisa diikuti:
-
Lomba di Platform
-
Lomba yang diadakan lembaga (perusahaan/universitas)
Note: ini hanya beberapa yang pernah ada, tidak menjamin lomba ini diadakan rutin tiap tahun.- EY NextWave Data Challenge (diadakan perusahaan consulting EY)
- Shopee Code League (diadakan Shopee)
- JOINTS (UGM)
- ITToday (IPB)
Untuk HMIF ITB, bisa cari berbagai lomba yang up-to-date di link ini ya, termasuk di antaranya lomba Data Science. Masuknya perlu pake email std.stei
Biasanya suatu lomba atau proyek punya topik/arah yang jelas. Misalkan yang satu NLP, yang satu Computer Vision, yang satu Time Series Forecasting. Masing-masing bidang punya metode, proses, dan model tersendiri yang kita perlu pelajari ketika masuk. Di tahap ini kita bisa mencari artikel/paper/tutorial yang mendukung pengerjaan itu.
3 Tahap di atas kita ulang-ulang lagi dengan problem dan kompetisi yang bervariasi.
Berikut beberapa kompilasi sumber-sumber lain yang bisa dipertimbangkan, penulis coba kelompokkan berdasarkan tipe pembelajarannya:
Sumber untuk latihan, berupa ide projek, kompetisi, task-task, dan dataset
- Kaggle
- UCI ML Repository (berisi berbagai dataset, yang dipakai di paper)
- DrivenData
- Zindi
- MLContests
- arXiv (berisi ribuan Research Papers, include Code and Dataset)
Course bisa dianggap kuliah: ada materi, ada tugas, ada nilai. Di antara keuntungan course adalah pembelajaran yang terstruktur
- Coursera
Popular Courses - Udemy
- Udacity
- edX
- MIT's Intro to Deep Learning
Bagi yang suka fokus ke teori, dan ingin belajar dengan pace tersendiri.
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
- Deep Learning with PyTorch
- Introduction to Statistical Learning
- Buku-buku lain dari O-Reilly biasanya terkenal
Bisa dibilang sumber informasi yang spesifik banget terhadap suatu task atau bisa jadi fokusnya lebih ke memberikan insight tentang bidang Data Science secara umum.
Note: Mayoritas library/framework Machine Learning punya dokumentasi yang memuat tutorial penggunaan library/framework tersebut. Makanya penting buat kita sering-sering main ke website dokumentasi.
Akhir kata, semoga guide ini bisa membantu. Tak perlu takut dan mikir "apa aku punya talent yang cukup ya?". Karena kebanyakan yang menghalangi itu bukan "kurang talent", tapi distraksi-distraksi yang ada di sekitar kita. Motivasi dan disiplin akan lebih berpengaruh dalam proses belajar dibandingkan talent.
Terima kasih dan selamat belajar!
- Ahmad Izzan
- Christian Wibisono
- Ilham Firdausi Putra
Sebagai kontributor-kontributor awal!
- CnC HMIF ITB sebagai pendorong pertama ditulisnya artikel ini
- Seluruh kontributor langsung maupun tak langsung di repository ini