### 4.1 Naive Bayes

_Naive Bayes_  adalah algoritma _supervised learning_ yang sangat sederhana [26].
Idenya mirip dengan probabilitas bayesian pada bab 2. Secara formal, persamaanNaive
Bayesuntuk klasifikasi diberikan pada persamaan 4.1 dimana
ciadalah suatu nilai kelas,Cadalah pilihan kelas (himpunan),tadalah fitur
(satu fitur, bukan _feature vector_ ) danF adalah banyaknya fitur. Kita
memprediksi kelas berdasarkan probabilitas kemunculan nilai fitur pada kelas
tersebut.
Pertama, kita hitung _likelihood_ suatu _feature vector_ diklasifikasikan ke kelas
tertentu berdasarkan bagaiman probabilitas korespondensi fitur-fiturnya
terhadap kelas tersebut (persamaan 4.1). Kemudian, kita normalisasi _likelihood_ semua
kelas untuk mendapatkan probabilitas _class-assignment_ ( _softmax_ –
persamaan 4.2). Akhirnya, kita pilih kelas dengan probabilitas tertinggi (persamaan
4.3).

```
_likelihood_ (ci) =P(ci)
```
#### ∏F

```
f=1
```
```
P(tf|ci) (4.1)
```

54 4 Algoritma Dasar

```
id outlook temperature humidity windy play ( _class_ )
1 sunny hot high false no
2 sunny hot high true no
3 overcast hot high false yes
4 rainy mild high false yes
5 rainy cool normal false yes
6 rainy cool normal true no
7 overcast cool normal true yes
8 sunny mild high false no
9 sunny cool normal false yes
10 rainy mild normal false yes
11 sunny mild normal true yes
12 overcast mild high true yes
13 overcast hot normal false yes
14 rainy mild high true no
```
```
Tabel 4.1: Contoh dataset _play tennis_ (UCI machine learning repository)
```
```
_outlook_  temperature humidity windy play ( _class_ )
yes no yes no yes no yes no yes no
sunny 2 3 hot 2 3 high 3 4 false 6 2 9 5
overcast 4 0 mild 4 2 normal 6 1 true 3 3
rainy 3 2 cool 3 1
```
```
Tabel 4.2: Frekuensi setiap nilai atribut
```
```
_outlook_  temperature humidity windy play ( _class_ )
yes no yes no yes no yes no yes no
sunny 2/9 3/5 hot 2/9 3/5 high 3/9 4/5 false 6/9 2/5 9/14 5/14
overcast 4/9 0/5 mild 4/9 2/5 normal 6/9 1/5 true 3/9 3/5
rainy 3/9 2/5 cool 3/9 1/5
```
```
Tabel 4.3: Probabilitas setiap nilai atribut
```
```
P _assignment_ (ci) =
```
```
_likelihood_ (ci)
∑
cjC _likelihood_ (cj)
```
#### (4.2)

```
cˆi= arg max
ciC
```
```
P _assignment_ (ci) (4.3)
```
Agar mendapatkan gambaran praktis, mari kita bangun model Naive
Bayes untuk Tabel 4.1. Tabel ini disebut sebagai _dataset_, yaitu memuat
_entry_ data (tiap baris disebut sebagai _instance_ ). Kita anggap Tabel 4.1 sebagai _training_
_data_. Untuk menghitung probabilitas, pertama-tama kita
hitung terlebih dahulu frekuensi nilai atribut seperti pada Tabel 4.2, setelah
itu kita bangun model probabilitasnya seperti pada Tabel 4.3.
Untuk menguji kebenaran model yang telah kita bangun, kita menggunakan _testing_
_data_, diberikan pada Tabel 4.4. _testing data_ berisiunseen
exampleyaitu contoh yang tidak ada pada _training data_.


```
4.1 Naive Bayes 55
```
```
id outlook temperature humidity windy play ( _class_ )
1 sunny cool high true no
```
```
Tabel 4.4: Contoh testing data _play tennis_ [7]
```
```
_likelihood_ ( _play=yes_ ) =P(yes)P(sunny|yes)P(cool|yes)P(high|yes)
P(true|yes)
```
```
=
```
#### 9

#### 14

#### ∗

#### 2

#### 9

#### ∗

#### 3

#### 9

#### ∗

#### 3

#### 9

#### ∗

#### 3

#### 9

#### = 0. 0053

```
_likelihood_ ( _play=no_ ) =P(no)P(sunny|no)P(cool|no)P(high|no)
P(true|no)
```
```
=
```
#### 5

#### 14

#### ∗

#### 3

#### 5

#### ∗

#### 1

#### 5

#### ∗

#### 4

#### 5

#### ∗

#### 3

#### 5

#### = 0. 0206

```
P _assignment_ ( _play=yes_ ) =
```
```
_likelihood_ ( _play=yes_ )
_likelihood_ ( _play=yes_ ) + likelihood( _play=no_ )
```
```
=
```
#### 0. 0053

#### 0 .0053 + 0. 0206

#### = 0. 205

```
P _assignment_ ( _play=no_ ) =
_likelihood_ ( _play=no_ )
_likelihood_ ( _play=yes_ ) + likelihood( _play=no_ )
```
```
=
```
#### 0. 0206

#### 0 .0053 + 0. 0206

#### = 0. 795

KarenaP _assignment_ ( _play_ =no)> P _assignment_ ( _play_ =yes) maka diputuskan
bahwa kelas untuk _unseen example_ adalah _play=no_. Proses klasifikasi
untuk data baru sama seperti proses klasifikasi untuk _testing data_, yaitu kita
ingin menebak kelas data. Karena model berhasil menebak kelas pada _training_
_data_ dengan tepat, akurasi model adalah 100% (kebetulan contohnya hanya
ada satu).
Perhatikan! Kamu mungkin berpikir kita dapat langsung menggunakan
_likelihood_ untuk mengklasifikasi, karena probabilitas dengan _likelihood_ terbesar
akan dipilih. Hal ini cukup berbahaya apabila _likelihood_ untuk masingmasing
kelas memiliki jarak yang cukup dekat. Sebagai contoh, menghitung
probabilitas apabila (kasus abstrak) _likelihood_ ={ 0. 70 , 0. 60 }, sehingga probabilitas
kelas menjadi={ 0. 54 , 0. 46 }. Karena perbedaan probabilitas kelas relatif
tidak terlalu besar (contoh ini adalah penyederhanaan), kita mungkin harus


56 4 Algoritma Dasar

berpikir kembali untuk mengklasifikasikan _instance_ ke kelas pertama. Hal ini
berkaitan dengan seberapa yakin kamu mengklasifikasikan suatu sampel ke
kelas tertentu. Perbedaan _likelihood_ yang besar menandakan keyakinan, sementara
perbedaan yang tipis menandakan ketidakyakinan.
Perhatikan, jumlah _likelihood_ mungkin lebih dari 1. Sementara, probabilitas
atau jumlahnya berada pada range [0,1] (0 ≤P ≤1). Pada contoh
sebelumnya, nilai _likelihood_ diubah menjadi bentuk probabilitas dengan
menggunakan teknik _softmax_. Fungsi _softmax_ berbentuk seperti pada persamaan
4.2.

