Có ai biết nếu sau đây đã được mô tả và (một trong hai cách) nếu nó có vẻ như là một phương pháp hợp lý để học một mô hình dự đoán với một biến mục tiêu rất không cân bằng?
Thông thường trong các ứng dụng CRM khai thác dữ liệu, chúng tôi sẽ tìm kiếm một mô hình trong đó sự kiện tích cực (thành công) rất hiếm so với đa số (lớp phủ định). Ví dụ: tôi có thể có 500.000 trường hợp chỉ có 0,1% thuộc nhóm lợi ích tích cực (ví dụ: khách hàng đã mua). Vì vậy, để tạo mô hình dự đoán, một phương pháp là lấy mẫu dữ liệu theo đó bạn giữ tất cả các thể hiện của lớp dương và chỉ một mẫu của các thể hiện của lớp âm để tỷ lệ của lớp dương với lớp âm gần hơn 1 (có thể là 25% đến 75% dương tính với âm tính). Qua lấy mẫu, gạch dưới, SMote, vv là tất cả các phương pháp trong tài liệu.
Điều tôi tò mò là kết hợp chiến lược lấy mẫu cơ bản ở trên nhưng với việc đóng gói lớp tiêu cực. Một cái gì đó đơn giản như:
- Giữ tất cả các trường hợp lớp tích cực (ví dụ 1.000)
- Lấy mẫu các trường hợp classe âm để tạo mẫu cân bằng (ví dụ 1.000).
- Phù hợp với mô hình
- Nói lại
Có ai nghe nói về việc này trước đây không? Vấn đề dường như không có bao là việc lấy mẫu chỉ 1.000 trường hợp của lớp âm khi có 500.000 là không gian dự đoán sẽ thưa thớt và bạn có thể không có đại diện cho các giá trị / mẫu dự đoán có thể. Đóng bao dường như giúp điều này.
Tôi đã xem xét rpart và không có gì "phá vỡ" khi một trong các mẫu không có tất cả các giá trị cho một công cụ dự đoán (không phá vỡ khi sau đó dự đoán các trường hợp với các giá trị dự đoán đó:
library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))
Có suy nghĩ gì không?
CẬP NHẬT: Tôi lấy một bộ dữ liệu trong thế giới thực (tiếp thị dữ liệu phản hồi thư trực tiếp) và phân vùng ngẫu nhiên nó thành đào tạo và xác nhận. Có 618 dự đoán và 1 mục tiêu nhị phân (rất hiếm).
Training:
Total Cases: 167,923
Cases with Y=1: 521
Validation:
Total Cases: 141,755
Cases with Y=1: 410
Tôi lấy tất cả các ví dụ tích cực (521) từ tập huấn luyện và một mẫu ngẫu nhiên các ví dụ âm có cùng kích thước cho một mẫu cân bằng. Tôi phù hợp với một cây rpart:
models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")
Tôi đã lặp lại quá trình này 100 lần. Sau đó, dự đoán xác suất Y = 1 trong các trường hợp mẫu xác nhận cho mỗi trong số 100 mô hình này. Tôi chỉ đơn giản là trung bình 100 xác suất cho một ước tính cuối cùng. Tôi đã giải mã các xác suất trên tập xác thực và trong mỗi decile đã tính tỷ lệ phần trăm của các trường hợp trong đó Y = 1 (phương pháp truyền thống để ước tính khả năng xếp hạng của mô hình).
Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10))
Đây là hiệu suất:
Để xem làm thế nào so với việc không đóng bao, tôi dự đoán mẫu xác nhận chỉ với mẫu đầu tiên (tất cả các trường hợp dương tính và một mẫu ngẫu nhiên có cùng kích thước). Rõ ràng, dữ liệu được lấy mẫu quá thưa thớt hoặc quá phù hợp để có hiệu lực trong mẫu xác nhận giữ lại.
Đề xuất hiệu quả của thói quen đóng bao khi có một sự kiện hiếm gặp và n và p lớn.