SMOTE

Artikel ini menjelaskan cara menggunakan komponen SMOTE di perancang Azure Machine Learning untuk meningkatkan jumlah kasus yang kurang terwakili dalam himpunan data yang digunakan untuk pembelajaran mesin. SMOTE adalah cara yang lebih baik untuk meningkatkan jumlah kasus yang jarang terjadi daripada hanya menduplikasi kasus yang sudah ada.

Anda menghubungkan komponen SMOTE ke himpunan data yang tidak seimbang. Ada banyak alasan mengapa himpunan data mungkin tidak seimbang. Misalnya, kategori yang Anda targetkan mungkin tak memiliki banyak populasi, atau data mungkin sulit dikumpulkan. Biasanya, Anda menggunakan SMOTE saat kelas yang ingin Anda analisis kurang terwakili.

Komponen menampilkan himpunan data yang berisi sampel asli. Modul juga mengembalikan sejumlah sampel minoritas sintetis, tergantung pada persentase yang Anda tentukan.

Selengkapnya tentang SMOTE

Teknik Oversampling Minoritas Sintetis (SMOTE) adalah teknik statistik untuk meningkatkan jumlah kasus dalam himpunan data Anda dengan cara yang seimbang. Komponen bekerja dengan menghasilkan instans baru dari kasus minoritas yang ada yang Anda berikan sebagai input. Implementasi SMOTE ini tidak mengubah jumlah kasus mayoritas.

Instans baru bukan hanya salinan kasus minoritas yang ada. Sebagai gantinya, algoritma mengambil sampel ruang fitur untuk setiap kelas target dan tetangga terdekatnya. Algoritma kemudian menghasilkan contoh baru yang menggabungkan fitur kasus target dengan fitur tetangganya. Pendekatan ini meningkatkan fitur yang tersedia untuk setiap kelas dan membuat sampel lebih umum.

SMOTE mengambil seluruh himpunan data sebagai input, tetap hanyai meningkatkan persentase kasus minoritas. Misalnya, Anda memiliki himpunan data yang tidak seimbang di mana hanya 1 persen kasus yang memiliki nilai target A (kelas minoritas), dan 99 persen kasus memiliki nilai B. Untuk meningkatkan persentase kasus minoritas menjadi dua kali persentase sebelumnya, Anda perlu memasukkan 200 untuk persentase SMOTE di properti komponen.

Contoh

Kami menyarankan agar Anda mencoba menggunakan SMOTE dengan himpunan data kecil untuk melihat cara kerjanya. Contoh berikut menggunakan himpunan data Donor Darah yang tersedia di perancang Azure Machine Learning.

Jika Anda menambahkan himpunan data ke alur dan memilih Visualisasikan pada output himpunan data, Anda dapat melihat bahwa dari 748 baris atau kasus dalam himpunan data, 570 kasus (76 persen) adalah dari Kelas 0, dan 178 kasus (24 persen) adalah Dari Kelas 1. Meskipun hasil ini tidak terlalu timpang, Kelas 1 mewakili orang-orang yang mendonorkan darah, sehingga baris ini berisi ruang fitur yang ingin Anda jadikan model.

Untuk menambah jumlah kasus, Anda dapat menetapkan nilai persentase SMOTE, dengan menggunakan kelipatan 100, sebagai berikut:

Kelas 0 Kelas 1 total
Himpunan data asli

(setara dengan persentase SMOTE = 0)
570

76%
178

24%
748
Persentase SMOTE = 100 570

62%
356

38%
926
Persentase SMOTE = 200 570

52%
534

48%
1,104
Persentase SMOTE = 300 570

44%
712

56%
1,282

Peringatan

Meningkatkan jumlah kasus dengan menggunakan SMOTE tidak menjamin akan menghasilkan model yang lebih akurat. Cobalah membuat alur dengan persentase yang berbeda, set fitur yang berbeda, dan jumlah tetangga terdekat yang berbeda untuk melihat bagaimana penambahan kasus mempengaruhi model Anda.

Cara mengonfigurasi SMOTE

  1. Tambahkan komponen SMOTE ke alur Anda. Anda dapat menemukan komponen di bawah Komponen Transformasi Data, dalam kategori Manipulasi.

  2. Sambungkan himpunan data yang ingin Anda tingkatkan. Jika Anda ingin menentukan ruang fitur untuk membangun kasus baru, baik dengan hanya menggunakan kolom tertentu atau dengan mengecualikan beberapa, gunakan komponen Pilih Kolom dalam Himpunan Data. Lalu Anda dapat mengisolasi kolom yang ingin Anda gunakan sebelum menggunakan SMOTE.

    Jika tidak, pembuatan kasus baru melalui SMOTE akan didasarkan pada semua kolom yang Anda sediakan sebagai input. Setidaknya satu kolom dari kolom fitur adalah kolom numerik.

  3. Pastikan bahwa kolom yang berisi label, atau kelas target, telah dipilih. SMOTE hanya menerima label biner.

  4. Komponen SMOTE secara otomatis mengidentifikasi kelas minoritas di kolom label, dan kemudian mendapatkan semua contoh untuk kelas minoritas. Semua kolom tidak boleh memiliki nilai NaN.

  5. Dalam opsi persentase SMOTE, masukkan seluruh angka yang menunjukkan persentase target kasus minoritas dalam himpunan data output. Contohnya:

    • Anda memasukkan 0. Komponen SMOTE menampilkan himpunan data yang sama persis dengan yang Anda berikan sebagai input. SMOTE tidak menambahkan kasus minoritas baru. Dalam himpunan data ini, proporsi kelas tidak berubah.

    • Anda memasukkan 100. Komponen SMOTE menghasilkan kasus minoritas baru. SMOTE menambahkan jumlah kasus minoritas yang sama yang ada di himpunan data asli. Karena SMOTE tidak meningkatkan jumlah kasus mayoritas, proporsi kasus setiap kelas telah berubah.

    • Anda memasukkan 200. Komponen menggandakan persentase kasus minoritas dibandingkan dengan himpunan data asli. Ini tidak akan membuat kasus minoritas menjadi dua kali lipat dari sebelumnya. Sebaliknya, ukuran himpunan data ditingkatkan sedemikian rupa sehingga jumlah kasus mayoritas tetap sama. Jumlah kasus minoritas meningkat hingga sesuai dengan nilai persentase yang diinginkan.

    Catatan

    Gunakan hanya kelipatan 100 untuk persentase SMOTE.

  6. Gunakan opsi Jumlah tetangga terdekat untuk menentukan ukuran ruang fitur yang digunakan algoritma SMOTE dalam membangun kasus baru. Tetangga terdekat adalah barisan data (kasus) yang mirip dengan kasus target. Jarak antara dua kasus diukur dengan menggabungkan vektor yang tertimbang dari semua fitur.

    • Dengan meningkatkan jumlah tetangga terdekat, Anda mendapatkan fitur dari lebih banyak kasus.
    • Dengan tetap membuat jumlah tetangga terdekat rendah, Anda menggunakan fitur yang serupa dengan sampel asli.
  7. Masukkan nilai dalam kotak Seed acak jika Anda ingin memastikan hasil yang sama atas dari ekseskusi alur yang sama, dengan data yang sama. Jika tidak, komponen menghasilkan seed acak berdasarkan nilai clock prosesor saat alur disebarkan. Generasi seed acak dapat menyebabkan hasil yang sedikit berbeda selama eksekusi.

  8. Kirimkan alur.

    Output dari komponen adalah himpunan data yang berisi baris asli ditambah sejumlah baris yang ditambahkan dengan kasus minoritas.

Catatan teknis

  • Saat Anda menerbitkan model yang menggunakan komponen SMOTE, hapus SMOTE dari alur prediktif sebelum diterbitkan sebagai layanan web. Alasannya adalah bahwa SMOTE dimaksudkan untuk meningkatkan model selama pelatihan, bukan untuk penskoran. Anda mungkin mendapatkan kesalahan jika alur prediktif yang diterbitkan berisi komponen SMOTE.

  • Anda sering bisa mendapatkan hasil yang lebih baik jika Anda membersihkan nilai yang hilang atau menerapkan transformasi lain untuk memperbaiki data sebelum Anda menerapkan SMOTE.

  • Beberapa peneliti telah menyelidiki apakah SMOTE efektif pada data dimensi tinggi atau jarang, seperti data yang digunakan dalam himpunan data klasifikasi teks atau genomika. Makalah ini memiliki ringkasan yang baik mengenai efek dan validitas teoritis penerapan SMOTE dalam kasus seperti itu: Blagus dan Lusa: SMOTE untuk data tidak seimbang dengan dimensi tinggi.

  • Jika SMOTE tidak efektif dalam himpunan data Anda, pendekatan lain yang dapat Anda pertimbangkan meliputi:

    • Metode untuk oversampling kasus minoritas atau undersampling kasus mayoritas.
    • Teknik ansamble yang membantu pelajar secara langsung dengan menggunakan pengklusteran, bagging, atau AdaBoost.

Langkah berikutnya

Lihat set komponen yang tersedia untuk Azure Machine Learning.