Нужна ли стратифицированная выборка (случайный лес, Python)?

14

Я использую Python для запуска модели случайного леса на моем несбалансированном наборе данных (целевой переменной был двоичный класс). Разделяя набор данных обучения и тестирования, я боролся, использовать ли стратифицированную выборку (как показано в коде) или нет. До сих пор я наблюдал в своем проекте, что стратифицированный случай приведет к более высокой производительности модели. Но я думаю, что если я буду использовать мою модель для прогнозирования новых случаев, которые, скорее всего, будут отличаться в распределении целевого класса с моим текущим набором данных. Поэтому я склонен ослабить это ограничение и использовать неразделенное разбиение. Может ли кто-нибудь посоветовать уточнить этот момент?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)
LUSAQX
источник

Ответы:

13

Если количество значений, принадлежащих каждому классу, несбалансировано, хорошо использовать стратифицированную выборку. Вы в основном просите модель пройти обучение и тестовый набор таким образом, чтобы доля классов была такой же, как и для всего набора данных, что является правильным решением . Если ваши классы сбалансированы, то перетасовка (здесь не требуется стратификация) может в принципе гарантировать честный тест и разделение поездов.

Теперь ваша модель будет способна или, по крайней мере, достаточно оснащена, чтобы предсказывать численный класс (класс с меньшим количеством баллов). Вот почему вместо того, чтобы просто вычислять точность, вам были даны другие показатели, такие как чувствительность и специфичность . Следите за этим, это стражи.

Надеюсь это поможет.

Кирите Гак
источник