Pengantar Machine Learning
Machine learning dan Big Data adalah topik yang lagi hot-hot nya belakangan ini. Setelah kita siap dengan infrastructure big data maka selanjutnya adalah mempersiapkan otak yang dapat digunakan untuk pengambilan keputusan. Otak inilah yang akan menjadi penggerak Data Driven Organization ke depan nya.
Kebanyakan software developer dengan skill nya akan masuk ke dunia machine learning learning ini dengan pertanyaan-pertanyaan. Apa step awal yang perlu saya lakukan ? Apa sumber belajar yang perlu saya dapatkan ? Apakah perlu menguasai math lebih dalam ? Bagaimana approach yang terbaik top down atau bottom up ?
Pertanyaan pertanyaan tersebut menjadi lebih jelas jika kita kembali ke apa tujuan sebenarnya kita mempelajari machine learning. Apakah untuk dipakai secara practical ? Atau untuk kepentingan research ? Jawaban terhadap kedua pertanyaan ini menentukan langkah apa yang akan diambil untuk memperdalam machine learning.
Jika anda ingin menggeluti machine learning untuk keperluan pekerjaan maka anda sebaiknya menggunakan pendekatan top down. Pendekatan ini akan mengarahkan anda untuk mempelajari machine learning dengan dasar kemampuan programming anda. Anda akan bermain-main dengan library dan memiliki pengetahuan menyeluruh terlebih dahulu meskipun tidak mendalam. Anda akan dapat bermain-main dan mengetahui penggunaan library dan bagaimana meng aplikasikan nya ke permasalahan dunia nyata.
Jika anda memilih jalur research maka anda perlu menggunakan pendekatan bottom up. Berarti anda akan memilih untuk mempelajari dasar-dasar terlebih dahulu yaitu mempelajari statistics, math, linear algebra dst. Setelah itu anda mempelajari masing-masing algorithm secara mendalam dan kemudian akan berangkat mengembangkan algorithm tersebut dan kemungkinan membuat terobosan dalam algorithm yang telah di dalami tersebut.
Pendekatan yang akan diberikan pada blog post selanjutnya adalah pendekatan secara top down, dimana kita akan bermain-main dengan library dan melakukan prediksi terhadap dataset yang diberikan untuk melakukan problem solving di real world problem.
Kita juga akan membahas mengenai bagaimana berkompetisi dalam data science di website Kaggle.
Ok, sekarang kita masuk ke bahasan apa machine learning tersebut sebenarnya.
Machine learning adalah metoda dimana kita membuat program yang belajar dari data. Jadi sama seperti manusia belajar berdasarkan contoh, maka kita akan memberikan contoh2 yang dapat dipelajari oleh program yang kita buat. Contoh-contoh ini lah yang akan digunakan oleh program tersebut untuk memperoleh pola yang akan digunakan untuk menentukan pertanyaan-pertanyaan berikutnya.
Secara matematis sebenanarnya yang dilakukan oleh program tersebut adalah melakukan pembentukan fungsi matematika yang kita sendiri tidak mengetahui bentuknya.
Program kita adalah blackbox yang bertugas melakukan pembelajaran berdasarkan contoh-contoh yang diberikan.
Pertanyaannya adalah apa beda machine learning dengan program biasa ?
Perbedaannya adalah program yang biasa kita lakukan sifatnya adalah statis sedangkan machine learning program bersifat belajar dari contoh yang diberikan. Jadi rules yang diberikan tidak statis. Algorithm yang sifatnya complex terkadang dapat diselesaikan dengan simple dengan machine learning.
Contohnya adalah pendeteksi spam pada inbox. Apakah anda dapat membuat program statis dengan algorithm standard ?
Apa yang anda lakukan untuk menyelesaikan masalah tersebut ?
Apakah kita akan keras kepala untuk menyelesaikan permasalah tersebut dengan berbagai if dan else condition beserta regular expression ?
Hal yang paling mendasar yang kita lakukan kemungkinan adalah mengumpulkan sample dan menelaah secara mendalam. Kita mencari pola-pola yang mungkin untuk spam dan mana yang bukan. Kita membuat abstraksi terhadap pola tersebut sehingga secara heuristics kita dapat mendeteksi kasus-kasus baru kedepannya. Tetapi kita tetap harus update program tersebut untuk mengatasi kasus-kasus yang belum kita kenali sebelumnya. Hal ini akan menimbulkan kesulitan dalam hal maintenance dari program yang kita buat. Pada hal ini kita melihat ada ciri dari machine learning dimana kita belajar dari sample, tetapi kita programmer yang melakukan tersebut. Machine learning menyerahkan task-task tersebut kepada computer program.
Semua algoritma machine learning memiliki satu kesamaan. Sesuatu yang lebih pintar mengajari sesuatu yang tidak pintar. Program yang kita buat pada awalnya adalah tidak pintar karena tidak memiliki pengetahuan. Cara untuk meningkatkan kepintarannya adalah dengan memberikan contoh-contoh sehingga program komputer tersebut menjadi mengerti berdasarkan contoh tersebut.
Algoritma apapun itu akan memiliki pola yang sama. Kita sebagai orang yang akan memakai algoritma tersebut harus mengajarkan dengan contoh. Dalam kasus Artificial Intelligence (AI) dalam game juga kita tetap harus mengajarkan otak atau algoritma agar menjadi pintar. Jika program tersebut hanya terdiri dari if dan else saja maka hal itu bukan AI. Karena tidak bisa mengambil keputusan sendiri tetapi terpatok kepada aturan yang sudah dibuat sebelumnya.
Jadi inti permasalahan yang terbesar pada AI adalah bagaimana kita mengajarkan atau melakukan training terhadap AI tersebut agar menjadi pintar dan memiliki pengetahuan yang cukup untuk menyelesaikan masalah yang belum diajarkan sebelumnya. Program yang akan belajar dan programmer menentukan apa faktor-faktor yang perlu dipelajari oleh AI.
Mari kita melihat contoh dari game RPG. Kita mulai bertanding dengan game yang sama sekali belum ditraining. Untuk pertama kali maka kita akan dengan mudah mengalahkan lawan pada game tersebut. Tetapi setelah bermain beberapa kali, engine atau algorithm dari game tersebut terus belajar dan akhirnya semakin sulit untuk dikalahkan. Programmer akan menentukan faktor-faktor apa yang diperlukan untuk belajar. Contohnya adalah seberapa efektif setiap pergerakan yang dilakukan AI, nilai dari preassure of tactics ataupun escape movement.
Semoga hal ini dapat memberikan gambaran singkat mengenai machine learning, pada blog post berikutnya kita akan membahas masalah-masalah apa yang sering dihadapi dalam machine learning.
Cheers
ulasan yg sangat menarik. Tenyata saya cukup ketinggalan dengan teknologi ini.