1. Цель: я создаю модель классификации (XGBoost), чтобы предсказать, соответствует ли «Новый прогноз» «Существующему порядку» на основе исторического поведения. Цель является двоичной (is_match 1 или 0).
2. Данные:
- Объем: ~ 21 000 пар исторических обновлений.
- Ключевые особенности: Я рассчитываю разницу между старыми и новыми заказами:
delta_days: разница в дате доставки (например, +5 дней). задержка). - delta_qty_pct: Процентное изменение количества (например, +0,10 для увеличения на 10 %).
3. Конфликт (проблема 50 %): мне нужно очистить «мусорные данные» (например, опечатки, вызывающие задержки в 5000 дней), не устраняя при этом действительную волатильность бизнеса.
- Проблема: Когда я применил стандартный метод IQR (1,5 * IQR) глобально, он удалил ~50% моих данных. набор данных (уменьшился с 21 тыс. до 10 тыс. строк).
- Почему: Поскольку межквартильный диапазон очень узок (большинство обновлений равны 0), границы IQR стали чрезвычайно узкими (например, от -14 до +10 дней). По сути, любая «значительная задержка» (например, 20 дней) рассматривается как выброс, хотя 20-дневная задержка является допустимым сценарием в моем домене.
- Подход А: глобальная винсоризация (мои текущие предпочтения) Я применяю 1%–99% процентильное ограничение ко всему набору данных вместо удаления строк.
Плюсы: Он решает проблему потери данных (потеря 0%) и сохраняет разницу между «Поздний» (60 дней) и «Безумный» (5000 дней, ограниченный до 60). - Минусы: используется единый порог для всех покупателей, одинаково обрабатывая «строгих» и «хаотичных» покупателей на этапе очистки.
- Плюсы: Это учитывает тот факт, что «Нормальный» разный для каждого покупателя.
- Минусы: Многие из моих групп разрежены (Малый N < 10). Меня беспокоит, что статистические методы для таких небольших групп будут рассчитывать почти нулевую дисперсию и агрессивно удалять достоверные данные, повторяя проблему «50% потерь» в локальном масштабе.
5. Мой вопрос: Учитывая, что позже я буду рассчитывать Z-показатели как функции для модели (которая отражает относительную «странность» ценности для каждого покупателя), безопаснее ли придерживаться глобальной винсоризации для сохранения объема данных или групповая очистка является стандартной практикой даже для редких групп?
Существует ли гибридный подход (например, глобальная очистка + локальная разработка функций), который предпочтителен в этом сценарии?
Спасибо за помощь!
Подробнее здесь: https://stackoverflow.com/questions/798 ... chain-data
Мобильная версия