Oversampling adalah teknik dalam pemrosesan data yang digunakan untuk menangani ketidakseimbangan kelas (imbalanced data) dalam dataset klasifikasi. Teknik ini bekerja dengan meningkatkan jumlah sampel dari kelas minoritas, sehingga distribusi data menjadi lebih seimbang, membantu model machine learning agar tidak terlalu bias terhadap kelas mayoritas.
Ketidakseimbangan data terjadi ketika jumlah sampel dalam satu kelas jauh lebih banyak dibandingkan dengan kelas lainnya, yang dapat menyebabkan model cenderung mengabaikan kelas dengan jumlah data lebih sedikit.
Contoh Ketidakseimbangan Data:
Kelas |
Jumlah Sampel |
Negatif |
900 |
Positif |
100 |
Dalam kasus ini, model yang dilatih tanpa oversampling kemungkinan akan lebih sering cenderung memprediksi negatif, karena kelas negatif lebih dominan dalam dataset.
2. Jenis-Jenis Oversampling
Ada beberapa metode oversampling yang sering digunakan, di antaranya:
a. Random Oversampling (ROS)
- Teknik paling sederhana, yaitu menyalin sampel dari kelas minoritas secara acak hingga jumlahnya sama dengan kelas mayoritas.
- Kelebihan: Mudah diterapkan, meningkatkan keseimbangan data.
- Kekurangan: Dapat menyebabkan overfitting karena model melihat sampel yang sama berulang kali.
Contoh Implementasi dalam Python:
from imblearn.over_sampling import RandomOverSampler
X_resampled, y_resampled = RandomOverSampler().fit_resample(X, y)
b. Synthetic Minority Over-sampling Technique (SMOTE)
- SMOTE tidak hanya menyalin data lama, tetapi membuat sampel baru dengan melakukan interpolasi dari data yang ada.
- Cara kerjanya:
- Memilih titik data minoritas secara acak.
- Mencari k-tetangga terdekat (k-NN).
- Membuat sampel sintetis di antara dua titik terdekat.
- Kelebihan: Mengurangi risiko overfitting dibandingkan Random Oversampling.
- Kekurangan: Bisa menghasilkan data sintetis yang tidak sepenuhnya representatif dari data asli.
Contoh Implementasi dalam Python:
from imblearn.over_sampling import SMOTE
X_resampled, y_resampled = SMOTE().fit_resample(X, y)
c. Adaptive Synthetic Sampling (ADASYN)
- Variasi dari SMOTE, tetapi lebih fokus pada area yang lebih sulit diklasifikasikan.
- ADASYN lebih banyak menghasilkan sampel sintetis di area yang lebih kompleks dan sulit dipelajari oleh model.
- Kelebihan: Meningkatkan akurasi pada daerah keputusan yang sulit.
- Kekurangan: Bisa menyebabkan noise pada dataset jika diterapkan secara agresif.
Contoh Implementasi dalam Python:
from imblearn.over_sampling import ADASYN
X_resampled, y_resampled = ADASYN().fit_resample(X, y)
3. Perbandingan Metode Oversampling
Metode |
Cara Kerja |
Keuntungan |
Kelemahan |
Random Oversampling |
Menyalin sampel dari kelas minoritas |
Mudah diterapkan |
Risiko overfitting |
SMOTE |
Membuat sampel sintetis berdasarkan interpolasi data |
Mengurangi overfitting |
Bisa menghasilkan data yang tidak representatif |
ADASYN |
Membuat lebih banyak sampel sintetis di area yang sulit diklasifikasikan |
Lebih adaptif terhadap kompleksitas data |
Bisa menambahkan noise jika terlalu agresif |
4. Kapan Menggunakan Oversampling?
Oversampling digunakan ketika:
Dataset sangat tidak seimbang, misalnya satu kelas hanya memiliki 5-10% dari total data.
Model machine learning mengalami bias terhadap kelas mayoritas.
Precision, recall, atau F1-score kelas minoritas terlalu rendah.
Namun, jangan gunakan oversampling jika:
Dataset sudah cukup seimbang.
Terdapat risiko overfitting yang tinggi.
5. Kesalahan Umum dalam Oversampling
- Melakukan Oversampling Sebelum Membagi Data Training & Testing
- Kesalahan: Oversampling dilakukan sebelum data dibagi, sehingga data sintetis juga masuk ke dalam testing set → data leakage!
- Solusi: Lakukan oversampling hanya pada data training setelah membagi data.
Salah:
X_resampled, y_resampled = SMOTE().fit_resample(X, y)
X_train, X_test, y_train, y_test = train_test_split(X_resampled, y_resampled, test_size=0.2)
Benar:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_train_resampled, y_train_resampled = SMOTE().fit_resample(X_train, y_train)
- Menggunakan Oversampling pada Semua Fitur Secara Naif
- Jangan gunakan oversampling pada fitur yang tidak perlu, seperti ID pengguna atau variabel kategori tanpa preprocessing.
- Mengabaikan Evaluasi Model Setelah Oversampling
- Setelah menggunakan oversampling, evaluasi kembali model dengan metrik seperti Precision, Recall, dan F1-Score, bukan hanya akurasi.
6. Studi Kasus: Pengaruh Oversampling pada Model Machine Learning
Tanpa Oversampling:
- Accuracy: 90%
- Precision Positif: 30%
- Recall Positif: 10%
Dengan SMOTE:
- Accuracy: 85%
- Precision Positif: 80%
- Recall Positif: 75%
Dengan oversampling, model lebih seimbang dalam mengenali kelas minoritas meskipun akurasi total sedikit turun.
7. Kesimpulan
Oversampling adalah teknik penting dalam mengatasi ketidakseimbangan data, terutama dalam klasifikasi machine learning.
Metode seperti SMOTE dan ADASYN lebih efektif dibandingkan Random Oversampling karena mengurangi risiko overfitting.
Pastikan oversampling hanya dilakukan pada data training untuk menghindari data leakage.
Evaluasi model setelah oversampling menggunakan F1-score, Precision, dan Recall, bukan hanya akurasi.
Dengan menerapkan oversampling yang benar, model machine learning dapat lebih akurat dan adil dalam mengenali kelas minoritas.