Klasifikasi Naive Bayes

Pada blog sebelumnya, kita telah membahas mengenai pemanfaatan machine learning, salah satunya untuk memprediksi. Sebenarnya memprediksi itu bisa ditarik ke arah regresi ataupun klasifikasi, hanya bedanya kalau regresi output-nya adalah numerik (berupa angka-angka) sedangkan klasifikasi output-nya berupa kategorikal (bisa binary atau multiclass). Dimana binary class itu hanya 2 pilihan (yes/no, on/off, 0/1, hitam/putih, dan lain sebagainya) sedangkan pada multiclass itu jika pilihannya atau keputusannya ada 3, 4, 5, dan seterusnya (jadi lebih besar dari 2).

Terdapat beberapa model yang bisa digunakan untuk mengklasifikasi dataset yaitu:

  1. Naive Bayes (NB). Pada model ini terkait dengan probabilitas (kemunculan suatu kelas dari data yang ada)
  2. K Nears Neighbords (KNN), intinya adalah melihat tetangga terdekat dari data yang ada.
  3. Decision Tree (DT), intinya adalah melihat percabangan pohon terakhirnya menuju ke kelas yang mana.
  4. Support Vector Machine (SVM), kerjanya yaitu kita coba membuat sebuah pemisah (bisa berupa garis yang biasa disebut plane atau bidang yang biasa disebut hyperplane). Kunci dari model ini adalah bagaimana kita membuat plane atau pemisah hyperplane yang terbaik untuk kelas-kelas tersebut (dilihat dari titik-titik yang ada disekitar pemisah itu).
  5. Neural Network (NN), kuncinya adalah kita mencari bobot.
  6. Ensemble Learning (EL) berarti menggabungkan beberapa model menjadi 1 model yang baru. Biasanya memakai voting (pemilihan suara terbanyak) dari model-model yang digunakan.

Pada kesempatan kali ini, kita hanya akan membahas mengenai Naive Bayes. Berikut adalah rumus pada model klasifikasi ini:

Keterangan:
x : Data dengan class yang belum diketahui
c : Hipotesis data merupakan suatu class spesifik
P(c|x) : Probabilitas hipotesis berdasar kondisi (posterior probability)
P(c) : Probabilitas hipotesis (prior probability)
P(x|c) : Probabilitas berdasarkan kondisi pada hipotesis
P(x) : Probabilitas c



Terdapat pula rumus berikut:
Keterangan :
X : Data dengan class yang belum diketahui
H : Hipotesis data merupakan suatu class spesifik
P(H|X) : Probabilitas hipotesis H berdasar kondisi X (posteriori probabilitas)
P(H) : Probabilitas hipotesis H (prior probabilitas)
P(X|H) : Probabilitas X berdasarkan kondisi pada hipotesis H
P(X) : Probabilitas X

Dengan menggunakan rumus tersebut, terdapat beberapa tahapan algoritmanya antara lain:
  1. Baca Data Training
  2. Hitung jumlah class
  3. Hitung jumlah kasus yang sama dengan class yang sama
  4. Kalikan semua nilai hasil sesuai dengan data X yang dicari class-nya

Berikut contoh dari tahapan algoritma Naive Bayes agar lebih dipahami:

1. Membaca Dataset

Dari data tersebut berisi 5 informasi yaitu OUTLOOK, TEMPERATURE, HUMADITY, WINDY, dan PLAY GOLF. Data tersebut merupakan tipe data kategorikal. Untuk informasi outlook, terdapat 3 kondisi yaitu RAINY, SUNNY, dan OVERCAST. Terdapat 3 informasi kondisi yang ada pada temperature, yaitu MILD, COOL, dan HOT. Pada humadity, terdapat 2 informasi kondisi yaitu HIGH dan NORMAL. Untuk informasi windy, terdapat 2 kondisi yaitu TRUE dan FALSE. Pada play golf, terdapat 2 informasi kondisi yaitu YES dan NO.

Dari dataset tersebut terdapat 14 data. Jika seseorang ingin memutuskan bermain golf atau tidak, kita bisa lihat berdasarkan 4 parameter atau variabel di atas yaitu outlook, temperature, humadity dan windy. Pada kasus di atas, kelas yang akan kita cari atau keputusan atau outputnya adalah play golf, dimana ada  2 kelas (binary class) didalamnya yaitu yes & no.  Dari data di atas kita dapat cek berapa kelas yes dan berapa kelas no, karena belum tentu nilainya seimbang. Balance adalah jumlah kelasnya sama, inbalance adalah jumlahnya berbeda (ada yang lebih besar). Dari data tersebut diperoleh hasil sebagai berikut:



2. Hitung Jumlah Class/Label

Terdapat 2 class dari data training tersebut, yaitu:
Maka:
  • P (C1) = 9/14 = 0.64285
  • P (C2) = 5/14 = 0.35714
Pertanyaan:
  • Data X = (outlook = rainy, temperature = cool, humadity = high, windy = true)
  • Main golf atau tidak?

Berikut tahapan penyelesaiannya:




3. Hitung Jumlah Kasus yang sama dengan Class yang sama

Untuk P(Ci) yaitu P(C1) dan P(C2) sudah diketahui hasilnya di langkah sebelumnya. Selanjutnya hitung P(X|Ci) untuk i=1 dan 2, antara lain sebagai berikut:
  • P(outlook="sunny" | play="yes") = 2/9 = 0.22222
  • P(outlook="sunny" | play="no") = 3/5 = 0.6
  • P(outlook="overcast" | play="yes") = 4/9 = 0.44444
  • P(outlook="overcast" | play="no") = 0/5 = 0
  • P(outlook="rainy" | play="yes") = 3/9 = 0.33333
  • P(outlook="rainy" | play="no") = 2/5 = 0.4

Jika semua atribut dihitung, maka didapat hasil akhirnya seperti berikut ini:




4. Kalikan Semua Nilai Hasil Sesuai dengan Data X yang Dicari Class-nya

Pertanyaan:
  • Data X = (outlook = rainy, temperature = cool, humadity = high, windy = true)
  • Main golf atau tidak?
Kalikan semua nilai hasil dari data X
  • P(X | play="yes") = 0.33333*0.33333*0.33333*0.33333 = 0.01234
  • P(X | play="no") = 0.4*0.2*0.8*0.6 = 0,0384
  • P(X | play="yes")*P(C1) = 0.01234*0.64285 = 0.00793
  • P(X | play="yes")*P(C1) = 0,0384*0.35714 = 0.01371
Nilai "no" lebih besar dari nilai "yes" maka class dari data X tersebut adalah "No".








Sekian dari saya, terimakasih cantik/ganteng sudah berkunjung di blog saya 😊

Komentar

Postingan populer dari blog ini

Klasifikasi Support Vector Machine (SVM)

Neural Network