Proses Machine Learning Dasar (Part 1)

scikit-learn-logo-small

Maaf banget vakum selama beberapa bulan karena ada pekerjaan yang cukup menyita waktu bahkan ketika weekend pun harus kerja. Setelah ada beberapa message ke saya untuk melanjutkan lagi blog ini (sebenernya gak pernah berniat untuk meninggalkan blog ini selamanya sih) jadinya dibikin posting ini setelah sekian lama.

Posting ini tentang proses machine learning dasar untuk menganalisa data. Seperti pada postingan sebelumnya dimana Big Data itu akan jauh lebih berharga jika ‘dihiasi’ dengan machine learning, maka fokus area berikutnya tentunya adalah machine learning.

Posting ini seperti titlenya adalah posting dasar dari proses machine learning untuk mendapatkan model yang bisa digunakan untuk memproses data. Posting ini merupakan langkah umum yang dilalui ketika kita menggunakan algoritma machine learning untuk menganalisa dan mengolah data. Pada posting kali ini saya kan menggunakan scikit-learn karena tool ini cukup populer dan cukup gampang untuk dipelajari. Scikit-learn memakai baha Python. Jadi kalo belum familiar dengan Python saya sarankan ikut tutorial singkatnya untuk mulai mehaminya. Python cukup mudah dipeljari jadi seharusnya gak perlu waktu lama untuk belajar python.

OK enough chit chat skrg waktunya mulai belajar. Kita akan membagi menjadi beberapa step dan melihat apa yang bisa kita lakukan di setiap step dengan menggunakan python.

kmeans

Langkah pertama adalah identifikasi masalah. Hal ini sudah jelas harus dilakukan. Apa masalah atau tujuan yang hendak dicapai dengan proses machine learning ini. Selain identifikasi masalah pastikan juga data yang mendukung untuk menyelesaikan masalah itu ada. Karena tanpa data, maka masalah ini tidak bisa diselesaikan dengan machine learning. Untuk kali ini kita akan mengambil masalah atau tujuan yaitu untuk mendeteksi apakah seseorang terkena diabetes atau tidak. Data untuk mendukung untuk menyelesaikan masalah itu adalah data pasien yang telah didiagnosis diabetes (baik terkena atau tidak). Data tersebut bisa di dapat di sini.

Dari masalah dan data ini maka bisa disimpulkan bahwa ini adalah supervised learning dan classification binary class. Supervised learning karena dari data kita sudah ada label (label berarti terdapat hasil akhir diagnosis apakah terkena diabetes atau tidak). Penjelasan singkat mengenai supervised learning dan unsupervised learning bisa dilihat di posting sebelumnya disini. Sehingga model nanti akan belajar menemukan pola berdasarkan data yang sudah mendapat label. Classification berarti mengelompokkan data ke dalam kelompok yang sudah kita tentukan sebelumnya (kelompok terkena diabetes dan kelompok tidak terkena diabetes). Classification binary class berarti label atau kelas pengelompokkan hanya ada dua (terkena diabetes dan tidak terkena diabetes). Sampai disini kita tidak menggunakan python. Cukup perlu mengetahui dasar-dasar dan teori dari machine learning untuk mengidentifikasi masalah.

Langkah selanjutnya adalah seleksi solusi. Dari sini mulai tergantung dari teknologi yang kita gunakan untuk menyelesaikan masalah. Dari langkah sebelumnya kita tahu bahwa ini adalah classification dengan binary class. Dari masalah itu kita lihat teknologi atau tools yang kita gunakan, apa sajar library atau algoritma yang disediakan untuk masalah ini. Karena sebelumnya kita akan menggunakan python dan scikit learn maka kita bisa lihat algoritma apa saja yang cocok untuk masalah ini. Ada beberapa algoritma classification yang tersedia  dari scikit learn misalnya K-Nearest Neighborhood,  Logistic Regression, SVM, Decision Tree. Jika kita memakai teknnologi lain misalnya Apache Spark atau Apache Flink, pilihan algoritmanya bisa saja berbeda tergantung yang diimplementasikan di tools tersebut.

Idealnya untuk mendapatkan model terbaik maka semua algoritma yang tersedia di tools tersebut harus dicoba untuk mendapatkan model terbaik. Akan tetapi seringkali hal ini tidak memungkinkan bahkan untuk data scientist yang cukup berpengalaman. Penyebabnya bisa karena waktu yang tidak cukup, atau pengetahuan tentang algoritma yang kurang memadai. Untuk pemula, sebaiknya dipilih sedikit (biasanya cukup satu dulu) yang sederhana dan mudah dipahami. Misalnya untuk kasus ini kita akan pilih algoritma K-Nearest Neighborhood. Algoritma ini cukup sederhana yaitu label dari suatu data ditentukan dari kedekatan data tersebut dengan data lainnya. Dengan kata lain, untuk kasus kita, seseorang didiagnosis terkena diabetes atau tidak ditentukan oleh orang lain (atau beberapa orang lain) yang memiliki gejala paling mirip dengan orang yang kita diagnosis.

OK segini aja dulu untuk part 1 untuk pemanasan setelah berbulan2 gak posting. Nanti part 2 akan mulai hands on dengan beberapa kode.

Enjoy 🙂