Jika memang kewajibannya hanya boleh menggunakan algoritma klasifikasi SVM, maka kita tidak bisa menyentuh bagian model akhirnya. Namun, hasil ini masih jauh dari kata optimal.
Dalam Machine Learning klasik seperti SVM, pepatah yang berlaku adalah "Garbage In, Garbage Out" atau performa SVM sangat bergantung pada seberapa bagus fitur yang Anda berikan (bukan pada algoritma SVM itu sendiri).
Agar metode SVM di notebook tersebut mencapai titik optimal, Anda harus melakukan perombakan di tahap Ekstraksi Fitur (Feature Engineering). Berikut saran untuk memaksimalkan akurasinya:
GLCM hanya mengekstrak tekstur. Padahal, mata kita membedakan sampah organik dan anorganik dari 3 hal: Tekstur, Warna, dan Bentuk. Anda perlu menggabungkan ketiganya menjadi satu vektor fitur sebelum dimasukkan ke SVM ( Fitur_Total = [Fitur_Tekstur, Fitur_Warna, Fitur_Bentuk] ):
• Fitur Bentuk (Shape) -> Tambahkan HOG (Histogram of Oriented Gradients) Gunakan skimage.feature.hog . HOG sangat ampuh untuk membaca garis luar benda. Ini akan membantu SVM membedakan bentuk botol plastik/kardus kotak (anorganik) dengan dedaunan/sisa makanan yang bentuknya acak (organik). • Fitur Warna (Color) -> Tambahkan Color Histogram (HSV) Ubah gambar asli ke ruang warna HSV (Hue, Saturation, Value), lalu ambil distribusi warnanya menggunakan cv2.calcHist . Warna cokelat/hijau (organik) akan langsung terpisah tegas dari warna-warni plastik/logam (anorganik) oleh SVM.
Di kode saat ini, setelah background dihapus ( rembg ), background dijadikan putih. Jika Anda menghitung GLCM atau Histogram dari gambar yang 70% isinya warna putih, fitur objeknya akan "tertutup" oleh fitur background putihnya. Solusi: Buat masking dari background tersebut. Saat mengekstrak warna (histogram) atau menghitung rata-rata GLCM, pastikan kodenya hanya menghitung piksel yang bukan background.
Jika Anda menggabungkan GLCM (12 fitur) + Histogram Warna (misal 50 fitur) + HOG (misal 500 fitur), jumlah fiturnya akan membengkak. Karena Anda memakai SVM, gunakan PCA (Principal Component Analysis) dari library sklearn.decomposition untuk memadatkan fitur tersebut (misalnya menjadi 50-100 fitur utama terbaik) sebelum dimasukkan ke GridSearchCV SVM. Ini mencegah SVM mengalami penurunan performa akibat terlalu banyak dimensi tak berguna (curse of dimensionality).
Pastikan di GridSearchCV SVM Anda menambahkan parameter pembobotan kelas, terutama jika jumlah gambar organik dan anorganik di dataset tidak sama persis.
Kesimpulan: Jika Anda hanya menambahkan HOG dan Color Histogram di samping GLCM, lalu menggabungkannya untuk dilatih oleh SVM, Anda kemungkinan besar bisa mendorong akurasinya naik menembus 90%-95%. Saat ini, hanya mengandalkan 12 fitur tekstur GLCM untuk mengenali seluruh jenis sampah adalah pendekatan yang under- fitting (terlalu sederhana).