Naive Bayes


K-means Clustering merupakan salah satu metode data clustering non hirarki yang berusaha mempartisi data yang ada ke dalam satu atau lebih cluster/kelompok. Metode ini mempartisi data ke dalam cluster/kelompok sehingga data yang memiliki karakteristik yang sama dikelompokkan ke dalam satu cluster yang sama dan data yang mempunyai karakteristik yang berbeda dikelompokkan ke dalam kelompok yang lain.

Sedangkan Naive Bayes Classifier merupakan salah satu metode machine learning yang memanfaatkan perhitungan probabilitas dan statistik. Metode ini dikemukakan oleh ilmuwan Inggris yaitu Thomas Bayes untuk memprediksi probabilitas di masa depan berdasarkan pengalaman di masa sebelumnya.

Berikut ini merupakan pemrograman matlab (menggunakan Matlab R2015b) mengenai pola tekstur citra menggunakan algoritma k means clustering dan naive bayes classifier. Citra yang digunakan adalah citra tekstur Brodatz sejumlah 112 buah seperti tampak pada gambar di bawah ini:

1

Langkah pertama yang dilakukan adalah melakukan ekstraksi ciri tekstur citra menggunakan metode Gray Level Co-Occurence Matrix (GLCM). Metode ini pertama kali dikenalkan oleh Robert M Haralick (bersama dengan K. Shanmugam and I. Dinstein) dalam publikasi yang berjudul “Textural Features for Image Classification” pada IEEE Transactions on Systems, Man, and Cybernetics, Vol. SMC-3, No. 6, November 1973, pp. 610-621. Prinsip dari metode ini yaitu menghitung probabilitas hubungan ketetanggaan antara dua piksel pada jarak dan orientasi sudut tertentu. Pendekatan ini bekerja dengan membentuk sebuah matriks kookurensi dari data citra, dilanjutkan dengan menentukan ciri sebagai fungsi dari matriks antara tersebut.

Kookurensi berarti kejadian bersama, yaitu jumlah kejadian satu level nilai piksel bertetangga dengan satu level nilai piksel lain dalam jarak (d) dan orientasi sudut (θ) tertentu. Jarak dinyatakan dalam piksel dan orientasi dinyatakan dalam derajat. Orientasi dibentuk dalam empat arah sudut dengan interval sudut 45º , yaitu 0º, 45º, 90º, dan 135º. Sedangkan jarak antar piksel dapat ditetapkan sebesar 1 piksel, 2 piksel, atau lebih.

Matriks kookurensi merupakan matriks bujursangkar dengan jumlah elemen sebanyak kuadrat jumlah level intensitas piksel pada citra. Setiap titik (p,q) pada matriks kookurensi berorientasi  berisi peluang kejadian piksel bernilai p bertetangga dengan piksel bernilai q pada jarak d serta orientasi θ dan (180º-θ).

Parameter tekstur yang dapat diekstrak dengan metode GLCM adalah angular second moment, contrast, correlation, variance, inverse difference moment, sum average, sum variance, sum entropy, entropy, difference variance, difference entropy, dan information measures of correlation.

Namun pada contoh ini, hanya menggunakan dua parameter yaitu contrast dan correlation. Kedua parameter tersebut dijadikan sebagai nilai masukan dalam algoritma k means dan naive bayes.

Algoritma k means digunakan untuk mengkluster 112 citra tekstur brodatz menjadi tiga kelompok.

Sedangkan algoritma naive bayes digunakan untuk mengklasifikasikan citra dengan target berupa kelas keluaran dari algoritma k means.

Hasil keluaran algoritma naive bayes kemudian dibandingkan dengan hasil keluaran pada algoritma k means sehingga diperoleh nilai akurasi.

Koding untuk membaca citra, melakukan ekstraksi ciri tekstur, dan clustering adalah sebagai berikut:

clc;clear;close all;

image_folder = 'Original Brodatz';
filenames = dir(fullfile(image_folder, '*.gif'));
total_images = numel(filenames);

for n = 1:total_images
full_name = fullfile(image_folder, filenames(n).name);
Img = imread(full_name);
GLCM = graycomatrix(Img,'Offset',[0 1; -1 1; -1 0; -1 -1]);
stats = graycoprops(GLCM,{'contrast','correlation','energy','homogeneity'});
CON(n) = mean(stats.Contrast);
CORR(n) = mean(stats.Correlation);
X = [CON;CORR]';
end

opts = statset('Display','final');
[idx,C] = kmeans(X,3,'Distance','sqeuclidean',...
'Replicates',5,'Options',opts);

figure;
plot(X(idx==2,1),X(idx==2,2),'r.','MarkerSize',24)
hold on
plot(X(idx==1,1),X(idx==1,2),'g.','MarkerSize',24)
plot(X(idx==3,1),X(idx==3,2),'b.','MarkerSize',24)
plot(C(:,1),C(:,2),'kx',...
'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Cluster 3','Centroids',...
'Location','best')
title('Cluster Assignments and Centroids')
xlabel('Contrast')
ylabel('Correlation')
h = gca;
xlim(h.XLim+.5*[-1,1])
ylim(h.YLim+.5*[-1,1])
hold off

sehingga diperoleh grafik keluaran seperti pada gambar berikut:

2

Grafik di atas menunjukkan bahwa algoritma k means telah mengelompokkan 112 citra tekstur brodatz menjadi tiga kelompok (Cluster 1, Cluster 2, dan Cluster 3).

Kemudian kelompok pada masing-masing citra tersebut dijadikan sebagai target keluaran pada algoritma naive bayes untuk melakukan klasifikasi.

Koding untuk melakukan klasifikasi menggunakan algoritma naive bayes adalah:

Y = cell(numel(idx),1);
for n = 1:numel(Y)
if idx(n,:) == 1
Y{n,:} = 'Cluster 1';
elseif idx(n,:) == 2
Y{n,:} = 'Cluster 2';
else
Y{n,:} = 'Cluster 3';
end
end

Mdl = fitcnb(X,Y);

figure
gscatter(X(:,1),X(:,2),Y);
h = gca;
xylim = [h.XLim h.YLim]; % Get current axis limits
hold on
Params = cell2mat(Mdl.DistributionParameters);
Mu = Params(2*(1:3)-1,1:2); % Extract the means
Sigma = zeros(2,2,3);
for j = 1:3
Sigma(:,:,j) = diag(Params(2*j,:)); % Extract the standard deviations
ezcontour(@(x1,x2)mvnpdf([x1,x2],Mu(j,:),Sigma(:,:,j)),...
xylim+0.5*[-1,1,-1,1]) ...
% Draw contours for the multivariate normal distributions
end
title('Naive Bayes Classifier')
xlabel('Contrast')
ylabel('Correlation')
legend('Cluster 1','Cluster 2','Cluster 3',...
'Location','best')
hold off

isLabels = resubPredict(Mdl);

accuracy = sum(strcmp(isLabels,Y))/numel(Y)*100

sehingga diperoleh grafik keluaran seperti pada gambar di bawah ini:
3

Grafik tersebut menunjukkan bahwa algoritma naive bayes telah mengklasifikasikan citra tekstur pada masing-masing.kelompok/kelas.

Sebagai validasi, kelas keluaran dari algoritma naive bayes kemudian dibandingkan dengan kelas keluaran dari algoritma k means.

Pada kelas keluaran algoritma naive bayes terdapat 108 citra yang memiliki kelas yang sama dengan kelas keluaran dari algoritma k means sehingga diperoeh akurasi sebesar 108/112*100 = 96.4286%.

Nilai akurasi tersebut menunjukkan bahwa algoritma naive bayes mampu mengklasifikasi citra tekstur dengan sangat baik.

Source code dan citra tekstur brodatz pada pengenalan pola di atas dapat diunduh pada laman berikut: link

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: