Adakah yang tahu apakah yang berikut ini telah dijelaskan dan (bagaimanapun juga) apakah itu terdengar seperti metode yang masuk akal untuk mempelajari model prediksi dengan variabel target yang sangat tidak seimbang?
Seringkali dalam aplikasi CRM data mining, kami akan mencari model di mana peristiwa positif (sukses) sangat jarang relatif terhadap mayoritas (kelas negatif). Sebagai contoh, saya mungkin memiliki 500.000 contoh di mana hanya 0,1% dari kelas minat positif (misalnya pelanggan membeli). Jadi, untuk membuat model prediksi, salah satu metode adalah dengan mengambil sampel data di mana Anda menyimpan semua instance kelas positif dan hanya sampel instance kelas negatif sehingga rasio positif ke kelas negatif mendekati 1 (mungkin 25%). hingga 75% positif ke negatif). Over sampling, undersampling, SMOTE dll adalah semua metode dalam literatur.
Yang saya ingin tahu adalah menggabungkan strategi pengambilan sampel dasar di atas tetapi dengan mengantongi kelas negatif. Sesuatu seperti:
- Simpan semua instance kelas positif (mis. 1.000)
- Contoh instance classe negatif untuk membuat sampel seimbang (misalnya 1.000).
- Sesuai dengan model
- Ulang
Adakah yang pernah mendengar hal ini sebelumnya? Masalahnya tampaknya tanpa mengantongi adalah bahwa pengambilan sampel hanya 1.000 contoh kelas negatif ketika ada 500.000 adalah bahwa ruang prediktor akan jarang dan Anda mungkin tidak memiliki representasi dari nilai / pola prediktor yang mungkin. Mengantongi tampaknya membantu ini.
Saya melihat rpart dan tidak ada yang "pecah" ketika salah satu sampel tidak memiliki semua nilai untuk prediktor (tidak rusak saat kemudian memprediksi contoh dengan nilai-nilai prediktor tersebut:
library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))
Adakah pikiran?
PEMBARUAN: Saya mengambil satu set data dunia nyata (pemasaran data tanggapan surat langsung) dan mempartisi secara acak ke dalam pelatihan dan validasi. Ada 618 prediktor dan 1 target biner (sangat jarang).
Training:
Total Cases: 167,923
Cases with Y=1: 521
Validation:
Total Cases: 141,755
Cases with Y=1: 410
Saya mengambil semua contoh positif (521) dari set pelatihan dan sampel acak contoh negatif dengan ukuran yang sama untuk sampel seimbang. Saya cocok dengan pohon bagian:
models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")
Saya mengulangi proses ini 100 kali. Kemudian memperkirakan probabilitas Y = 1 pada kasus sampel validasi untuk masing-masing dari 100 model ini. Saya hanya rata-rata 100 probabilitas untuk perkiraan akhir. Saya mendekripsi probabilitas pada set validasi dan di setiap desil menghitung persentase kasus di mana Y = 1 (metode tradisional untuk memperkirakan kemampuan peringkat model).
Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10))
Inilah kinerjanya:
Untuk melihat bagaimana ini dibandingkan dengan tanpa kantong, saya memperkirakan sampel validasi dengan sampel pertama saja (semua kasus positif dan sampel acak dengan ukuran yang sama). Jelas, data sampel terlalu jarang atau terlalu efektif untuk menjadi efektif pada sampel validasi bertahan.
Menyarankan kemanjuran dari rutinitas mengantongi ketika ada suatu kejadian yang jarang dan besar n dan p.