Pengambilan Sampel untuk Data yang Tidak Seimbang dalam Regresi

22

Ada beberapa pertanyaan bagus tentang penanganan data yang tidak seimbang dalam konteks klasifikasi , tetapi saya bertanya-tanya apa yang dilakukan orang untuk sampel regresi.

Katakanlah domain masalah sangat sensitif terhadap tanda tetapi hanya agak sensitif terhadap besarnya target. Namun besarnya cukup penting bahwa model harus regresi (target kontinu) bukan klasifikasi (kelas positif vs negatif). Dan katakan dalam domain masalah ini bahwa setiap rangkaian data pelatihan akan memiliki 10x lebih negatif daripada target positif.

Dalam skenario ini, saya mungkin melebih-lebihkan contoh target positif untuk mencocokkan jumlah contoh target negatif, dan kemudian melatih model untuk membedakan dua kasus. Tentunya pendekatan pelatihan buruk pada data yang tidak seimbang, jadi saya perlu melakukan semacam pengambilan sampel. Apa cara yang layak untuk "membatalkan" oversampling ini ketika membuat prediksi? Mungkin menerjemahkan dengan mean (negatif) atau median dari target data pelatihan alami?

Someben
sumber

Jawaban:

15

Ketidakseimbangan tidak selalu menjadi masalah, tetapi bagaimana Anda bisa sampai di sana. Tidaklah tepat untuk mendasarkan strategi pengambilan sampel Anda pada variabel target. Karena variabel ini memasukkan keacakan dalam model regresi Anda, jika Anda mengambil sampel berdasarkan ini, Anda akan memiliki masalah besar dalam melakukan segala macam inferensi. Saya ragu mungkin untuk "membatalkan" masalah itu.

Anda dapat kelebihan atau kekurangan sampel berdasarkan variabel prediktor . Dalam hal ini, asalkan Anda dengan hati-hati memeriksa bahwa asumsi model tampak valid (mis. Homoseksualitas yang muncul dalam pikiran sama pentingnya dalam situasi ini, jika Anda memiliki regresi "biasa" dengan asumsi biasa), saya rasa Anda tidak perlu batalkan oversampling saat memprediksi. Kasing Anda sekarang akan mirip dengan analis yang telah merancang eksperimen secara eksplisit untuk memiliki rentang variabel prediktor yang seimbang.

Edit - penambahan - ekspansi tentang alasan sampel yang buruk didasarkan pada Y

Dalam pas model regresi standar yang diharapkan akan terdistribusi normal, memiliki rata-rata nol, dan menjadi independen dan terdistribusi secara identik. Jika Anda memilih sampel Anda berdasarkan nilai y (yang mencakup kontribusi dan ) e tidak akan lagi memiliki rata-rata nol atau didistribusikan secara identik. Sebagai contoh, nilai y yang rendah yang mungkin mencakup nilai e yang sangat rendah mungkin lebih kecil kemungkinannya untuk dipilih. Ini merusak setiap kesimpulan berdasarkan cara yang biasa digunakan untuk menyesuaikan model tersebut. Koreksi dapat dibuat serupa dengan yang dibuat dalam ekonometrik untuk pemasangan model terpotong, tetapi mereka menyusahkan dan memerlukan asumsi tambahan, dan hanya boleh digunakan ketika tidak ada alternatif.y=Xb+eeeXb

Perhatikan ilustrasi ekstrem di bawah ini. Jika Anda memotong data Anda pada nilai arbitrer untuk variabel respons, Anda memperkenalkan bias yang sangat signifikan. Jika Anda memotongnya untuk variabel penjelas, belum tentu ada masalah. Anda melihat bahwa garis hijau, berdasarkan subset yang dipilih karena nilai prediktornya, sangat dekat dengan garis pas yang sebenarnya; ini tidak dapat dikatakan tentang garis biru, hanya berdasarkan pada titik biru.

Hal ini meluas ke kasus underampling atau oversampling yang kurang parah (karena pemotongan dapat dilihat sebagai undersampling dibawa ke ekstrim logisnya).

masukkan deskripsi gambar di sini

# generate data
x <- rnorm(100)
y <- 3 + 2*x + rnorm(100)

# demonstrate
plot(x,y, bty="l")
abline(v=0, col="grey70")
abline(h=4, col="grey70")
abline(3,2, col=1)
abline(lm(y~x), col=2)
abline(lm(y[x>0] ~ x[x>0]), col=3)
abline(lm(y[y>4] ~ x[y>4]), col=4)
points(x[y>4], y[y>4], pch=19, col=4)
points(x[x>0], y[x>0], pch=1, cex=1.5, col=3)
legend(-2.5,8, legend=c("True line", "Fitted - all data", "Fitted - subset based on x",
    "Fitted - subset based on y"), lty=1, col=1:4, bty="n")
Peter Ellis
sumber
Terima kasih atas jawabannya, Peter. Tolong jelaskan apa yang Anda maksud dengan "Karena variabel ini memasukkan keacakan dalam model regresi Anda"? Target tersebut dapat diamati di lingkungan, jadi apakah maksud Anda kesalahan pengukuran?
Someben
1
Berikut ini adalah makalah dari prof NYU bernama Foster Provost tentang masalah ini: pages.stern.nyu.edu/~fprovost/Papers/skew.PDF Dalam kasus saya, saya melakukan regresi dengan data yang tidak seimbang dan bukan klasifikasi. Karena itu pertanyaanku.
Someben
1
@someben - Saya telah menguraikan dan menambahkan contoh. Ini dijelaskan dengan baik dalam literatur regresi bahwa Anda tidak dapat mengambil sampel berdasarkan variabel dependen. Ini harus berlaku untuk model lain juga. Sampel yang "tidak seimbang" adalah jenis hal yang berbeda dan bukan masalah; kecuali Anda sengaja membuatnya dengan strategi pengambilan sampel yang tidak dapat dibenarkan. Bukan masalah keseimbangan atau kekurangannya, tetapi bagaimana Anda mendapatkan data Anda.
Peter Ellis
2
@ Tomeben, tidak, saya tidak berpikir itu ada bedanya. Masalahnya lebih mendasar dari itu.
Peter Ellis
1
Contoh yang bagus! Grafik Anda mengingatkan saya pada sebuah makalah oleh Richard Berk (1983) tentang bias pemilihan Sampel . Juga untuk dicatat, Anda dapat "membatalkan" masalah-masalah itu jika Anda secara eksplisit mengetahui mekanisme pemilihan sampel, dan ada serangkaian model ekonometrik yang dibangun di sekitar gagasan itu (seperti model tobit, atau karya James Heckman).
Andy W
2

Ini adalah pertanyaan apakah Anda melakukan analisis atau prediksi sebab-akibat. Baca http://m.statosophichorizons.com/?ref=http%3A%2F%2Ft.co%2F54MWZrVAyX&url=http%3A%2F%2Fstatistichorizons.com%2Fprediction-vs-causation-in-regress-analysis&width=640

Menyampel ulang pada variabel target untuk pelatihan untuk keperluan prediksi berfungsi selama satu tes pada sampel tahan non-resampled. Grafik kinerja akhir harus hanya didasarkan pada penahanan. Untuk sebagian besar akurasi dalam penentuan prediktabilitas model, teknik validasi silang harus digunakan.

Anda "membatalkan" dengan analisis akhir dari model regresi dan pada set data yang tidak seimbang.

Chris
sumber
2

Ini bukan upaya memberikan solusi praktis untuk masalah Anda, tetapi saya hanya melakukan sedikit riset tentang berurusan dengan dataset tidak seimbang dalam masalah regresi dan ingin berbagi hasil saya:

jhin
sumber
1

pertama-tama, rasio 1:10 tidak buruk sama sekali. ada cara sederhana untuk membatalkan pengambilan sampel-

1) untuk masalah klasifikasi, Jika Anda memiliki sub-sampel kelas negatif sebesar 10. probabilitas yang dihasilkan adalah 10 kali lebih banyak dari yang seharusnya. Anda dapat membagi probabilitas yang dihasilkan dengan 10. (dikenal sebagai kalibrasi ulang model)

2) Facebook juga melakukan sub-sampel (untuk prediksi klik dalam regresi logistik) dan melakukan pengambilan sampel negatif. kalibrasi ulang dilakukan dengan rumus sederhana p / (p + (1-p) / w); di mana p adalah prediksi dalam downsampling, nw adalah laju pengambilan sampel negatif.

Arpit Sisodia
sumber
Saya tidak berpikir ini sesederhana itu, Arpit. Banyak algino nonlinier tidak melihat cukup contoh kelas kurang undersampled dan menjadi condong ke arah yang oversampled, dan karena nonlinier mereka Anda tidak akan memiliki sarana untuk memperbaikinya.
Anatoly Alekseev
1

Saya pikir apa yang mungkin membantu Anda mengingat masalah Anda adalah Teknik Sintesis Sampling Minoritas Minoritas untuk Regresi (SMOTER). Ada beberapa penelitian tentang topik ini. Namun, itu masih kurang dieksplorasi daripada rekan klasifikasi, seperti yang mungkin Anda temui.

Saya mungkin menyarankan makalah yang dikutip di bawah ini (dan konferensi itu dipresentasikan di http://proceedings.mlr.press/v74/ ) tergantung pada seberapa tertarik Anda memahaminya dari perspektif penelitian. Saya sangat menghargai pengenalan noise Gaussian dalam menghasilkan pengamatan sintetis.

Jika Anda lebih tertarik pada solusi praktis, penulis pertama memiliki implementasi R yang tersedia di halaman Github-nya. https://github.com/paobranco/SMOGN-LIDTA17

Jika Python lebih dari bujukan Anda, saya baru-baru ini mendistribusikan implementasi Pythonic sepenuhnya algoritma SMOGN yang sekarang tersedia dan saat ini sedang diuji unit. https://github.com/nickkunz/smogn

Saya harap ini membantu!

Branco, P., Torgo, L., Ribeiro, R. (2017). "SMOGN: Pendekatan Pra-Pemrosesan untuk Regresi yang Tidak Seimbang". Prosiding Penelitian Pembelajaran Mesin, 74: 36-50. http://proceedings.mlr.press/v74/branco17a/branco17a.pdf .

Nick Kunz
sumber