Лучшие методы обработки данных для построения эффективных деревьев решений
Деревья решений остаются одним из наиболее интерпретируемых и широко используемых алгоритмов машинного обучения как для классификации, так и для регрессии. Их иерархическая структура, основанная на правилах, отражает принятие решений человеком, делая их выбором для аналитиков и ученых данных. Однако производительность любой модели дерева решений - будь то одно дерево, случайный лес или ансамбль с градиентом - критически зависит от качества данных, подаваемых в него. Сырые данные редко готовы к моделированию; они обычно содержат недостающие записи, непоследовательные категории, выбросы и избыточные функции. Предварительная обработка данных - это систематическое преобразование этих сырых данных в чистый, хорошо структурированный и информативный набор данных. При правильном выполнении предварительная обработка не только повышает точность прогнозирования, но и снижает переобучение, ускоряет обучение и делает полученное дерево более интерпретируемым. Эта статья предоставляет всеобъемлющее руководство по наиболее эффективным методам предварительной обработки данных, специально предназначенным для создания надежных деревьев решений. Мы выходим за рамки основ для охвата передовых стратегий, практических рабочих процессов и распространенных ошибок, гарантируя, что ваши модели хорошо обобщают невидимые данные
Почему предварительная обработка материалов для деревьев решений
В отличие от многих других моделей машинного обучения (например, линейная регрессия, нейронные сети), деревья решений относительно устойчивы к определенным недостаткам данных. Например, они могут обрабатывать нелинейные отношения без явной инженерии функций, и они инвариантны к монотонным преобразованиям функций. Тем не менее, предварительная обработка остается необходимой по нескольким причинам:
- Непоследовательные данные: Отсутствие значений, опечаток или неправильно обозначенных категорий может привести к тому, что дерево сделает расколы, которые не отражают истинные шаблоны, что приведет к предвзятым или нетчным моделям.
- Снижающая сложность: Несоответствующие или избыточные функции вносят шум, увеличивают глубину дерева и повышают риск переобучения.Селективная предварительная обработка сокращает эту сложность.
- Улучшение интерпретируемости: Чистые, хорошо закодированные данные дают деревья с значимыми расколами, которые эксперты домена могут легко понять и проверить.
- Способы создания ансамблей: Такие методы, как случайные леса и повышение градиента, еще более чувствительны к качеству данных, поскольку они объединяют много деревьев. Предварительная обработка гарантирует, что каждое дерево в ансамбле учится на высококачественных сигналах.
Эффективная предварительная обработка для деревьев решений обеспечивает баланс между сохранением присущей структуры данных и устранением препятствий, которые вводят в заблуждение критерий расщепления (например, примеси Джини или энтропии). В следующих разделах подробно описаны наиболее эффективные методы, упорядоченные от основополагающих до передовых.
Обработка недостающих данных: больше, чем простое вычисление
Недостающие данные повсеместно встречаются в реальных наборах данных. Деревья решений могут частично обрабатывать недостающие значения — некоторые реализации (например, в scikit-learn) могут разделять образцы с недостающие значения с использованием «суррогатных расколов». Однако полагаться исключительно на этот встроенный механизм неоптимально, особенно когда доля недостающих данных высока или когда недостающие данные информативны. Правильная стратегия зависит от количества и схемы недостающих.
Выявление механизмов пропажи
Прежде чем выбрать метод, поймите, почему данные отсутствуют:
- Пропажа в Random (MCAR): Отсутствие не имеет отношения к какой-либо другой переменной. Удаление этих записей безопасно, но расточительно.
- Пропуск в Random (MAR): Пропуск зависит от других наблюдаемых переменных (например, женщины чаще пропускают весовой вопрос). Вычисление, которое использует эти другие переменные, работает хорошо.
- Непропуск не случайно (MNAR): Пропажа зависит от самой ненаблюдаемой ценности (например, люди с очень высоким доходом отказываются сообщать о доходах). Это сложно; рассмотрите возможность использования столбца «пропавший индикатор» для обозначения таких случаев.
Методы импутации
Простая вычисление (средний, медианный, режим) быстрая, но часто вводит предвзятость, игнорируя отношения между признаками. Для деревьев решений лучший подход — использовать собственную структуру дерева: можно обучить предварительное дерево прогнозировать недостающие значения для данной особенности с использованием других полных признаков. Это по существу вычисление на основе модели. Другим мощным методом является k-Nearest Neighbors (kNN) вычисление , который заполняет недостающие значения с использованием среднего или медианы k наиболее похожих полных наблюдений. Для категориальных признаков используйте режим или наиболее частого соседа.
Для большой пропажи (например, >50% функции): Рассмотрите возможность полного отказа от функции. Если функция имеет решающее значение, создайте отдельную категорию «пропавших» для категориальных переменных или пропажи флага в качестве двоичного индикатора для числовых функций. Многие реализации дерева решений относятся к этим показателям естественно, позволяя дереву решать, является ли пропажа сама по себе прогностической. Например, в модели прогнозирования оттока отсутствующая «дата последней покупки» может быть сильным сигналом бездействия.
Рекомендуемые библиотеки: панды для базовой ампутации, скикит-ученик SimpleImputer и IterativeImputer для более продвинутых стратегий.
Кодирование категориальных переменных: сохранение порядка без предубеждений
Дерево решений требует ввода цифр. Кодирование трансформирует категории в числа, но выбор метода кодирования сильно влияет на поведение дерева при расщеплении. Ключ заключается в том, чтобы избежать введения искусственных порядковых отношений, которых не существует.
Номинальные vs. порядковые категории
- Обычные категории имеют естественный порядок (например, уровень образования: средняя школа < bachelor’s < master’s). Use Кодирование метки (назначение целых чисел 0,1,2,...) и дерево естественным образом будет собирать разбиения на основе порядка, если порядок выравнивается с целью.
- Номинальные категории (например, цвет: красный, зеленый, синий) не имеют внутреннего порядка. Кодирование этикеток здесь опасно — оно заставляет ложный порядок (красный = 0, зеленый = 1, синий = 2. Дерево может разделиться на «цвет < 1.5” which is meaningless. Instead, use Одно-горячее кодирование : создать двоичную колонку для каждой категории. Это добавляет много функций, но избегает смещения. Для категориальных признаков высокой степени кардинальности (например, ZIP-коды с сотнями категорий), одногорячее кодирование может взорвать пространство функций. Рассмотрите группировку редких категорий в «другое» ведро или использование Целевой кодинг (замените каждую категорию средним значением цели для этой категории), но будьте осторожны с переобучением. Комбинируйте целевое кодирование с перекрестной валидацией, чтобы уменьшить утечку).
Расширенный код для деревьев решений
Некоторые реализации (такие как LightGBM и CatBoost) имеют встроенную категориальную обработку. CatBoost, например, использует упорядоченное целевое кодирование, которое уменьшает переобучение. Если вы строите дерево с нуля или используете scikit-learn, вам нужно кодировать вручную. Всегда оценивайте производительность с различными вариантами кодирования; иногда простое одногорячее кодирование превосходит сложные методы, если кардинальность низкая (< 10). Для очень большой кардинальности (например, 1000+), рассмотрите хеширование функций или встраивание (хотя это может повредить интерпретируемости).
Масштабирование функций: когда это важно и когда это не так
Дерево решений инвариантно к монотонным преобразованиям (масштабирование, логарифм и т. д.), потому что они делятся на основе порогов относительно внутреннего распределения функции. Функция, масштабированная до [0,1], дает те же расколы, что и при масштабировании до [0,100] — дерево просто регулирует порог. Итак, масштабирование обычно не требуется для одного дерева решений . Однако существуют практические сценарии, где масштабирование помогает:
- Методы сборки , такие как усиление градиента, могут использовать регуляризацию, которая выигрывает от масштабируемых функций (например, параметр XGBoost 'max delta step').
- Объединение с другими алгоритмами (например, использование PCA для уменьшения размерности перед деревом решений) требует масштабирования, чтобы предотвратить доминирование функций с большими величинами над основными компонентами.
- Визуализация и интерпретируемость: Масштабирование может упростить обсуждение пороговых значений для различных функций, измеряемых в разных единицах.
Если вы решите масштабировать, используйте масштабирование Min-Max (до [0,1] или [-1,1]) или (z-оценка). Обе работы; Min-Max сохраняет диапазон функции, в то время как стандартизация менее подвержена выбросам. Для деревьев решений стандартизация немного предпочтительнее, потому что она центрирует данные, делая сравнение разделений между функциями более интуитивно понятным.
Оригинальное название: Let the Tree Decide (Mostly)
Деревья решений удивительно устойчивы к выбросам. Поскольку расщепления основаны на статистике порядка, единственное экстремальное значение влияет только на ветвь, которая его содержит. В отличие от линейных моделей, выбросы не вытягивают всю модель. Однако выбросы все еще могут вызывать проблемы:
- Чрезмерная глубина дерева: Дерево может создавать множество расколов, чтобы выделить несколько точек выброса, что приводит к переоборудованию.
- Шумные расщепления: Выбросы могут создавать ложные области, которые не обобщаются, особенно в сочетании с отсутствующими данными.
Наилучшая практика заключается в том, чтобы колпачить или винзоризовать экстремальные значения при разумном процентиле (например, 1-й и 99-й процентили). Альтернативно, трансформировать функции с помощью преобразования log или Box-Cox, чтобы уменьшить искажение, но обратите внимание, что инвариантность дерева означает, что преобразование редко меняет границы решения, если вы также не обрезаете дерево. Для умеренных ситуаций выброса оставьте данные как есть и полагайтесь на обрезку (например, установка 'min samples leaf' или 'max depth') для контроля над обрезкой.
Оригинальное название: Less Is More
Деревья решений автоматически выполняют своего рода выбор функций, выбирая расколы, которые максимизируют прирост информации.Тем не менее, в том числе многие нерелевантные функции могут ухудшить производительность:
- Разбавление шума: Дерево может случайно разделиться на шумную функцию, которая, по-видимому, имеет высокий прирост информации из-за случайности, особенно с небольшими наборами данных.
- Увеличение вычислительной стоимости: Больше возможностей означает больше разбивки кандидатов, замедляя обучение.
- Переоборудование: Дерево может стать излишне сложным.
Используйте методы фильтра (например, корреляция с целевой, ци-квадратный тест для категориальных признаков, взаимной информации) для предварительного выбора верхних k признаков. Методы обертки (например, рекурсивная ликвидация признаков) более точны, но вычислительно дороги. Для деревьев решений простой и эффективный подход заключается в обучении исходного дерева или случайного леса, а затем исследуйте значения признаков. Удалите функции с почти нулевой важностью и переобучение. Этот итеративный подход часто дает более простую, лучше обобщающую модель.
Передовые технологии предварительной обработки
Связывание и дискретизация
Дерево решений естественным образом связывает непрерывные функции в точках разделения. Однако, дискретизация непрерывных функций в небольшое количество бункеров (например, с использованием равноширотных или равночастотных бункеров) иногда может улучшить интерпретируемость и уменьшить переобучение, особенно когда связь между функцией и целью не монотонна. Например, возраст, связанный с «ребенком», «взрослым», «старшим» может создать более интуитивные расколы. Используйте дерево решений - совместимое связывание - например, контролируемое связывание на основе целевой энтропии - для сохранения прогностической силы.
Создание функций взаимодействия
Деревья решений захватывают взаимодействия неявно через иерархические расколы (например, сначала разделяются по возрасту, затем по доходу). Но если взаимодействие является высокопрогностическим и включает в себя функцию с низкой дисперсией, дереву может потребоваться много расколов, чтобы захватить его. Явно создавая новую функцию, которая объединяет две переменные (например, «возраст * доход») может сделать дерево более эффективным. Однако это также может увеличить переобучение. Более безопасный подход заключается в использовании ансамбля модели (случайный лес), который автоматически проверяет многие модели взаимодействия.
Обработка несбалансированных данных
Когда целевые классы сильно несбалансированы (например, обнаружение мошенничества с 1% мошенничеством), деревья решений становятся предвзятыми по отношению к классу большинства.
- Резюме: Подберите пример класса большинства или перепробуйте класс меньшинства, используя SMOTE (Техника пересчета синтетического меньшинства). SMOTE создает синтетические примеры путем интерполяции между k-ближайшими соседями класса меньшинства. Это хорошо работает с деревьями решений, потому что синтетические точки лежат внутри выпуклых корпусов, делая расколы более сбалансированными.
- Система обучения с учетом затрат: Многие реализации деревьев позволяют назначать различные затраты на неправильное классификацию для класса (например, «класс вес =» уравновешенный» в scikit-learn).
- Соединяйтесь со сбалансированной загрузкой: Для случайных лесов используйте сбалансированные образцы загрузочной ловушки, где каждое дерево обучено на сбалансированном подмножестве.
Обработка текста и характеристик даты
Текстные данные: Преобразуйтесь в векторы мешков слов или TF-IDF. Деревья решений (особенно глубокие) все еще могут работать с высокоразмерными разреженными текстовыми функциями, но рассмотрите возможность уменьшения размерности с помощью моделирования темы или извлечения ключевых слов.
Данные о дате/времени: Извлеките циклические признаки (час дня, день недели, месяц) и отнеситесь к ним как к порядковым или номинальным. Для тенденций выведите время из исходной точки. Деревья решений могут хорошо фиксировать сезонность и тенденции, если полученные признаки имеют значение.
Практический рабочий процесс для предварительной обработки данных дерева решений
Систематический рабочий процесс обеспечивает согласованность и предотвращает утечку данных (непреднамеренное использование целевой информации во время предварительной обработки, что делает оценку недействительной).
- Ранее выравнивайте данные: Отделитесь на наборы обучения, проверки и тестирования перед любой предварительной обработкой, которая использует целевую информацию (например, кодирование цели, SMOTE).
- Недостающие значения на обучающем наборе с использованием соответствующего вычисления. Параметры вычисления в хранилище (например, средние значения) применяются к наборам проверки/тестирования.
- Кодировать категориальные переменные на основе категорий обучающих наборов. Для кодирования ярлыков сохранять картографирование; для одногорячих обрабатывать неизвестные категории в тестовом наборе путем их группировки.
- Устранение выпадений (захват) с использованием процентилей, вычисленных на данных обучения.
- При необходимости примените масштабирование признаков (например, для уменьшения ансамбля или размерности).
- Выбор характеристик только с использованием тренировочного набора. Если вы используете значения признаков дерева, убедитесь, что дерево обучено на тренировочном наборе.
- Выборка для дисбаланса на тренировочном наборе (небольшое количество образцов) после расщепления, чтобы избежать утечки синтетических точек в набор проверки.
- Постройте дерево решений с соответствующими гиперпараметрами (например, «max depth», «min samples leaf», «min impurity decrease»).
- Оценить на невидимом наборе тестов для оценки обобщения.
Этот рабочий процесс применяется как к отдельным деревьям, так и к помеченным / повышаемым ансамблям. Для ансамблей рассмотрите возможность добавления этапа выбора функций на основе важности функции после первоначального запуска, а затем перестроить.
Обычные подводные камни и как их избежать
- Утечка данных из вычисления: Никогда не вычисляйте среднее/среднее значение на весь набор данных перед расщеплением. Всегда вычисляйте только на обучающем наборе.
- Одногорячее кодирование, вызывающее разрежение: Для категоричных с высокой степенью сердечности, рассмотрите хеширование или целевое кодирование, чтобы поддерживать управляемый подсчет функций.
- Игнорирование знаний домена: Предварительная обработка не должна быть чисто автоматизированной. Например, в медицинских данных отсутствующее лабораторное значение может означать «тест не заказан», а не «неизвестен».
- Переподгонка на небольших наборах данных: Используйте более простую предварительную обработку (функции капель со многими недостающие значения, используйте базовую вычисление) и тяжелую обрезку.
- Предполагая, что масштабирование всегда не требуется: Хотя это верно для одного дерева, деревья с градиентным повышением (например, XGBoost) могут извлечь выгоду из масштабируемых функций при использовании параметров регуляризации.
Заключение
Предварительная обработка данных не является универсальной задачей; лучшие методы зависят от конкретных характеристик вашего набора данных и выбранного вами варианта дерева решений. Однако принципы остаются неизменными: цель - чистые, хорошо структурированные данные, которые сохраняют значимые шаблоны при удалении шума. Начиная с надежной обработки отсутствующих значений, тщательного кодирования категориальных переменных и продуманного выбора функций, будет иметь наибольшие улучшения. Передовые методы, такие как связывание, функции взаимодействия и повторная выборка, могут дополнительно повысить производительность, особенно при работе со сложными, высокоразмерными или несбалансированными данными.
Помните, что предварительная обработка является итеративной. После обучения начальной модели проверьте полученное дерево — его глубину, функции, используемые для разделения, и распределение прогнозов — чтобы понять, где качество данных все еще может отсутствовать. Используйте экспертизу домена, чтобы подтвердить, что расколы имеют смысл. Инвестируя время в правильную предварительную обработку, вы строите деревья решений, которые не только точны, но также интерпретируемы и надежны, что делает их ценными активами в любом наборе инструментов для науки о данных.