Вопрос или проблема
В настоящее время я пытаюсь создать несколько функций для улучшения производительности модели. Одна из этих функций, которую я хотел бы создать, соответствует разнице в днях между покупкой клиента и его последней покупкой. Создать эту функцию не проблема. Однако я не знаю, какое значение установить, если это первая покупка клиента. Какое значение следует установить и, более общо, как обрабатывать такие случаи?
customer_id date_purchase diff_last_purchase first_purchase
0 1 2018.02.12 NaN 1
1 1 2018.02.18 6.0 0
2 2 2018.02.25 NaN 1
3 3 2018.03.15 NaN 1
4 3 2018.03.18 3.0 0
Недавно обсуждали такую же тему на работе. В итоге пришли к кодированию пропущенных значений как невозможных (отрицательные, очень высокие) или как информации, выведенной из набора данных (среднее, медиана). Некоторые более сложные методы используют модели, построенные на оставшихся данных (непропущенные столбцы), чтобы предсказать пропущенные.
Если используется подход на основе деревьев, установка значения -1 может быть хорошим началом, поскольку могут быть наблюдения, где предыдущая покупка была в тот же день (0).
С моделями, ориентированными на среднее (линейная регрессия), установка на среднее тоже может быть приемлемой, но необходимо вычислить среднее только на обучающем наборе и отдельно применить его к тестовому набору.
В общем, если мы не знаем причину отсутствующих данных, трудно правильно их обработать. Эта причина может существенно повлиять на наш вывод. Поэтому моя первая рекомендация всегда пытаться выяснить, почему данные отсутствуют в первую очередь.
Обычно существуют 3 типа отсутствующих данных: (Определения на Википедии)
- Полностью случайное отсутствие данных
Значения в наборе данных отсутствуют полностью случайно (MCAR), если события, приводящие к отсутствию любых данных-элементов, независимы как от наблюдаемых переменных, так и от ненаблюдаемых параметров интереса и происходят полностью случайно. Когда данные MCAR, проведенный анализ является непредвзятым; однако данные редко бывают MCAR.
- Отсутствие данных случайным образом
Отсутствие данных случайным образом (MAR) происходит, когда отсутствие данных не является случайным, но может быть полностью объяснено переменными, по которым имеется полная информация. Поскольку MAR является предположением, которое невозможно статистически проверить, мы должны полагаться на его содержательную разумность.
- Отсутствие данных не случайным образом
Отсутствие данных не случайным образом (MNAR) (также известно как неигнорируемый неответ) — это данные, которые не являются ни MAR, ни MCAR (то есть значение переменной, которая отсутствует, связано с причиной ее отсутствия).
Тоже из этой страницы Википедии:
Отсутствие данных снижает репрезентативность выборки и, следовательно, может исказить выводы о населении. В общем, существуют три основных подхода к обработке отсутствующих данных: (1) Импутация — когда значения заполняются вместо отсутствующих данных, (2) исключение — когда образцы с недопустимыми данными исключаются из дальнейшего анализа и (3) анализ — с прямым применением методов, не затронутых отсутствующими данными.
“В случае MCAR отсутствие данных не связано с каким-либо изучаемым переменным”, поэтому вы можете просто их удалить или применить разумную импутацию и продолжать анализировать данные. Я знаю только один тест для проверки MCAR, это Тест Литтла.
Я не знаю, как справляться со вторым и третьим случаями, так что все, что я могу сказать, — пожалуйста, обращайтесь с ними осторожно. Если доля отсутствующих данных слишком велика, я просто удаляю весь датафрейм.
Ответ или решение
Теория
Когда речь идет о работе с неопределенными или отсутствующими значениями, важно понимать природу этих данных. В зависимости от типа отсутствия, стратегии их обработки могут различаться. Общепринято выделять три категории отсутствующих данных:
- MCAR (Missing Completely at Random) — данные отсутствуют полностью случайным образом. Отсутствие значения не связано ни с каким другим наблюдаемым или скрытым параметром.
- MAR (Missing at Random) — отсутствие данных можно объяснить наблюдаемыми переменными. Пример: клиент не выходит на связь из-за особенностей демографического сегмента.
- MNAR (Missing Not at Random) — отсутствие данных связано с самими отсутствующими значениями. Например, клиенты, прекратившие покупки, не имеют записей о последующих покупках.
Каждая из этих категорий требует особого подхода к обработке.
Пример
Ваша задача — добавить признак, определяющий разницу в днях между текущей и предыдущей покупкой клиента. Тем не менее, для первых покупок клиентов это значение неопределено.
Применение
-
Определение типа отсутствия данных:
- Определите, является ли отсутствие данных MCAR, MAR или MNAR. Это знание определит подход к обработке данных. Для этого используйте такие методы, как Тест Литтла для проверки гипотезы MCAR.
-
Обработка значений:
- MCAR: Можно безопасно заполнить отсутствующие значения средним, медианой или другим статистически обоснованным показателем. Для вашего случая, можно использовать фиксированное значение, например, 0 или -1, чтобы подчеркнуть факт первой покупки.
- MAR: Используйте иммутацию, полагаясь на другие доступные данные. Например, можете учитывать такие факторы, как демография клиента или категория продукта.
- MNAR: Необходимо учитывать, что простая иммутация может повлиять на точность модели, так как отсутствующие данные могут представлять собой значимые факторы.
-
Выбор модели:
- Если ваша модель основана на деревьях решений, установка фиктивных значений, таких как -1, может быть достаточной.
- Для регрессионных моделей стоит посмотреть на такие стратегии, как использование среднего или медианы тренировочного набора.
-
Проверка и корректировка:
- После введения решения проверяйте модель на предмет улучшения или ухудшения производительности. Это может потребовать корректировок в методах обработки данных.
Заключение
Эффективное управление отсутствующими данными является ключом к оптимизации моделей машинного обучения. Важно не только корректно обрабатывать данные, но и понимать причины их отсутствия. Это повысит доверие к выводам вашей модели и позволит избежать искажений, вызванных неопределенностью данных.