Вопрос или проблема
Я просто хочу знать, как определить, следует ли удалять отсутствующие значения или заполнять их средним, медианой или модой. Обычно я удаляю отсутствующие значения, но это уменьшает размер датасета более чем на 50%. Может кто-то помочь мне в этом отношении. Я новичок в этой области.
- Игнорирование кортежа эффективно, когда он содержит несколько атрибутов (>50%) с отсутствующим значением ИЛИ значение целевой переменной (метка класса) отсутствует.
- В других случаях можно либо заполнить их средним, медианой или модой, ИЛИ заполнить наиболее вероятными значениями (с использованием интерполяции или регрессии).
Целевая колонка:
- Если у вас есть отсутствующие данные в целевой колонке, лучше удалить эти строки.
Числовая колонка:
- Обычно хорошо заполнять отсутствующие данные медианой, когда колонка числовая.
- Если данные числовые по своей природе и отсутствуют, попробуйте построить
distplot
и посмотрите, нормально ли распределены данные. Если ваши данные нормально распределены, то можно использовать либоmean
, либоmedian
, так как они, скорее всего, будут иметь очень близкие значения.
Категориальная колонка:
- Либо вы можете заполнить отсутствующие числовые значения, например, значением
-999
и рассматривать их как выбросы; вы можете либо удалить эти выбросы, либо использовать некоторые преобразования над ними. - Наконец, если ваши данные категориальные по своей природе, вы можете заменить отсутствующие значения на
-999
. Затем в зависимости от ваших данных (является ли это порядковым или нет) вы можете выбрать использовать либоone hot encoding
, либоlabelencoder
. - Также для категориальных данных вы можете заполнить значения модой.
Вам следует определить, является ли атрибут Пропущенным случайным образом (MAR), Полностью пропущенным случайным образом (MCAR) или Не пропущенным случайным образом.
Для каждой из этих категорий есть рекомендации по тому, когда и как заполнять.
Но как классифицировать атрибуты в вашем датасете как MAR, MCAR, MNAR?
Проводя EDA, например, изучая статистическое распределение значений атрибута.
Лучше всего прочитать современные академические работы на эту тему (я не могу объяснить это должным образом и полностью здесь).
Вы также можете спросить ChatGPT или любую другую LLM, например, с этим запросом: как определить, является ли атрибут пропущенным случайно, не пропущенным случайно, полностью пропущенным случайно?
…Важно отметить, что определить, являются ли отсутствующие данные MCAR, MAR или MNAR, часто трудно и требует тщательного анализа данных и исследовательского вопроса. …
Ответ или решение
Предобработка данных: Раздел о пропущенных значениях
Вопрос о том, как справляться с пропущенными значениями в наборе данных, является важной частью предобработки данных. Ваша задача состоит в том, чтобы определить, следует ли удалять пропущенные значения или заполнять их, используя такие методы, как среднее, медиана или мода.
Определение подхода
-
Удаление пропущенных значений:
- Удаление строк с пропущенными значениями может быть целесообразным, если более 50% признаков в строке пропущены или, если отсутствует значение целевой переменной. В этих случаях такая строка может внести больше шумов, чем полезной информации.
- Если удаление строк приводит к уменьшению размера выборки на более чем 50%, стоит рассмотреть альтернативные методы, так как это может отрицательно сказаться на качестве модели.
-
Импутация пропущенных значений:
Когда вы решаете заполнять пропущенные значения, есть несколько методов:-
Для целевой переменной: Если есть пропущенные значения в целевой переменной, лучше удалить эти строки. Это важно, так как отсутствие значения целевой переменной делает строку бесполезной для обучения модели.
-
Для числовых колонок:
- Обычно рекомендуется заполнять пропущенные значения медианой, так как она более устойчива к выбросам.
- Если данные нормально распределены (это можно проверить с помощью графиков, таких как
distplot
), то можно использовать как среднее, так и медиану.
-
Для категориальных колонок:
- Вы можете заполнить пропуски значениями, такими как
-999
, и обрабатывать их как выбросы, которые можно удалить или обработать. - Альтернативно, пропущенные значения в категориальных данных можно заменить модой, что также может дать приемлемые результаты.
- Вы можете заполнить пропуски значениями, такими как
-
-
Классификация пропущенных данных:
- Важно определить, являются ли ваши данные Missing Completely at Random (MCAR), Missing at Random (MAR) или Missing Not at Random (MNAR).
- MCAR: Пропущенные данные не зависят от значения других переменных.
- MAR: Пропущенные данные зависят от известных значений других переменных.
- MNAR: Пропущенные данные зависят от самих пропущенных значений.
- Для определения типа пропущенных значений можно использовать методы разведывательного анализа данных (EDA), изучая статистическое распределение значений атрибутов.
- Важно определить, являются ли ваши данные Missing Completely at Random (MCAR), Missing at Random (MAR) или Missing Not at Random (MNAR).
Рекомендации
- Важно ознакомиться с современными исследованиями по этой теме, так как каждый случай уникален и может требовать индивидуального подхода.
- Если у вас есть вопросы или вы хотите более детально проанализировать свою ситуацию, рассмотрите возможность использования инструментов искусственного интеллекта, таких как ChatGPT, с соответствующими запросами для получения рекомендаций.
В целом, выбор между удалением и импутацией пропущенных значений зависит от контекста ваших данных и целей анализа. Рассматривайте каждый случай отдельно и применяйте методы, наилучшим образом подходящие для вашей задачи.