Хтось знає, чи описано наступне і (в будь-якому випадку), чи це звучить як правдоподібний метод вивчення прогнозної моделі з дуже незбалансованою цільовою змінною?
Часто в CRM-програмах пошуку даних ми будемо шукати модель, коли позитивна подія (успіх) дуже рідкісна стосовно більшості (негативний клас). Наприклад, у мене може бути 500 000 випадків, коли лише 0,1% становлять позитивний клас інтересу (наприклад, клієнт купив). Отже, для створення прогнозної моделі одним із методів є вибірка даних, за допомогою яких ви зберігаєте всі екземпляри позитивного класу та лише вибірку екземплярів негативного класу, щоб відношення позитивного до негативного класу було ближче до 1 (можливо, 25% до 75% від позитивного до негативного). За допомогою вибірки, недооцінки, SMOTE тощо - це всі методи в літературі.
Мені цікаво поєднувати основну стратегію вибірки вище, але з мішковиною негативного класу. Щось просто так:
- Зберігати всі позитивні екземпляри класу (наприклад, 1000)
- Вибірка від'ємних випадків класу для створення збалансованої вибірки (наприклад, 1000).
- Підходять до моделі
- Повторіть
Хтось чув про це раніше? Проблема, яка здається без мішковини, полягає в тому, що вибірка лише 1000 екземплярів негативного класу, коли їх 500 000, полягає в тому, що прогностичний простір буде розрідженим, і ви, можливо, не матимете уявлення про можливі значення / шаблони прогнозів. Це, здається, допомагає в цьому.
Я подивився на rpart і нічого не "ламається", коли в одному з зразків не є всі значення для прогноктора (не ламається при прогнозуванні випадків із тими значеннями предиктора:
library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))
Будь-які думки?
ОНОВЛЕННЯ: Я взяв реальний набір даних про світ (маркетингові дані прямої пошти) і випадковим чином розподілив його на навчання та перевірку. Є 618 предикторів та 1 двійкова ціль (дуже рідко).
Training:
Total Cases: 167,923
Cases with Y=1: 521
Validation:
Total Cases: 141,755
Cases with Y=1: 410
Я взяв усі позитивні приклади (521) з навчального набору та випадкову вибірку негативних прикладів однакового розміру для збалансованої вибірки. Я підходять деревом rpart:
models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")
Я повторив цей процес 100 разів. Тоді передбачили ймовірність Y = 1 на випадки вибірки перевірки для кожної з цих 100 моделей. Я просто усереднював 100 ймовірностей для остаточної оцінки. Я децилював вірогідності на набір валідації і в кожному децилі обчислював відсоток випадків, коли Y = 1 (традиційний метод оцінки ранжирувальної здатності моделі).
Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10))
Ось виступ:
Щоб побачити, як це порівняно з відсутністю пакетування, я спрогнозував зразок валідації лише з першим зразком (всі позитивні випадки та випадковий зразок однакового розміру). Ясна річ, що вибіркові дані були надто рідкими або надлишковими, щоб бути ефективними для вибірки перевірки на витримку.
Запропонувати ефективність розпорядження, коли трапляються рідкісні події та великі n та p.