Imbalanced data adalah kondisi di mana distribusi kelas dalam dataset tidak seimbang, dengan satu kelas (mayoritas) memiliki jumlah sampel yang jauh lebih banyak daripada kelas lainnya (minoritas). Hal ini sering terjadi dalam berbagai kasus seperti deteksi penipuan, diagnosis penyakit langka, atau deteksi anomali. Masalah ini dapat menyebabkan model machine learning menjadi bias dan tidak efektif dalam memprediksi kelas minoritas.
Dalam dunia machine learning, kita sering berhadapan dengan dataset yang tidak seimbang atau imbalanced data. Bayangkan Anda memiliki dataset transaksi kartu kredit, di mana sebagian besar transaksi adalah transaksi normal (kelas mayoritas), dan hanya sebagian kecil yang merupakan penipuan (kelas minoritas). Inilah yang dimaksud dengan imbalanced data: proporsi antara kelas yang satu dengan yang lain sangat timpang.
Perbedaan yang mencolok ini menjadi masalah dalam machine learning karena model cenderung “belajar” lebih banyak dari kelas mayoritas. Akibatnya, model akan lebih baik dalam memprediksi kelas mayoritas (transaksi normal) dan sering kali mengabaikan kelas minoritas (transaksi penipuan). Hal ini tentu tidak ideal, terutama dalam kasus-kasus di mana kelas minoritas justru yang paling penting untuk dideteksi, seperti dalam contoh deteksi penipuan atau diagnosis penyakit.
Baca juga: AI Deteksi Fraud Kartu Kredit Cara Kerja & Manfaatnya
Secara ringkas, artikel ini akan membahas beberapa solusi untuk mengatasi masalah imbalanced data, yaitu:
- Resampling: Meliputi oversampling (menambah data pada kelas minoritas), undersampling (mengurangi data pada kelas mayoritas), dan SMOTE (Synthetic Minority Over-sampling Technique).
- Cost-Sensitive Learning: Memberikan “bobot” yang berbeda pada setiap kelas saat melatih model.
Mengapa Imbalanced Data Menjadi Masalah?
Imbalanced data menyebabkan model machine learning menjadi bias terhadap kelas mayoritas. Model cenderung menganggap kelas minoritas sebagai noise atau tidak penting, sehingga hasil prediksinya akan didominasi oleh kelas mayoritas. Ini adalah inti dari masalah “klasifikasi data tidak seimbang”.
Dampak negatifnya bisa dilihat dari metrik evaluasi. Misalnya, akurasi bisa memberikan kesan yang salah. Bayangkan sebuah model memprediksi semua transaksi sebagai “normal” pada dataset dengan 95% transaksi normal dan 5% penipuan. Model ini akan memiliki akurasi 95%, tetapi sebenarnya tidak berguna karena gagal mendeteksi penipuan sama sekali!
Oleh karena itu, metrik seperti presisi, recall, F1-score, dan precision-recall curve lebih informatif untuk imbalanced data.
Baca juga: Panduan Lengkap Metrik Evaluasi Model Klasifikasi (Accuracy, Precision, Recall, F1, AUC)
- Presisi: Seberapa akurat prediksi positif model? (Dari semua transaksi yang diprediksi sebagai penipuan, berapa banyak yang benar-benar penipuan?)
- Recall: Seberapa baik model mendeteksi semua kasus positif yang sebenarnya? (Dari semua transaksi penipuan yang sebenarnya, berapa banyak yang berhasil dideteksi oleh model?)
- F1-score: Rata-rata harmonis antara presisi dan recall.
- Precision-Recall Curve: Grafik yang menunjukkan trade-off antara presisi dan recall pada berbagai ambang batas (threshold) prediksi.
Dengan memahami metrik-metrik ini, kita bisa menyadari bahwa menangani “evaluasi model machine learning pada data tidak seimbang” sangat krusial. Tanpa penanganan yang tepat, kita berisiko mendapatkan model yang terlihat bagus secara statistik, tetapi buruk dalam praktiknya.
Teknik Resampling untuk Imbalanced Data
Resampling adalah teknik mengubah komposisi dataset untuk mencapai keseimbangan yang lebih baik antar kelas. Ada dua pendekatan utama:
Oversampling
Oversampling bertujuan untuk menambah jumlah sampel pada kelas minoritas. Salah satu metode sederhana adalah Random Oversampling, di mana sampel dari kelas minoritas diduplikasi secara acak.
- Konsep: Menambah sampel kelas minoritas.
- Metode: Random Oversampling (duplikasi acak).
- Kelebihan: Sederhana, mudah diimplementasikan.
- Kekurangan: Dapat menyebabkan overfitting karena model “mempelajari” data yang sama berulang-ulang.
Undersampling
Undersampling adalah kebalikan dari oversampling. Teknik ini mengurangi jumlah sampel pada kelas mayoritas. Random Undersampling adalah metode yang paling sederhana, di mana sampel dari kelas mayoritas dihapus secara acak.
- Konsep: Mengurangi sampel kelas mayoritas.
- Metode: Random Undersampling (penghapusan acak).
- Kelebihan: Sederhana, mengurangi waktu komputasi.
- Kekurangan: Dapat menghilangkan informasi penting dari kelas mayoritas.
SMOTE (Synthetic Minority Over-sampling Technique)
SMOTE adalah teknik oversampling yang lebih canggih. Alih-alih hanya menduplikasi sampel, SMOTE membuat sampel sintetis baru berdasarkan sampel yang sudah ada.
- Cara Kerja:
- Pilih sampel acak dari kelas minoritas.
- Cari k tetangga terdekat (nearest neighbors) dari sampel tersebut (biasanya menggunakan jarak Euclidean).
- Pilih salah satu tetangga secara acak.
- Buat sampel sintetis baru di antara sampel asli dan tetangga yang dipilih, dengan cara menginterpolasi fitur-fiturnya.
- Kapan Digunakan: SMOTE lebih baik daripada random oversampling ketika kita ingin menghindari overfitting dan menghasilkan variasi data yang lebih baik.
- Kelebihan: Mengurangi risiko overfitting, menghasilkan data sintetis yang lebih “realistis”.
- Kekurangan: Lebih kompleks, membutuhkan waktu komputasi lebih lama. Tidak efektif untuk data dengan dimensi sangat tinggi (“SMOTE untuk data dengan banyak fitur” bisa jadi kurang optimal).
- Implementasi:
from imblearn.over_sampling import SMOTE import pandas as pd # Contoh data (anggap ini adalah fitur dan label Anda) data = {'fitur1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'fitur2': [2, 4, 1, 3, 5, 2, 1, 4, 3, 2], 'label': [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]} # 0: Mayoritas, 1: Minoritas df = pd.DataFrame(data) X = df[['fitur1', 'fitur2']] y = df['label'] # Inisialisasi SMOTE smote = SMOTE(random_state=42) #random_state untuk reproduktibilitas # Terapkan SMOTE X_resampled, y_resampled = smote.fit_resample(X, y) # X_resampled dan y_resampled sekarang berisi data yang sudah di-resampling print(pd.Series(y_resampled).value_counts()) #cek proporsi kelas
Kode di atas menggunakan library
imbalanced-learn
(sering disebutimblearn
) di Python, yang sangat populer untuk menangani imbalanced data (“python imbalance learning“). Pastikan Anda sudah menginstalnya (pip install imbalanced-learn
).
Cost-Sensitive Learning untuk Imbalanced Data
Cost-sensitive learning adalah pendekatan yang berbeda dari resampling. Alih-alih mengubah dataset, teknik ini memodifikasi algoritma machine learning agar lebih “peka” terhadap kesalahan klasifikasi pada kelas minoritas.
- Konsep: Memberikan bobot yang lebih tinggi pada kesalahan klasifikasi kelas minoritas.
- Cost Matrix: Matriks yang mendefinisikan “biaya” (cost) untuk setiap jenis kesalahan klasifikasi. Contoh:
| | Prediksi Normal | Prediksi Penipuan | |----------|-----------------|-------------------| | Aktual Normal | 0 | 1 | (False Positive) | Aktual Penipuan| 10 | 0 | (False Negative)
Dalam contoh ini, false negative (memprediksi transaksi penipuan sebagai normal) diberi biaya 10 kali lebih tinggi daripada false positive.
- Algoritma: Banyak algoritma machine learning dapat dimodifikasi agar cost-sensitive. Misalnya, pada SVM atau Logistic Regression, kita bisa mengubah cost function untuk memperhitungkan cost matrix.
Panduan Memilih Teknik yang Tepat
Memilih teknik yang tepat bergantung pada beberapa faktor.
- Ukuran Dataset: Jika dataset sangat kecil, oversampling (terutama SMOTE) mungkin lebih baik. Jika dataset sangat besar, undersampling bisa mengurangi waktu komputasi.
- Tingkat Imbalance: Jika imbalance sangat ekstrem, cost-sensitive learning atau kombinasi resampling dan cost-sensitive learning mungkin diperlukan.
- Jenis Algoritma: Beberapa algoritma lebih cocok untuk cost-sensitive learning.
Berikut adalah alur sederhana untuk membantu pengambilan keputusan:
Apakah dataset sangat kecil?
| Ya --> Coba Oversampling (SMOTE)
| Tidak --> Apakah imbalance sangat ekstrem?
| Ya --> Coba Cost-Sensitive Learning atau kombinasi
| Tidak --> Apakah waktu komputasi menjadi masalah?
| Ya --> Coba Undersampling
| Tidak --> Coba berbagai teknik (Oversampling, Undersampling, SMOTE, Cost-Sensitive Learning) dan bandingkan performanya
Baca juga: 10 Kesalahan Machine Learning yang Harus Dihindari Pemula
Kesimpulan: Solusi Efektif untuk Data Tidak Seimbang
Imbalanced data adalah tantangan umum dalam machine learning, tetapi ada berbagai teknik untuk mengatasinya. Dengan memahami konsep resampling (oversampling, undersampling, SMOTE) dan cost-sensitive learning, kita bisa membangun model yang lebih baik dan lebih adil, terutama dalam kasus-kasus di mana kelas minoritas sangat penting.
Kirim.ai adalah platform yang menyediakan solusi berbasis AI yang dapat membantu Anda dalam berbagai tahap pengembangan model machine learning, termasuk penanganan imbalanced data. Dengan tools dan AI agent dari Kirim.ai, Anda dapat mengoptimalkan proses, mulai dari pra-pemrosesan data hingga evaluasi dan deployment model.
Tanggapan (0 )