Anda di halaman 1dari 16

Perbandingan Akurasi

dengan Naïve Bayes


Oleh : Diyo Sukma Pradana
Pengertian
Algoritma Naïve Bayes masuk ke dalam teknik klasifikasi berdasarkan dari penerapan teorema
Bayes dengan berasumsi kuat bahwa semua prediktor independen satu sama lain. Berikut
rumus persamaan Bayesian

Keterangan:
P (c | x) = probabilitas posterior kelas (c, target) yang diberikan prediktor (x, atribut).
P (c) = probabilitas kelas sebelumnya.
P (x|c) = kemungkinan yang merupakan probabilitas kelas yang diberikan prediktor.
P (x) = probabilitas prediktor sebelumnya.
Contoh Kasus
Ujang akan menetapkan suatu daerah sebagai lokasi untuk mendirikan perumahan yang berada
di Sukabumi. Dimana telah dihimpun 10 aturan dengan 4 (empat) atribut yang digunakan, yaitu

• C1 = Harga tanah permeter persegi


• C2 = Jarak dari pusat kota
• C3 = Ada tidaknya angkutan umum
• C4 = Keputusan untuk memilih
Penyelesaian
Penyelesaian
Berdasarkan data tersebut, apabila Ujang menginginkan suatu daerah dengan harga tanah
MAHAL, jarak dari pusat kota SEDANG, dan ADA angkutan umum, maka dapat dihitung:
Penyelesaian
Nilai probabilitas dapat dihitung dengan melakukan normalisasi terhadap likelihood tersebut
sehingga jumlah nilai yang diperoleh = 1

Berdasarkan hasil perhitungan di atas, dapat


disimpulkan bahwa Ujang memutuskan untuk
tidak memilih lokasi tersebut untuk mendirikan
perumahan.
Jenis-jenis Naïve Bayes
Ada tiga jenis model Naïve Bayes

1. Gaussian Naïve Bayes


Library ini termasuk golongan Naïve Bayes yang paling simpel yang berasumsi bahwa data
dari masing-masing label diambil dari distribusi Gaussian yang sederhana. Library ini
digunakan untuk akurasi dari metode Collaborative Filtering.
2. Multinomial Naïve Bayes
Klasifikasi Multinomial Naïve Bayes fiturnya diasumsikan mengambil dari distribusi Multinomial
sederhana. Jenis seperti itu paling tepat untuk fitur yang mewakili jumlah diskrit. Library ini
digunakan untuk akurasi dari Content-based Filtering.
3. Bernoulli Naïve Bayes
Bernoulli Naïve Bayes dimana fiturnya diasumsikan biner (0 dan 1).
Praktikum Akurasi Content-based
MultinomialNB, Algoritma yang berfungsi untuk menghitung akurasi prediksi dari sistem rekomendasi, cocok digunakan
untuk data yang bentuknya teks dan memprediksi setiap klasifikasi dari teks-teks tersebut, dalam hal ini menghitung akurasi
CountVectorizer dari kolom bag_of_words terhadap 6 bidang ekstrakurikuler, data dibagi/split 42% untuk train data dan
58% untuk test data

from sklearn.naive_bayes import MultinomialNB

train_cb = pd.read_excel('TRAIN_content.xlsx')
test_cb = pd.read_excel('TEST_content.xlsx')

train_X = train_cb[0]
train_y = train_cb[1]
test_X = test_cb[0]
test_y = test_cb[1]
Praktikum Akurasi Content-based
findf_countvector = CountVectorizer()
X_train_countv = findf_countvector.fit_transform(train_X)
X_test_countv = findf_countvector.fit_transform(test_X)

naive_bayes_classifier_countv = MultinomialNB()
naive_bayes_classifier_countv.fit(X_train_countv,train_y)

from sklearn import metrics


y_pred_countv= naive_bayes_classifier_countv.predict(X_test_countv)
# compute the performance measures

print("accuracy dari countvectorizer:")

print(metrics.classification_report(test_y, y_pred_countv,
target_names=['Akademik & Kebahasaan',
'Bela Negara',
'IT','Kesenian‘,
'Lingkungan Hidup','Olahraga']))
Praktikum Akurasi Content-based
# Import confusion matrix dari sklearn
from sklearn.metrics import confusion_matrix
import seaborn as sns

def display_conf(test_y,y_pred_countv):
sns.heatmap(confusion_matrix(test_y,y_pred_countv),annot=True,linewidths
=3,cbar=False)
plt.title('Confusion Matrix')
plt.ylabel('Actual')
plt.xlabel('Prediction')
plt.show()

# Memanggil fungsi untuk menampilkan visualisasi confusion matrix


display_conf(test_y,y_pred_countv)
Perhitungan Manual
𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 𝑀𝑢𝑙𝑡𝑖𝑐𝑙𝑎𝑠𝑠 Akurasi Content-based =
TP (True Positive),TN (True Negative)
𝑇𝑃 𝐴𝑙𝑙 𝐶𝑙𝑎𝑠𝑠 (62+24+23+30+15+60)/290
FP (False Positive), FN (False Negative) =
𝑇𝑜𝑡𝑎𝑙 𝑆𝑢𝑝𝑝𝑜𝑟𝑡
=214/90 = 0,74

𝑇𝑃 𝑇𝑃
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = 𝑅𝑒𝑐𝑎𝑙𝑙 =
𝑇𝑃 + 𝐹𝑃 𝑇𝑃 + 𝐹𝑁

Pa = TPa/(TPa+FPa) TPa/(TPa+FNa)
= 62/(62+0+4+3+1+5) = 62/(62+5+5+1+1+0) =
= 0,8267 = 0,83 0,8378 = 0,84

F1-score Akademik &


2 × 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 × 𝑅𝑒𝑐𝑎𝑙𝑙 Kebahasaan = 2 x ((Pa x TP FN
𝐹1 − 𝑆𝑐𝑜𝑟𝑒 =
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙 Ra) / (Pa + Ra)) FP TN
= 2 x ((0,83 x 0,84) / (0,83 +
0,84)) = 2 x 0,42 = 0,83
Praktikum Collaborative Filtering
df_gaucol = pd.read_excel('gaucol.xlsx')

Untuk metode Collaborative Filtering sendiri


# Variabel independen
penulis menggunakan Gaussian Naïve Bayes
x2 = df_gaucol.drop(["eskul"], axis = 1)
dikarenakan algoritma Naïve Bayes tipe ini
cocok untuk mengklasifikasikan tipe data yang
y2 =df_gaucol["eskul"] sifatnya diisi oleh pengguna/responden, dalam
kasus ini adalah pengisian dari tes minat bakat,
jika menceklis bernilai 1 jika tidak bernilai 0,
from sklearn.model_selection import data train dan test di bagi masing-masing 60%
train_test_split dan 40%

x_train2, x_test2, y_train2, y_test2 =


train_test_split(x2, y2, test_size = 0.4)
Praktikum Collaborative Filtering
from sklearn.naive_bayes import GaussianNB
modelnb = GaussianNB
nbtrain = modelnb.fit(x_train2, y_train2)

# Menentukan hasil prediksi dari x_test


y_pred2 = nbtrain.predict(x_test2)

np.array(y_test2)

from sklearn.metrics import accuracy_score

print(f'Accuracy Score : {accuracy_score(y_test2,y_pred2)}')


print('Classification Report :')
print(metrics.classification_report(y_test2,y_pred2))
Praktikum Collaborative Filtering
# Import confusion matrix dari sklearn
from sklearn.metrics import confusion_matrix
import seaborn as sns

def display_conf(y_test2,y_pred2):
sns.heatmap(confusion_matrix(y_test2,y_pred2),annot=True,linewidths=3
,cbar=False)
plt.title('Confusion Matrix')
plt.ylabel('Actual')
plt.xlabel('Prediction')
plt.show()

# Memanggil fungsi untuk menampilkan visualisasi confusion matrix


display_conf(y_test2,y_pred2)
Praktikum Collaborative Filtering
from sklearn.model_selection import GridSearchCV
nb_classifier = GaussianNB()

params_NB = {'var_smoothing': np.logspace(0,-9, num=100)}


gs_NB = GridSearchCV(estimator=nb_classifier,
param_grid=params_NB,
cv=5, # use any cross validation technique
verbose=2,
scoring='accuracy')
gs_NB.fit(x_train2, y_train2)

gs_NB.best_params_
Praktikum Collaborative Filtering
# Membuat prediksi dengan model yang telah
ditingkatkan
prediction = gs_NB.predict(x_test2)

# Menampilkan confusion matrix pada prediks


i yang baru
display_conf(y_test2,prediction)

from sklearn.metrics import accuracy_score


print(f'Accuracy Score : {accuracy_score(y_test2,prediction)}')
print('Classification Report :')
print(metrics.classification_report(y_test2,prediction))

Anda mungkin juga menyukai