Big Data Analytics - Naive Bayes Classifier
Naive Bayes adalah teknik probabilistik untuk membangun pengklasifikasi. Asumsi karakteristik pengklasifikasi naive Bayes adalah dengan mempertimbangkan bahwa nilai fitur tertentu tidak bergantung pada nilai fitur lainnya, dengan mempertimbangkan variabel kelas.
Terlepas dari asumsi yang terlalu disederhanakan yang disebutkan sebelumnya, pengklasifikasi Bayes yang naif memiliki hasil yang baik dalam situasi dunia nyata yang kompleks. Keuntungan dari naive Bayes adalah hanya memerlukan sedikit data pelatihan untuk memperkirakan parameter yang diperlukan untuk klasifikasi dan pengklasifikasi dapat dilatih secara bertahap.
Naive Bayes adalah model probabilitas bersyarat: diberi contoh masalah untuk diklasifikasikan, diwakili oleh vektor x= (x 1 ,…, x n ) mewakili beberapa fitur n (variabel independen), ini memberikan probabilitas contoh ini untuk setiap K kemungkinan hasil atau kelas.
$$ p (C_k | x_1, ....., x_n) $$
Masalah dengan rumusan di atas adalah bahwa jika jumlah fitur n besar atau jika fitur dapat mengambil sejumlah besar nilai, maka mendasarkan model seperti itu pada tabel probabilitas tidak layak. Oleh karena itu, kami merumuskan ulang model tersebut untuk membuatnya lebih sederhana. Dengan menggunakan teorema Bayes, probabilitas bersyarat dapat didekomposisi sebagai -
$$ p (C_k | x) = \ frac {p (C_k) p (x | C_k)} {p (x)} $$
Ini berarti bahwa berdasarkan asumsi independensi di atas, distribusi bersyarat atas variabel kelas C adalah -
$$ p (C_k | x_1, ....., x_n) \: = \: \ frac {1} {Z} p (C_k) \ prod_ {i = 1} ^ {n} p (x_i | C_k) $$
dimana bukti Z = p (x) adalah faktor penskalaan yang hanya bergantung pada x 1 ,…, x n , yang merupakan konstanta jika nilai variabel fitur diketahui. Satu aturan umum adalah memilih hipotesis yang paling mungkin; ini dikenal sebagai aturan keputusan a posteriori atau MAP maksimum. Pengklasifikasi yang sesuai, pengklasifikasi Bayes, adalah fungsi yang menetapkan label kelas $ \ hat {y} = C_k $ untuk beberapa k sebagai berikut -
$$ \ hat {y} = argmax \: p (C_k) \ prod_ {i = 1} ^ {n} p (x_i | C_k) $$
Menerapkan algoritme dalam R adalah proses yang mudah. Contoh berikut menunjukkan cara melatih pengklasifikasi Naive Bayes dan menggunakannya untuk prediksi dalam masalah pemfilteran spam.
Skrip berikut tersedia di bda/part3/naive_bayes/naive_bayes.R mengajukan.
# Install these packages
pkgs = c("klaR", "caret", "ElemStatLearn")
install.packages(pkgs)
library('ElemStatLearn')
library("klaR")
library("caret")
# Split the data in training and testing
inx = sample(nrow(spam), round(nrow(spam) * 0.9))
train = spam[inx,]
test = spam[-inx,]
# Define a matrix with features, X_train
# And a vector with class labels, y_train
X_train = train[,-58]
y_train = train$spam
X_test = test[,-58]
y_test = test$spam
# Train the model
nb_model = train(X_train, y_train, method = 'nb',
trControl = trainControl(method = 'cv', number = 3))
# Compute
preds = predict(nb_model$finalModel, X_test)$class
tbl = table(y_test, yhat = preds)
sum(diag(tbl)) / sum(tbl)
# 0.7217391
Seperti yang bisa kita lihat dari hasil, akurasi model Naive Bayes adalah 72%. Ini berarti model mengklasifikasikan 72% instance dengan benar.