Rancangan Program Belajar Ilmu Data Mandiri

Saat ini, akhir Agustus 2017, kalau saya hitung dari awal belajar pembelajaran mesin (machine learning, ML), berarti kurang lebih sudah tiga bulan saya belajar ML. Mulai dari belajar tentang kalkulus di awal Juni, diikuti dengan kursus introduksi ke statistika, bahasa R, dan Python, lalu ambil kursus pembelajaran mesinnya Andrew Ng di akhir Juni dan selesai mid Juli (saya ingat waktu itu saya kebut modul untuk minggu 2-3 dalam 3-4 hari karena mau kepotong libur lebaran), lalu secara sporadis ambil kursus ML-nya Georgia Tech (bagian reinforcement learning/RL saja) dan kursus aplikasi ML untuk trading saham di bulan Agustus ini.

Rasanya saya sudah punya sedikit modal pengetahuan tentang ML. Walaupun saya sadar bahwa pengetahuan saya masih sangat-sangat minim. Bahkan apa-apa yang diajarkan Prof Andrew Ng yang dulu rasanya cukup saya kuasai, sekarang rasanya sudah banyak yang luntur, karena tidak cukup sering dipakai.

Saya juga sadar, kemampuan praktis saya relatif masih nol. Maksud saya praktis adalah, kemampuan untuk memecahkan masalah ML atau ilmu data (data science, DS) di dunia nyata, dimana kita diberikan suatu data, lalu menganalisa dan membuat model ML untuk prediksinya, dengan bahasa Python (atau R). Ya, tujuan saya memang agar bisa memakai ML dengan bahasa Python atau R, dan lebih spesifiknya bagi saya adalah dengan Python.

Kenapa Python dan bukan R? Saya yakin masing-masing kita punya pertimbangan sendiri-sendiri dan tidak ada pilihan yang salah karena ujung-ujungnya bahasa mana yang dipakai ditentukan oleh institusi tempat Anda bekerja. Tapi pertimbangan saya terutama adalah karena saya sudah memakai Python bertahun-tahun, dan bisa diaplikasikan di bidang yang sangat luas (Python adalah general purpose vs R yang domain specific), dan saya tidak suka sintaks R hehe.

Kemampuan saya untuk mengaplikasikan ML dengan Python boleh dibilang masih nol. Saya tahu sedikit-sedikit tentang cara memakai Panda (beberapa kursus yang saya ikuti mengajarkan Panda), tapi belum pernah mengerjakan satupun proyek atau tugas signifikan yang memakai Panda.

 

Pencerahan Kaggle

Beberapa hari lalu saya mengintip Kaggle untuk melihat apa sih pekerjaan praktis yang dilakukan untuk memecahkan masalah ilmu data (data science). Anda bisa membaca “review” saya di sini. Dari situ saya mendapatkan banyak “pencerahan”.

Pencerahan yang paling penting adalah, bahwa ternyata data di dunia nyata itu nggak perfect. Ya iya laaah.. mungkin Anda langsung berpikir begitu. Tapi bagi saya ini cukup sesuatu. Karena kalau di kursus (kursus ML tepatnya), datanya boleh dibilang siap pakai, dalam artian datanya sudah bersih, dan fitur-fitur yang ada dalam data tersebut sudah terpilih sebagai fitur yang berkontribusi dalam prediksi, sehingga yang kita lakukan “tinggal” membuat model ML nya dan fokus ke membuat model yang benar dengan akurasi terbaik sembari menghindari biasoverfitting dan teman-temannya. Intinya adalah fokus di bagian ML-nya.

Sedangkan di “dunia nyata”, ternyata pekerjaannya tidak sesimpel itu. Pertama, data di dunia nyata mungkin bisa dibilang hampir selalu “kotor”. Ada data yang kosong, ada yang salah ketik, dan sebagainya. Kedua, fitur-fitur yang ada di data sering bukanlah fitur “matang” yang siap dimasukkan dalam model. Tugas Anda adalah membersihkan data itu, mempersiapkan, menganalisis fitur-fiturnya, mengelompokkan, mengoreksi, mencari korelasi, memvisualisasikan, membuat fitur turunan atau kombinasi, dan hal-hal lain, untuk memikirkan bagaimana kontribusi fitur itu terhadap model (catatan: nanti setelah setengah jalan menulis artikel ini saya baru tahu kalau kegiatan ini disebut data wrangling dan exploratory data analysis/EDA)

Setelah itu baru Anda bikin “model” ML nya. Dan ternyata nggak perlu pakai ribet, cukup pakai scikit-learn hehe.

scikit-learn
Snippet pemakaian scikit-learn

Bukannya belajar ML tidak penting, tapi poinnya adalah scikit-learn adalah hal praktis yang harus dipelajari. Dan bicara tentang hal praktis, pasti nanti ada banyak yang harus dipelajari, misalnya xgboost, matplotlib, TensorFlow, dll. Jadi alangkah baiknya kalau kursus berikutnya juga mengajarkan hal-hal ini agar kita bisa langsung terjun sebagai praktisi.

Kembali ke alur kerja Kaggle, terlihat kalau alur kerjanya adalah perulangan. Setelah Anda bikin model ML nya, Anda analisa hasilnya, lalu perkerjaannya berulang lagi ke awal, ke analisis data lagi dsb. Menganalisa fitur-fitur apa lagi yang bisa kita masukkan, atau ciptakan, agar akurasi prediksi kita lebih baik. Demikian seterusnya sampai Anda mendapatkan hasil yang Anda nilai memuaskan.

Anda bisa melihat sendiri proses pemecahan masalah ini dengan membaca ulasan (write up) dari peserta kompetisi Kaggle. Untuk pemula, Kaggle menyediakan kompetisi Titanic sebagai kompetisi belajar, dan Anda bisa baca contoh ulasannya untuk Python misalnya How to score 0.8134 in Titanic Kaggle Challenge dan ulasan dari Data Solutions.

Satu pencerahan lain yang cukup sesuatu adalah, ternyata dalam pemecahan masalah ilmu data, porsi pekerjaan utak-utik data sepertinya lebih besar daripada pekerjaan pembelajaran mesin. Sepertinya pembelajaran mesin adalah bagian dari pekerjaan data sciene itu sendiri. Tadinya saya pikir pembelajaran mesin itu lebih keren karena AI, sedangkan mungkin ilmu data itu mirip dengan data(base) admin atau expert Excel hehe.

Saya jadi mencari-cari (lagi) perbedaan antara ML dan DS.

 

Pembelajaran Mesin (Machine Learning) atau Ilmu Data (Data Science)?

Saya baca beberapa artikel dengan bantuan mbah Google untuk mencari “difference between machine learning and data science.  Ada banyak artikel, banyak jawaban, dan banyak diagram.

data-science-vs-machine-learning
Diambil dari Data Science vs Machine Learning (Quora)
data-science-vs-machine-learning-2
Diambil dari Data Science vs Machine Learning (Quora). Kredit untuk diagram: Forbes
data-scientist-venn-diagram
Diambil dari Quora: What is the difference between Data Analytics, Data Analysis, Data Mining, Data Science, Machine Learning, and Big Data?

Anda juga bisa baca artikel Quora lain, artikel Quora lain lagi, atau di Medium (Machine Learning Isn’t Data Science),

Saya sudah baca semua, dan kesimpulan sementara sepertinya cukup sejalan dengan intuisi kita di atas, yaitu pembelajaran mesin adalah salah satu bagian pekerjaan yang dilakukan oleh data scientist untuk memecahkan masalah ilmu data.

Apakah dengan demikian berarti pembelajaran mesin adalah subset dari ilmu data? Menurut saya kurang tepat. Lebih tepat pembelajaran mesin adalah subset dari artificial intelligence (AI). Tetapi dari segi pekerjaan, pekerjaan membuat model ML memang adalah subset dari pekerjaan ilmu data.

Mungkin ada sisi pandang lain untuk menguatkan hal di atas.

Dalam pandangan saya, seorang data scientist (dan mungkin keseluruhan bidang ilmu data sendiri) adalah pengguna dari ilmu atau alat bantu pembelajaran mesin (seperti regression, KNN, neural network,  scikit-learn, dsb). Sedangkan seorang ilmuwan pembelajaran mesin adalah peneliti, pencipta, dan pengembang algoritma dan tools pembelajaran mesin itu. Dengan demikian maka hal ini konsisten dengan definisi bahwa ML adalah subset dari AI, karena memang disiplin ilmu AI-lah yang mengembangkan ilmu ML tersebut.

Kembali ke pertanyaan semula, jadi mau belajar pembelajaran mesin atau ilmu data?

Menurut saya tergantung tujuan. Kalau tujuannya agar bisa memecahkan masalah ilmu data secara praktis dengan alat bantu yang ada, maka jalur ilmu data lebih tepat, karena bidang yang dipelajari lebih luas dalam hal persiapan, analisa data, dan pembentukan insting untuk mendapatkan fitur dari data. Selain pengetahuan tentang pemakaian ML-nya tentunya. Sedangkan kalau tujuannya untuk memperdalam ilmu AI, maka jalur ML lebih pas.

Jalur ML mungkin juga pas kalau Anda (berencana) bekerja di organisasi yang memecahkan problem ML yang spesifik (misalnya mobil swakemudi), dan/atau di organisasi besar sehingga sudah ada tim khusus untuk utak-atik data (data wrangling), atau organisasi riset tentang ML. Di organisasi-organisasi ini mungkin pengetahuan mendalam tentang algoritma/formula ML lebih dibutuhkan daripada pengetahuan praktis, karena ilmu ML yang dibutuhkan tingkatnya sudah tinggi.

Tapi ujung-ujungnya kedua bidang itu banyak overlap-nya juga sih, apalagi kalau kita bicara kursus, sering lingkup isinya mirip walaupun yang satu judulnya ML dan satunya DS. Keseluruhan proses DS biasanya akan dibahas. Walaupun mungkin porsi atau penekanannya yang berbeda.

Jadi untuk mencari kursus yang pas, kita harus menentukan tujuan yang lebih spesifik.

 

Menentukan Tujuan

Sesuai dengan arah karir saya, maka tujuan yang saya tetapkan untuk diri saya adalah mempunyai kemampuan end-to-end untuk membuat prediksi dari suatu data mentah yang diberikan.

Obyektif detilnya adalah:

  1. mampu mempersiapkan data (data wrangling),
  2. mampu menganalisa data, atau istilah kerennya exploratory data analysis (EDA), dan mempunyai insting yang baik atas data,
  3. mampu menggunakan alat bantu yang ada (numpy, panda, scikit-learn, keras, dkk),
  4. mempunyai insting yang baik untuk memakai model yang sesuai untuk membuat prediksi yang akurat,
  5. mampu melakukan penilaian atas kualitas keseluruhan proses di atas (self assessment)

Praktisnya adalah agar bisa ikut kompetisi Kaggle, karena masalah-masalah di Kaggle sedikti banyak mencerminkan masalah-masalah di dunia nyata (okay pastinya ada perbedaan sih). Idealnya adalah bisa mendapat rangking yang bagus. Mudah-mudahan bisa jadi Expert di Kaggle, atau syukur-syukur Master (butuh berapa tahun ya?…). Saya berpikir, punya “karir” di Kaggle bagus juga untuk unjuk gigi kemampuan ML kita, sekaligus belajar dan berkenalan dengan praktisi dan suhu-suhu DS lain.

Bagaimana dengan ilmu ML? AI? Untuk saat ini, pemahaman mendalam tentang ilmu (baca: formula) ML saya kesampingkan dulu. Intuisinya tetap penting sih, bahkan sangat penting sesuai dengan obyektif detil no 4 di atas. Tapi tidak perlu lah sampai menjadi expert formula matematikanya. Untuk sekarang.

Ibaratnya, saya ingin bisa membangun rumah, yang paling saya perlukan sekarang adalah ilmu membangun rumahnya secara keseluruhan dulu, dari awal pembersihan lahan, persiapan material, ilmu konstruksi, organisasi proyek/pekerja, dll. termasuk cara memakai alat-alat yang tepat (saya analogikan komponen scikit-learn sebagai alat). Bagaimana (cara) alat-alat itu dibuat, sementara belum penting. Tapi nanti kalau saya sudah ahli dalam membuat rumah, saya pikir akan tiba waktunya untuk berusaha mengerti cara membuat alat-alatnya itu, agar rumah bikinan saya semakin bagus.

Nah sekarang saatnya “belanja” kursus apa untuk diikuti selanjutnya.

 

MOOC, NanoDegree, Specialization, atau … MSc?

Sudah jelas saya punya banyak sekali topik untuk dipelajari, jadi saya butuh kursus yang lebih komprehensif agar bisa mencakup sebanyak mungkin topik-topik tersebut.

Kursus yang komprehensif biasanya terdiri dari beberapa MOOC, dan butuh waktu yang lebih panjang untuk menyelesaikan (6 bulan ke atas dengan asumsi waktu belajar 6-10-15 jam per minggu tergantung kursusnya). Kursus ini juga biasanya punya tugas praktek pemrograman yang signifikan, dan ada dukungan tutor, mentor, dan forum diskusi yang lebih baik.

Kursus komprehensif ini kalau di Udacity diberi nama NanoDegree. Kalau di Coursera Specialization. Kalau di EdX MicroMasters.

Suka atau tidak, program NanoDegree/Specialization/MicroMasters ini berbayar, dan biayanya bisa per program atau per bulan. Kalau per bulan, bayarnya per bulan selama kita mengikuti program tersebut. Kalau Coursera USD $49/bulan, sedangkan kalau Udacity $199/bulan dengan diskon 50% kalau kita bisa selesai dalam 12 bulan. Kalau program Micromasters DS yang di EdX biayanya per program. Lumayan sih memang. Tapi di lain pihak, saya sudah beberapa kali kecewa dengan kursus gratisan yang tidak memberikan praktek pemrograman yang cukup. Jadi kalau memang harus membayar segitu tapi kualitasnya bagus dengan praktek yang signifikan, menurut saya masih setimpal. Ada juga tip untuk mempercepat keikutsertaan Anda dalam program ini, yaitu dengan cara ikut versi gratisnya dulu, untuk menghemat biaya.

Mari kita daftarkan kursus-kursus yang ada.

 

Daftar dan Review Program Daring Sekelas NanoDegree untuk Ilmu Data dan Pembelajaran Mesin

Jalur Python dan R

  1. Data Analyst NanoDegree – Udacity. Program ini mempunyai kurikulum yang sepertinya lengkap, seimbang antara pembentukan naluri, teori, skill, dan tools, dan banyak mendapat review yang bagus. Sayang beberapa hari lalu biaya kursusnya baik jauh lebih mahal menjadi USD $1200 per program.
    Rating untuk saya: starf16starf16starf16starf16
  2. Microsoft Professional Program in Data Science – EdX. Isi kurikulum program ini sepertinya lengkap. Ada tugas akhir pemrograman (capstone), namun tidak dijelaskan apakah ada tugas pemrograman di setiap kursus. Sepertinya kita bisa memilih jalur Python atau R dalam program. Plus atau minus, program ini berorientasi pada penggunaan tools Microsoft.  Biaya USD $891 untuk keseluruhan.
    Rating untuk saya: starf16starf16starf16
  3. MSc in Data Science – University of Illinois via Coursera. Kalau Anda ingin gelar master beneran, dan punya IPK sarjana di atas 3, dan tidak keberatan menempuh 1-2 tahun kuliah, dan punya uang USD $19,200, mungkin bisa tengok program masters ini. Semua dilakukan daring tentunya.
    Rating untuk saya: starf16starf16

Jalur Python

  1. Applied Data Science with Python Specialization – University of Michigan via Coursera.  Sepertinya lebih memfokuskan pada penggunakan tools-nya yaitu Python, bahkan sampai mencakup text mining dan social network analysis. Jadi sisi positifnya adalah Anda akan mengenal tools-nya dengan baik. Hal positif yang lain adalah, sepertinya tugas pemrograman juga ada hampir di setiap minggu. Membaca review dari para murid, rata-rata semua mengatakan bahwa kursus ini memberikan materi yang sangat berharga, dengan tugas-tugas yang relevan dan bahkan menantang.
    Sedangkan kritisi yang sering muncul adalah, kurangnya penjelasan tentang suatu materi sehingga murid harus lebih aktif mencari penjelasan di tempat lain, sistem peer review pada kursus kedua yang kurang efektif untuk mendapatkan feedback, dan sifat kursus ini yang terlalu praktis (applied) yang kurang memberi penjelasan tentang latar belakang bagaimana sebuah algoritma atau rumus pembelajaran mesin bekerja. Sehingga disarankan untuk mengambil kursus introduksi lain tentang pembelajaran mesin terlebih dahulu sebelum mengambil kursus ini. Biaya standard Coursera, $49 per bulan.
    Rating untuk saya: starf16starf16starf16starf16
  2. Data Analysis and Interpretation Specialization – Wesleyan University via Coursera. Dari segi lingkup, sepertinya cukup lengkap, diajarkan proses analisis data dari awal sampai akhir, dan cocok untuk pemula. Kritisi yang sering muncul adalah tentang materi yang terlalu dangkal, kursus yang terlalu singkat, kelemahan sistem peer review, dan yang paling sering muncul adalah kurang atau tidak adanya dukungan dari staf pengajar terhadap kursus ini. Biaya standard Coursera, $49 per bulan.
    Rating untuk saya: starf16starf16starf16
  3. Data Science MicroMasters Program – UC San Diego via EdX. Kurikulumnya sepertinya agak sedikit (hanya terdiri dari 4 kursus), dan terkesan kurang mendalam, dan tidak dijelaskan juga bagaimana porsi prakteknya. Disamping itu biayanya cukup mahal, USD $1260.
    Rating untuk saya: starf16starf16
  4. Machine Learning Engineer NanoDegree – Udacity. Yang saya suka dari program nanodegree ini adalah titik beratnya di bagian praktek dan adanya review manual dari mentor terhadap proyek kita. Dengan praktek maka harapan saya bisa mengerti alur kerja DS dari awal sampai akhir, sekaligus bisa memakai tools-nya. Tapi melihat isi kursus, sepertinya materinya lebih fokus ke ilmu ML itu sendiri dari pada pada keseluruhan proses untuk menjadi DS. Misalnya, sepertinya untuk data wrangling dan exploratory data analysis (EDA) kurang mendapat porsi yang cukup di kursus ini, sementara algoritma dan formula ML mendapat porsi yang sangat banyak. Sehingga rasanya kurang sesuai untuk tujuan saya. Biaya $199 / bulan dengan diskon 50% kalau selesai dalam 12 bulan.
    Rating untuk saya: starf16starf16starf16
  5. Machine Learning Specialization – University of Washington via Coursera. Karena ini adalah kursus ML, maka kurikulumnya lebih menekankan pada pengetahuan tentang cara kerja/algoritma ML. Biaya standard Coursera, $49 per bulan.
    Rating untuk saya: starf16starf16starf16
  6. Harvard’s Data Science Course CS109. Ini bukan MOOC, tapi kelas kuliah Harvard yg diajarkan sekitar tahun 2013-2015 yang materinya bisa kita baca online. Kursus ini mendapatkan review yang bagus sekali dari murid yang mengikuti, katanya materinya bagus, tugasnya bagus, dan mereka belajar membentuk tim yang bagus. Tapi di situlah masalahnya. Kalau kita ikut sekarang, kita cuma ikuti materinya saja (dan melihat-lihat tugas yang dikerjakan orang dulu). Situasinya belajarnya tentu akan jauh berbeda, dengan pengalaman yang kita dapat jauh berkurang. Biaya gratis.
    Rating untuk saya: starf16starf16

Jalur R

  1. Data Science Specialization – Johns Hopkins University via Coursera. Dari segi materi sepertinya lengkap sekali. Anda diajarkan tidak hanya untuk data wrangling, exploratory data analysis (EDA), maupun ML-nya sendiri, tapi juga sampai misalnya web scraping, HTML, dan membuat tulisan dengan MarkDown dan melengkapinya dengan grafis yang cantik. Bahkan tentang mengomunikasikan pekerjaan Anda, dan membungkus pekerjaan Anda menjadi sebuah produk. Review tentang kursus ini agak bercampur antara yang bagus dan kurang bagus. Mungkin karena kurikulumnya sangat lengkap, mencakup sampai misalnya web scraping, membuat laporan dengan MarkDown, HTML, dsb. Mungkin cocoknya untuk yang punya latar belakang ilmuwan matematika yang kurang mempunyai latar belakang pemrograman. Biaya standard Coursera, $49 per bulan.
    Rating saya: starf16starf16starf16starf16
  2. The Analytics Edge – MITx via EdX (MOOC). Sebenarnya ini adalah kursus dan bukan program setara NanoDegree atau Specialization. Artinya dia lebih singkat. Saya masukkan di sini karena selalu mendapat review yang sangat bagus. Dari review, sepertinya kursus ini akan mengajarkan bagaimana menjadi seorang data analis yang baik, dengan praktek dan studi kasus yang banyak dari dunia nyata. Biaya gratis.
    Rating saya: starf16starf16starf16starf16

Daftar Lain

Berikut adalah daftar program MOOC yang dibuat oleh orang lain:

 

Belajar Sendiri dari Manual?

Terbersit di pikiran saya, karena program nanodegree/specialization itu lama (berbulan-bulan) dan kita tahu menonton video itu bisa menjemukan, maka kenapa tidak belajar sendiri saja dari manual? Yaitu dengan membaca ulasan Kaggle, lalu berusaha mengerti apa yang dilakukan orang itu dengan cara membaca manualnya sendiri (misalnya manual panda, tutorial scikit-learn, dsb).

Walaupun metoda ini kelihatannya sangat menantang, tapi mungkin kekurangannya adalah cara belajar kita jadi tidak terstruktur. Mungkin nanti ada ilmu-ilmu penting yang terlewat. Disamping itu, program nanodegree atau specialization biasanya juga berbasis proyek, jadi porsi pemrogramannya juga besar dan (mudah-mudahan) tidak akan membosankan.

 

Jadi Program Mana yang Dipilih?

Dari daftar di atas, sepertinya Data Analyst NanoDegree-nya Udacity paling cocok untuk saya. Untuk selanjutnya, rencana saya adalah ikut sebanyak mungkin materinya secara gratis (misalnya materi statistika), lalu untuk materi lainnya saya akan ikuti versi bayarnya agar bisa mendapatkan situasi dan dukungan belajar yang penuh.

Sampai jumpa di ulasan berikutnya.

Update 26/08/2017: ketika saya sudah siap dengan kartu kredit untuk enroll di kursus Data Analyst NanoDegree, tiba-tiba sekarang harganya berubah menjadi $1200 per program! Padahal materinya sama. Rasanya berat untuk ikut kursus ini, disamping biayanya jauh lebih besar dari sebelumnya, juga ada rasa kesal karena harganya tiba-tiba berubah.

Sekarang saya masih menimbang-nimbang lagi program mana untuk diikuti.

Update 26/09/2017: saya sudah daftar kursus Data Analyst NanoDegree (DAND) beberapa waktu lalu, tapi seminggu kemudian saya batalkan (dan dapat refund penuh) karena kursusnya terlalu lambat alurnya. Anda bisa lihat update ulasan saya di sini. Setelah saya batalkan DAND, saya kemudian ikut Applied Data Science with Python Specialization – University of Michigan @Coursera, dan rasanya cukup ok. Walaupun rencana saya sih saya tidak akan ikut penuh, hanya tiga kursus awal, karena dua kursus akhirnya adalah applied text mining dan applied social network analysis, yang kurang menarik untuk saya.

 

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Blog di WordPress.com.

Atas ↑

%d blogger menyukai ini: