Optimasi SVM untuk Klasifikasi Warna: Investigasi Terhadap Pengaruh Fungsi Kernel dan Penyetelan Parameter
on
JNATIA Volume 1, Nomor 4, Agustus 2023
Jurnal Nasional Teknologi Informasi dan Aplikasinya
p-ISSN: 2986-3929
Optimasi SVM untuk Klasifikasi Warna: Investigasi Terhadap Pengaruh Fungsi Kernel dan Penyetelan Parameter
Pande Gede Dani Wismagathaa1, I Wayan Santiyasaa2
aProgram Studi Informatika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Udayana
Jalan Raya Kampus Udayana, Bukit Jimbaran, Kuta Selatan, Badung, Bali Indonesia 1pandedani@student.unud.ac.id 2santiyasa@unud.ac.id
Abstract
Color plays a crucial role in visual applications such as object recognition, image processing, computer vision, and computer graphics. Support Vector Machine (SVM) algorithms have gained attention for color classification due to their ability to handle complex data. SVM, a machine learning algorithm for classification and regression, aims to find optimal decision boundaries. In color classification using SVM, color data is represented by feature vectors, and SVM learns patterns to classify colors accurately. The SVM algorithm demonstrates a high accuracy rate, with an average accuracy of approximately 85% in color detection. This indicates the SVM's ability to effectively separate and classify colors with precision. SVM is proven to be effective in handling non-linear color data by utilizing kernel functions to transform the feature space into higher dimensions, enabling accurate classification of complex color data. The outstanding performance of the SVM algorithm in color detection presents vast potential applications in color recognition, image processing, computer vision, and computer graphics. SVM offers accurate and reliable solutions for object classification based on color characteristics in various contexts.
Keywords: Color classification, SVM, Image processing, Machine Learning
Warna adalah salah satu aspek penting dalam dunia visual dan memiliki peran yang signifikan dalam berbagai aplikasi, termasuk pengenalan objek, pengolahan citra, visi komputer, dan grafika komputer. Klasifikasi warna adalah suatu proses untuk mengelompokkan objek atau piksel berdasarkan karakteristik warnanya. Penggunaan algoritma Support Vector Machine (SVM) dalam klasifikasi warna menjadi subjek penelitian yang menarik karena kemampuannya dalam membedakan dan mengklasifikasikan data yang kompleks[1]. Support Vector Machine (SVM) merupakan algoritma machine learning yang dapat digunakan untuk klasifikasi ataupun regresi. SVM bertujuan untuk menemukan batas keputusan optimal antara dua atau lebih kelas dengan menggunakan konsep margin maksimal. SVM mampu mengklasifikasikan data dengan baik, terutama dalam kasus-kasus di mana data tidak terpisah secara linear di ruang fitur[2]. Dalam klasifikasi warna menggunakan SVM, data warna diwakili oleh vektor fitur yang terdiri dari komponen warna dalam model warna tertentu. Contohnya, dalam model warna RGB, vektor fitur terdiri dari intensitas merah (R), hijau (G), dan biru (B). SVM kemudian mempelajari pola-pola dalam vektor fitur tersebut untuk memisahkan dan mengklasifikasikan warna dengan akurasi yang tinggi. Metode klasifikasi warna menggunakan SVM memiliki beberapa keuntungan. Pertama, SVM mampu mengatasi data yang tidak linier, dengan menggunakan fungsi kernel untuk mengubah ruang fitur menjadi ruang dimensi yang lebih tinggi. Hal ini memungkinkan SVM untuk mengklasifikasikan data warna yang kompleks dengan presisi yang tinggi. Kedua, SVM mampu menangani data dengan dimensi tinggi, yang sering terjadi dalam representasi warna. SVM dapat memilih fitur-fitur yang relevan dan mengabaikan fitur-fitur yang tidak penting, sehingga meningkatkan efisiensi dan akurasi klasifikasi[3]. Penelitian ini bertujuan untuk mengklasifikasikan warna dengan pend Ekatan SVM Bagdasarian fitur-fitur warna dalam model
warna tertentu, seperti RGB. Metode SVM akan digunakan untuk mempelajari pola-pola dalam vektor fitur warna dan menghasilkan model klasifikasi yang dapat mengklasifikasikan warna dengan akurasi tinggi. Selain itu, penelitian ini juga akan melakukan analisis perbandingan antara beberapa metode terkait dalam klasifikasi warna menggunakan SVM untuk mengetahui kesamaan dan perbedaan dari metode-metode yang digunakan[4]. Diharapkan penelitian ini dapat memberikan kontribusi dalam pengembangan teknik klasifikasi warna dengan menggunakan algoritma SVM. Hasil penelitian ini diharapkan dapat meningkatkan akurasi dan efisiensi dalam pengenalan warna dalam berbagai aplikasi, seperti pengolahan citra, visi komputer, dan grafika komputer.
Tahapan-tahapan dalam pelaksanaan penelitian dapat dilihat pada gambar berikut.
Gambar 1. Tahapan Pelaksanaan Penelitian
Berdasarkan gambar 1, tahap-tahap yang dilakukan dalam penelitian ini terdiri atas pengumpulan data, preprocessing, pengolahan data, pembagian data menjadi data latih (train) dan data uji (test), memasukkan data ke model kemudian mencari parameter terbaik untuk menghasilkan hasil yang terbaik.
-
a. Pengumpulan Data
Data diambil dari dataset pada laman kaggle yang dapat diakses menggunakan link berikut https://www.kaggle.com/datasets/ayanzadeh93/color-classification.
Dataset ini merupakan dataset 9 Jenis warna dengan total gambar berjumlah 107 data latih dan 96 data uji.
-
b. Pre-processing Data
Pada proses ini data diubah menjadi sebuah matriks dengan representasi angka. Kemudian, data yang telah diolah dapat digunakan untuk melatih dan menguji model klasifikasi.
-
c. Pengolahan Data
Pengolahan data dilakukan dengan memisahkan dataset yang telah melewati tahap sebelumnya/Pre-processing menjadi 2 (dua) yaitu data uji (train) dan data latih (test) lalu dijalankan pada algoritma Support Vector Machine (SVM). Berikut adalah cara kerja algoritma Support Vector Machine (SVM).
-
1. Support Vector Machine
Support Vector Machine (SVM) yaitu sistem pembelajaran yang menggunakan fungsi-fungsi linier dalam sebuah fitur yang berdimensi tinggi kemudian dilatih dengan menggunakan algoritma pembelajaran yang didasarkan pada teori optimasi. Akurasi yang dihasilkan oleh model pada algoritma ini sangatlah bergantung dengan penentuan parameter dan fungsi kernel yang digunakan. Algoritma SVM dapat dibedakan menjadi 2 (dua) yaitu SVM linear dan SVM non-linear. SVM linear digunakan untuk mengolah data yang dapat dipisahkan secara linear sedangkan SVM non-linear digunakan untuk data yang tidak bisa dibedakan secara linear sehingga menggunakan kernel untuk memisahkannya.
Dataset yang digunakan pada penelitian ini diperoleh dari salah satu dataset kaggle yang dibuat oleh Aydin Ayanzadeh dalam bentuk image (gambar). Pada dataset terdapat 107 gambar yang dibagi menjadi 9 klasifikasi gambar berbeda dan 96 tanpa label. Berikut adalah contoh gambar data uji. Peneliti menggunakan 107 gambar yang memilki label untuk memprediksi akurasi dari algoritma SVM.
Dataset yang digunakan dalam penelitian ini masih harus diubah menjadi sebuah nilai numerik agar mesin dapat mengerti akan masukan yang digunakan. Serta dataset harus diperiksa kembali guna mencari kesalahan klasifikasi pada data uji. Berikut ini contoh data yang telah diubah menjadi nilai numerikal yang dapat dimengerti mesin.
Gambar 2. Data Gambar
[[[255 255 255] [255 255 255] [255 255 255]
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255] [255 255 255]
[255 255 255]
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255] [255 255 255] [255 255 255]
[255 255 255] [255 255 255] [255 255 255]]
[255 255 255]
[255 255 255]
[255 255 255]]]
Gambar 3. Data Numerik
Setelah melaksanakan konversi citra menjadi representasi data numerik, diperlukan tahapan penyesuaian ukuran pada seluruh data uji untuk memastikan konsistensi dimensi data. Resize (penyesuaian ukuran) pada gambar dalam machine learning merujuk pada proses mengubah dimensi fisik (ukuran) gambar menjadi ukuran yang ditentukan sebelum digunakan dalam model machine learning. Proses resize ini biasanya dilakukan untuk memastikan bahwa semua gambar memiliki dimensi yang seragam, sehingga mempermudah pemrosesan dan analisis dalam algoritma machine learning. Resize pada gambar melibatkan perubahan ukuran gambar secara proporsional, baik secara peningkatan (upscaling) maupun penurunan (downscaling) ukuran
gambar. Hal ini dapat dilakukan dengan menggunakan metode atau algoritma yang berbeda, seperti metode bilinear, metode nearest neighbor, atau metode bicubic. Tujuan utama dari resize gambar dalam konteks machine learning adalah untuk mencapai konsistensi ukuran gambar, sehingga memungkinkan model machine learning untuk memproses dan mempelajari fitur-fitur yang terdapat pada gambar dengan cara yang seragam. Resize juga dapat membantu mengurangi beban komputasi dan memori yang diperlukan dalam proses pelatihan model, terutama ketika menghadapi dataset gambar dengan variasi ukuran yang berbeda-beda[5]. Berikut adalah contoh gambar setelah proses resize.
Gambar 4. Gambar setelah proses resize.
Pada tahap selanjutnya data uji akan dibagi menjadi 2 tipe data yaitu data latih (train) dan data uji (test). Data yang digunakan sebagai data latih (train) sebanyak 80% dan data uji (test) sebanyak 20%. Namun sebelum itu, data warna dan label dipisah terlebih dahulu ke dalam sebuah variabel agar lebih mudah digunakan kedepannya. Berikut adalah potongan kode untuk memisahkan data warna dan label.
Tabel 1. Kode untuk memisahkan data warna dan label
X = [] y = []
for data_warna,label in training_list: X.append(data_warna) y.append(label)
Kemudian, data warna yang sebelumnya berupa matriks dengan dimensi 200x200 (setelah resize) perlu diubah menjadi sebuah matriks 1 dimensi. Berikut adalah potongan kode yang dapat digunakan untuk mengubah dimensi matriks.
Tabel 2. Kode untuk mengubah dimensi matriks menjadi 1 dimensi
X = np.array(X).reshape(len(X),-1
Setelah data warna menjadi 1 dimensi, kedua data warna dan label dipisah menjadi 2 (dua) tipe data yang telah disebutkan sebelumnya yaitu 80% dan 20%. Berikut potongan kode untuk membagi dataset.
Tabel 3. Kode untuk memisahkan data menjasi data latih dan data uji
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, train_size=0.8, test_size=0.2)
Kemudian proses dilanjutkan ke proses klasifikasi, proses klasifikasi memerlukan beberapa modules antara lain:
Tabel 4. Import modules untuk proses klasifikasi
from sklearn.svm import SVC
from tqdm import tqdm
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
Kemudian, proses dilanjutkan dengan memanggil algoritma pertama yaitu SVC (Support Vector Classifier). Peneliti membuat sebuah fungsi yang akan memanggil SVC dengan kernel, C (Parameter Regularisasi), gamma (koefisien kernel) dan decision function shape (bentuk fungsi keputusan) yang beragam dengan parameter awal kernel = linear, C = 0.1, gamma = scale dan decision function shape = ovo.
Tabel 5. Fungsi SVC (Support Vector Classifier)
def svm_train(kernel:str='linear', C:float=1.0, gamma:str='scale', literal:str='ovo'): svc = SVC(kernel=kernel, C=C)
svc.fit(X_train, y_train)
y2 = svc.predict(X_test)
return accuracy_score(y_test, y2)
Kemudian peneliti membuat sebuah fungsi baru untuk memanggil kernel, C, gamma, dan decision function shape yang berbeda-beda guna membandingkan akurasi yang dihasilkan. Berikut adalah potongan kode yang dapat digunakan.
Tabel 6. Fungsi pemanggilan SVC
def get_svm(gamma:str='scale', literal:str='ovo'):
df = pd.DataFrame(columns=['kernel', 'C', 'accuracy','gamma','decision_function_shape']) for x in tqdm([0.1, 1, 10, 100, 1000]):
for y in ['linear', 'poly', 'rbf', 'sigmoid']:
acc = svm_train(y, x, gamma, literal)
df = df.append({'kernel': y, 'C': x, 'accuracy': acc, 'gamma': gamma,
'decision_function_shape':literal}, ignore_index=True)
return df
Peneliti menjalankan fungsi dengan beberapa variasi yang ada. Berikut adalah hasil yang didapatkan.
accuracy C gamma decision function shape kernel 0.1 scale ovo linear 0.851852 poly 0.592593 rbf 0.333333 sigmoid 0.185185 1.0 scale ovo linear 0.851852 poly 0.703704 rbf 0.777778 sigmoid 0.074074 10.0 scale ovo linear 0.851852 poly 0.703704 rbf 0.814815 sigmoid 0.000000 100.0 scale ovo linear 0.851852 poly 0.740741 rbf 0.814815 sigmoid 0.037037 1000.0 scale ovo linear 0.851852 poly 0./////8 rbf 0.814815 sigmoid 0.148148 |
accuracy C gamma decision_function_shape kernel 0.1 auto ovo linear 0.851852 poly 0.592593 rbf 0.333333 sigmoid 0.185185 1.0 auto ovo linear 0.851852 poly 0.703704 rbf 0.∕∕∕∕∕8 sigmoid 0.074074 10.0 auto ovo linear 0.851852 poly 0.703704 rbf 0.814815 sigmoid 0.000000 100.0 auto ovo linear 0.851852 poly 0.740741 rbf 0.814815 sigmoid 0.037037 1000.0 auto ovo linear 0.851852 poly 0.777778 rbf 0.814815 sigmoid 0.148148 |
Gambar 5. Perbandingan hasil akurasi SVC dengan mengubah parameter gamma dan decision function shape bernilai ovo (one-vs-one)
Gambar 6. Perbandingan hasil akurasi SVC dengan mengubah parameter gamma dan decision function shape bernilai ovr (one-vr-rest)
Dengan menjalankan program tersebut, peneliti dapat mengambil hasil terbaik yang ada pada tiap perubahan parameter. Berikut adalah tabel parameter yang mendapat akurasi paling tinggi.
kernel |
C |
accuracy |
gamma |
decision function shape | |
O |
linear |
0.1 |
0.851852 |
scale |
OVO |
1 |
linear |
1.0 |
0.851852 |
scale |
OVO |
2 |
linear |
10.0 |
0.851852 |
scale |
OVO |
3 |
linear |
100.0 |
0.851852 |
scale |
OVO |
4 |
linear |
1000.0 |
0.851852 |
scale |
OVO |
5 |
linear |
0.1 |
0.851852 |
auto |
OVO |
6 |
linear |
1.0 |
0.851852 |
auto |
OVO |
7 |
linear |
10.0 |
0.851852 |
auto |
OVO |
8 |
linear |
100.0 |
0.851852 |
auto |
OVO |
9 |
linear |
1000.0 |
0.851852 |
auto |
OVO |
W |
linear |
0.1 |
0.851852 |
scale |
ovr |
11 |
linear |
1.0 |
0.851852 |
scale |
ovr |
12 |
linear |
10.0 |
0.851852 |
scale |
ovr |
13 |
linear |
100.0 |
0.851852 |
scale |
ovr |
14 |
linear |
1000.0 |
0.851852 |
scale |
ovr |
15 |
linear |
0.1 |
0.851852 |
auto |
ovr |
16 |
linear |
1.0 |
0.851852 |
auto |
ovr |
17 |
linear |
10.0 |
0.851852 |
auto |
ovr |
18 |
linear |
100.0 |
0.851852 |
auto |
ovr |
19 |
linear |
1000.0 |
0.851852 |
auto |
ovr |
Gambar 7. Akurasi terbaik saat menjalankan fungsi SVC
Semua data yang memiliki akurasi terbaik berasal dari kernel yang sama walaupun dengan menggunakan parameter yang berbeda. Maka dari itu, peneliti mencoba mencari laporan klasifikasi yang dijalankan oleh mesin dan mendapatkan hasil berkut.
precision |
recall |
fl-score |
support | |
Black |
1.0Θ |
1.00 |
1.00 |
B |
Blue |
1.00 |
0.67 |
0.80 |
3 |
Brown |
0.62 |
1.00 |
0.77 |
5 |
Green |
1.00 |
1.00 |
1.00 |
2 |
Violet |
1.00 |
0.67 |
0.80 |
B |
White |
0.80 |
1.00 |
0.89 |
4 |
orange |
1.00 |
0.50 |
0.67 |
2 |
red |
1.00 |
0.67 |
0.80 |
3 |
yellow |
1.00 |
1.00 |
1.00 |
2 |
accuracy |
0.85 |
27 | ||
macro avg |
0.94 |
0.83 |
0.86 |
27 |
weighted avg |
0.90 |
0.85 |
0.85 |
27 |
Gambar 8. Classification Report kernel linear
Algoritma SVM menunjukkan tingkat akurasi yang tinggi dalam mendeteksi warna. Berdasarkan pengujian yang dilakukan, algoritma SVM mencapai tingkat akurasi rata-rata sekitar 85%. Hal ini menunjukkan kemampuan SVM untuk memisahkan dan mengklasifikasikan warna dengan presisi yang baik. Algoritma deteksi warna berbasis Support Vector Machine (SVM) menunjukkan hasil yang menjanjikan dengan tingkat presisi, recall, dan F1-score yang tinggi. Presisi sebesar 90% mengindikasikan kemampuan algoritma dalam mengklasifikasikan warna dengan akurasi tinggi, dengan minimalisasi hasil positif palsu. Recall sebesar 85% menunjukkan kemampuan algoritma dalam mengidentifikasi dan menangkap instansi positif sebenarnya dari warna. F1-score sebesar 85% juga menunjukkan kinerja yang baik secara keseluruhan dalam deteksi warna. SVM terbukti efektif dalam menangani data warna yang tidak terpisah secara linier. Dengan menggunakan fungsi kernel, SVM dapat mentransformasikan ruang fitur menjadi ruang dimensi yang lebih tinggi, sehingga memungkinkan SVM untuk mengklasifikasikan data warna yang kompleks dengan akurasi yang tinggi. Dengan kinerja yang baik dalam mendeteksi warna, algoritma SVM memiliki potensi aplikasi yang luas dalam bidang pengenalan warna, pengolahan citra, visi komputer, dan grafika komputer. Dalam berbagai konteks, SVM dapat memberikan solusi yang akurat dan handal dalam mengklasifikasikan objek berdasarkan warnany
Daftar Pustaka
-
[1] M. F. Naufal, “ANALISIS PERBANDINGAN ALGORITMA SVM, KNN, DAN CNN UNTUK
KLASIFIKASI CITRA CUACA”, doi: 10.25126/jtiik.202184553.
-
[2] W. Styorini and dan Wahyuni Khabzli, “Jurnal Politeknik Caltex Riau Analisis
Perbandingan Machine Learning SVM Dan Adaboost Face Detection Dengan Metode Viola Jones,” 2018. [Online]. Available: http://jurnal.pcr.ac.id|
-
[3] M. Fahmi and I. Suhartana, “Perbandingan Algoritma Decision Tree Dan Support Vector
Machine Dalam Prediksi Kualitas Udara,” 2022. [Online]. Available: https://data.jakarta.go.id/.
-
[4] R. L. Thiosdor, K. Gunadi, and L. P. Dewi, “Implementasi Program Presensi Mahasiswa
dengan menggunakan Face Recognition.”
-
[5] A. Krizhevsky, I. Sutskever, and G. E. Hinton, “ImageNet Classification with Deep
Convolutional Neural Networks.” [Online]. Available: http://code.google.com/p/cuda-convnet/
Halaman ini sengaja dibiarkan kosong
1140
Discussion and feedback