Machine Learning Project for Beginners Step by Step

Bunga Iris pasti sudah tidak asing lagi dunia machine-learning. Menurut saya sendiri, klasifikasi Bunga Iris merupakan project awal yang cukup membantu sebagai awalan untuk belajar Machine Learning dan teman-temannya.

Image Source: Expert System

Iris sendiri merupakan nama genus di tingkatan taksonomi klasifikasi makhluk hidup. Genus ini terdiri dari lebih dari 300 spesies[1]. Namun sebagai permulaan, di tulisan ini akan dilakukan klasifikasi terhadap 3 spesies saja (yang selanjutnya disebut labels/target) yaitu:

  • Iris setosa
  • Iris virginica
  • Iris versicolor

Pengklasifikasian didasarkan pada 4 parameter (yang selanjutnya disebut features) yaitu:

  • Panjang petal
  • Lebar petal
  • Panjang sepal
  • Lebar sepal

1. Prepare the Datasets
Dataset merupakan kumpulan data yang akan diolah. Di sini, akan digunakan dataset yang sudah disediakan oleh library sklearn (scikit-learn). Sebelum meng-import dataset, dilakukan pula import libraries yang dibutuhkan.

Nah, tipe dataset dari sklearn ini sendiri ketika dicek dengan fungsi type(iris_dataset)akan mengeluarkan output: sklearn.utils.Bunch.Ini bisa membuat bingung orang awam seperti saya. Maka dari itu tipe dataset dapat diubah terlebih dahulu ke dalam bentuk dataframe untuk bisa ditampilkan ke dalam bentuk yang lebih ‘manusiawi’ untuk dipelajari.

Output:

Dari visualisasi tabel di atas, dapat dilihat pada kolom pertama bahwa dataset ini terdiri dari 150 sample (ditunjukkan dari index 0–149). Kemudian di kolom kedua hingga kelima merupakan nilai dari tiap-tiap feature (parameter) per sample-nya. Dan terakhir, kolom keenam merupakan label/target (nama spesies) dari tiap sample.

2. Split Datasets
Setelah dataset di-import, selanjutnya data ini perlu dibagi menjadi dua bagian: data training dan data testing. Data training adalah kumpulan data yang akan digunakan untuk melatih model kita. Sedangkan data testing digunakan untuk mengetahui performa model kita yang telah dilatih tadi. Oleh karena itu, data testing sebaiknya berbeda dan terpisah dari data training. Ini supaya kita bisa benar-benar mengetahui apakah model mesin yang telah kita latih ini ketika diberikan masukan berupa data baru (yang berbeda dengan data ketika ia di-train) tetap dapat melakukan tugasnya dan menunjukkan performa yang bagus. Untuk jumlah sample dataset yang jauh lebih banyak, data tidak hanya disarankan dibagi menjadi dua, tetapi dapat dibagi menjadi tiga, dengan tambahan data validation selain data training dan data testing.

Rasio antara data training dan data testing berbeda-beda tergantung jumlah dataset yang dimiliki. Dalam hal ini, akan dicoba digunakan rasio 80% : 20% antara training dan testing data. Untuk melakukan split dataset menjadi dua bagian, sklearn sudah menyediakan library train_test_split untuk melakukannya. Selain splitting data, fungsi ini juga sekaligus akan men-shuffle atau mengacak pembagian data. Terdapat pula fungsi test_size untuk mengatur porsi dari data testing dibandingkan data keseluruhan.

Setelah pembagian data dijalankan, hasil pembagian dapat dicek menggunakan perintah berikut.

Bisa dilihat bahwa hasil splitting data ini menunjukkan bahwa jumlah baris data train (x_train dan y_train) adalah 80% dari 150 = 120 dan jumlah baris data testing adalah sisanya. Berarti splitting data sudah selesai dan benar.

3. Build the Model
Kasus Iris ini merupakan kasus three class classification karena tiap sampel akan digolongkan menjadi salah satu dari tiga class yang ada (atau dalam hal ini spesies). Three class classification dalam machine learning termasuk multiclass classification yang dapat dimodelkan menggunakan berbagai macam algoritma classifier seperti DecisionTree (DT), Support Vector Machines (SVM), K-NearestNeighbor (KNN), dll. Di percobaan ini, akan digunakan algoritma KNN. Kenapa? Mungkin akan dibahas di lain waktu?

KNN sendiri pada prinsipnya akan mengklasifikasikan sebuah data baru ke kelas tertentu berdasarkan jarak data baru tersebut dengan k data terdekat. Dapat dilihat pada ilustrasi gambar di bawah ini, ketika kita memilih nilai k=3, sample baru pada model di bawah ini akan diklasifikasikan ke Kelas A. Hal ini dikarenakan 3 sampel terdekat dari sampel baru, mayoritasnya adalah Kelas A (persegi panjang merah). Namun ketika dipilih nilai k=8, sampel akan diklasifikasikan ke Kelas B dengan alasan yang serupa.

Ilustrasi klasifikasi dengan KNN

Oleh karena itu, ketika menggunakan KNN, pemilihan nilai k harus dibuat sedemikian rupa agar model yang kita buat benar-benar mendekati benar 😮 Pemilihan nilai ini dapat dilakukan dengan berbagai metode yang mungkin akan dibahas di lain waktu juga? Namun untuk percobaan kali ini, akan digunakan nilai k default dari sklearn yaitu k=5.

Selanjutnya klasifikasi dengan KNN dapat dilakukan dengan menggunakan perintah di atas, dilanjutkan dengan train model.

4. Test the Model
Setelah melatih model dengan kumpulan data train, saatnya mengetes model tersebut untuk mengetahui performanya.

Output:

5. Result
Hasil yang diperoleh adalah accuracy 96,67%. Lalu, apa arti angka ini? Nilai ini mungkin sedikit lebih dapat dimengerti dengan mencetak sebuah matriks bernama confusion matrix (matriks kebingungan?)

Output:

Apakah dengan melihat confusion matrix ini jadi benar-benar confuse? 😮

  • Jadi, angka-angka di dalam matriks ini kalau dijumlahkan pasti hasilnya 30. Kenapa? Karena jumlah dataset yang kita alokasikan menjadi data testing ada 30 data.
  • Diagonal matriks dari kiri atas ke kanan bawah merupakan jumlah data yang “True Positive” dan “True Negative” atau dengan kata lain jumlah data yang diklasifikasikan dengan benar (Iris setosa benar diklasifikasikan sebagai Iris setosa, dsb)
  • Angka lainnya selain yang berada pada diagonal matriks di poin kedua, merupakan jumlah data “False Negative” dan “False Positive” atau dengan kata lain jumlah data yang diklasifikasikan dengan tidak tepat (misal Iris virginica diklasifikasikan sebagai Iris versicolor)

Nah, nilai accuracy ini adalah jumlah angka-angka di poin kedua, dibagi total jumlah data testing. Jadi, dalam kasus ini, nilai accuracy atau ketepatan dalam pengklasifikasian data Iris menggunakan model tadi adalah (12+8+9)/30 = 29/30 = 0.967.

Tentu saja masih banyak lagi cara lain untuk melakukan klasifikasi dan optimasi dari klasifikasi itu sendiri untuk memperoleh hasil yang lebih baik. Akan tetapi untuk orang awam seperti saya, saya rasa tulisan ini cukup membuat saya dapat memahami beberapa basic dalam melakukan klasifikasi.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store