Proses Machine Learning Dasar (Part 2)

Posting ini kelanjutan dari posting machine learning dasar (Part 1). Pada part 1 kita belajar untuk mengenali masalah dan menyeleksi solusi. Sekarang kita akan mencoba mempraktekkan yang kita pelajari di part-1.

Untuk praktek kali ini saya menggunakan Python dan Anaconda. Anaconda adalah kumpulan library dalam bahasa python untuk machine learning. Didalamnya terdapat scikit-learn yang berisi algoritma-algoritma machine learning.

Pertama kita definisikan masalah kita adalah memprediksi apakah seseorang terkena diabetes atau tidak. Disini masalah kita definisikan sendiri. Dalam praktiknya masalah ini biasanya didefinisikan oleh client atau user.

anaconda_logo

Untuk menjawab permasalahan tersebut kita ambil data. Dalam praktiknya lagi-lagi data ini biasanya disediakan oleh client atau user. Kalau data ini tidak disediakan maka tugas kita adalah mencari data yang semirip mungkin dengan data yang kita perlukan. Dalam kasus kita karena masalah kita adalah memprediksi pakah sesorang menderita diabetes atau tidak maka kita memerlukan data pasien yang telah didiagnosa dengan hasil terkena diabetes dan yang tidak terkena diabetes. Untungnya data tersebut tersedia di sini. Meskipun data ini adalah diagnosis orang India tapi data ini cukup mirip untuk membantu menyelesaikan masalah kita.

Berdasarkan paparan masalah dan data diatas sudah jelas ini adalah permasalahan classification / supervised learning. Karena tujuannya adalah mengelompokkan data ke dalam kelompok-kelompok yang sudah diketahui sebelumnya. Dalam hal ini kelompok pengidap diabetes dan kelompok yang bukan pengidap diabetes.

Ada beberapa algoritma di yang bisa kita gunakan untuk masalah ini antara lain K-Nearest neighbors, Decision Tree, Naive Bayes, dsb-nya. Untuk hasil optimal maka semua algoritma ini harus dicoba untuk mendapatkan model terbaik yang bisa memprediksi dengan hasil paling akurat. Akan tetapi sering kali mencoba semua algoritma yang ada bukanlah opsi yang dimiliki di setiap project machine learning. Hal ini dikarenakan keterbatasan waktu, biaya dsb-nya.

Kalau ini hambatannya biasanya di tentukan nilai akurasi yang bisa diterima, misal. Akurasi minimal adalah 70%. Dan algotima pertama yang memenuhi akurasi ini maka modelnya akan diterima. Untuk posting ini kita hanya akan mencoba K-Nearest neighbors. Karena keterbatasan waktu juga untuk mengulas semua algoritma 🙂 Tapi kalo ada waktu dan kesempatan silakan saja explore algoritma lainnya untuk mendapatkan hasil optimal.

K Nearest Neighbors adalah algoritma classification yang cukup luas digunakan. Algoritma ini mendasarkan pada tetangga terdekat dari data tersebut. Dalam kasus diabetes kita kali ini, sesorang didiagnosa terkena diabetes atau tidak tergantung dari orang (atau sejumlah orang) yang memiliki kondisi paling mirip dengan orang tersebut.

OK selanjutnya kita akan masuk ke kode. Setelah anaconda terinstall, jalankan jupyter notebook. Kode-kode dibawah ini bisa dijalankan di jupyter notebook.

Import data dengan Numpy lalu bagi menjadi observation dan target. Observation dalam kasus ini adalah data pasien dan ciri-ciri pasien tersebut. Dalam observation tidak ada hasil diagnosis apakah pasien tersebut terkena diabetes atau tidak. Target dalam hal ini adalah hasil diagnosis apakah pasien tersebut terkena diabetes atau tidak. Berikut kode dalam python untuk import data dan membagi data menjadi observation dan target:

import numpy as np

dataset=np.loadtxt('pima-indians-diabetes.data',delimiter=',')
print(dataset.shape)
observation=dataset[:,0:7]
target=dataset[:,8]

Prose selanjutnya adalah membagi observation dan target tersebut menjadi dua bagian yang disebut train dan test. Hal ini disebut train-test split. Model yang akan memprediksi diabetes akan dibuat menggunakan data train. Selanjutnya model tersebut akan di test akurasinya dengan menggunakan data test. Tujuan dari metode train-test split ini adalah untuk mencegah overfitting dari suatu model.

Overfitting adalah kondisi dimana model tersebut sangat akurat memprediksi semua data yang kita punya hanya dikarenakan kita menggunakan semua data yang ada untuk menciptakan model tersebut. Dalam hal ini tidak ada pengecekan akurasi terhadap model tersebut. Dengan membagi data yang kita punya menjadi train dan test maka akurasi model kita bisa di test dengan menggunakan data test sehingga kemungkinan overfitting bisa ditekan dan kemampuan model memprediksi data baru dikemudian hari menjadi lebih akurat dibanding model yang overfit.

Berikut kode untuk melakukan train-test split.

from sklearn.cross_validation import train_test_split

observation_train, observation_test, target_train, target_test = train_test_split(observation, target, test_size=0.2, random_state=10)

OK segini dulu hope this helps 🙂

2 respons untuk ‘Proses Machine Learning Dasar (Part 2)

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