Импутация пропущенных значений в наборе данных

Вопрос или проблема

У меня есть два отдельных файла для тестирования и обучения.

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

Но в данных для тестирования я не могу позволить себе удалить строки, поэтому я выбрал заполнение пропущенных значений с помощью метода KNN.

Мой вопрос: достаточно ли учитывать только данные теста, чтобы заполнить пропущенные значения с помощью KNN? То есть соседи только в данных теста?

Как общее правило, следует избегать выполнения разных действий между вашими обучающим и тестовым наборами данных. Как второе общее правило, редко используется KNN для заполнения пропущенных значений.

Один из эффективных способов решения проблемы пропущенных значений в вашем случае — использовать модель, которая может справляться с пропущенными значениями, например, дерево решений, случайный лес, xgboost и т. д.

Я согласен с предыдущим ответом, что можно использовать модели, которые справляются с пропущенными значениями.

Но если вы привязаны к конкретной модели, и NaN не обрабатываются этой моделью, вам придется заполнять данные. KNN может быть не лучшим способом заполнения данных… по крайней мере, это не является общепринятым способом. Вместо этого используйте простой нейронный сеть для прогнозирования пропущенных значений. Альтернативно, среднее по похожим группам может с легкостью решить задачу (см., например, https://www.kaggle.com/c/titanic/discussion/157929Отсутствующие возраста на Титанике – Некоторые перспективы от базового до продвинутого для некоторых из продвинутых стратегий (специфично для сценария Титаника).

Если вы участвуете в соревновании Kaggle, это общепринятая практика смешивать обучающие и тестовые данные для заполнения значений. Однако если это несоревновательное приложение, я бы не советовал это делать, иначе могут возникнуть утечки.

Ответ или решение

Теория

Импутация пропущенных значений в датасете – это важный этап предобработки данных, особенно когда речь идет о применении алгоритмов машинного обучения. Пропуски могут негативно влиять на качество модели, поэтому важно правильно выбрать подход к их замене. Существует несколько методов импутации, включая:

  1. Простые Статистические Методы: Среднее, медиана, мода.
  2. Алгоритмические Подходы: Например, метод k ближайших соседей (KNN), который рассматривает ‘соседние’ данные для заполнения пропусков.
  3. Моделирование: Использование моделей, способных к обработке пропусков, например, деревья решений и их ансамбли (Random Forest, XGBoost).

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

Пример

Рассмотрим ваш случай, в котором для тренировочного набора данных применялось простое удаление строк с большим количеством пропусков. На тестовом наборе данных это неприемлемо, и вы рассматриваете метод KNN для заполнения пропусков. Метод KNN популярный из-за своей способности использовать ‘похожие’ наблюдения для импутации, но у него есть свои недостатки, такие как сложность вычислений при больших объемах данных и чувствительность к выбросам.

Кроме этого, стоит помнить о том, что, хотя в конкурсах на платформах вроде Kaggle иногда допустимо объединение тренировочного и тестового наборов для улучшения качества импутации, в реальных сценариях это может привести к утечкам, искажая результаты. В дальнейшем разработке модели, важно избегать этой практики, если не хотите получить необъективные результаты.

Применение

Для вашего случая, прежде чем применять KNN к тестовому набору, оцените возможность использования методов, которые лучше справляются с пропусками. Например, модели деревьев решений (Decision Tree, Random Forest, XGBoost) не только не требуют иммутации пропусков, но и дают отличные результаты даже на шумных данных.

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

Также рассматривайте использование кластеризации для группирования данных перед иммутацией, что позволит использовать различные импутации для разных кластеров данных. Это приведет к повышению точности работы модели с пропущенными данными. Разделение данных на кластеризованные группы усилит влияние схожих по стилю записей на процесс иммутации.

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

Оцените материал
Добавить комментарий

Капча загружается...