Вопрос или проблема
У меня есть набор данных, скажем, с 1 миллионом наблюдений. В качестве глупого примера представим, что мы хотим предсказать, может ли человек стать специалистом по данным или нет (0/1). У меня есть переменные, в которых много пропусков, но есть объяснение: людей не спрашивали этот вопрос. Человека могут спросить, проходил ли он когда-либо курс машинного обучения во время учебы. Это создает столбец «да/нет» без пропусков. Но затем мы спрашиваем только тех людей, которые проходили такой курс: когда был последний раз, когда вы проходили курс по машинному обучению? Таким образом, все люди, ответившие «нет» на первый вопрос (много людей), будут иметь пропуски, в то время как информация во втором столбце, вероятно, имеет значение, поэтому ее нельзя удалить.
В таком контексте моим первым вариантом было заполнить пропуски значением $0$. В некоторых случаях это может быть приемлемо. Однако в примере, приведенном выше, глядя только на этот 2-й столбец, $0$ будет указывать на то, что человек прошел курс машинного обучения совсем недавно. Следует ли установить значение на очень большое число? На $\infty$?
Мой второй вопрос: теперь, когда мы решили проблему пропусков во 2-м столбце. Нужно ли удалять первый? Его информация как-то закодирована во втором. Следует ли сохранить оба и включить взаимодействие?
Наконец, я боюсь, что может возникнуть мультиколлинеарность. Если у нас есть 3-й столбец, с таким вопросом, как “Понравился ли вам ваш курс по машинному обучению?” $(-1,1)$, и мы заполнили пропуски значением $0$. Тогда столбцы 2 и 3 могут выглядеть очень похожими.
Я знаю, что нет четкого правила, которому следует следовать, но хотел бы услышать мнения.
Ответ или решение
Заполнение отсутствующих значений произвольными значениями: разбираем проблему
Ваша задача заключается в предсказании того, сможет ли человек стать дата-сайентистом, и для этого у вас есть набор данных с 1 миллионом наблюдений. Учитывая, что в некоторых переменных огромное количество пропущенных значений, важно применять правильные методы обработки данных. Анализируйте ситуацию с учетом ключевых аспектов.
-
Контекст и причины пропусков:
В вашем примере существует две связанные переменные: первая — это информация о том, проходил ли человек курс по машинному обучению, а вторая — время последнего посещения этого курса. Поскольку вы задаете второй вопрос только тем, кто уже прошел курс, возникает много пропущенных значений для тех, кто на него не ходил. Заполнение этих пропущенных значений становится важной задачей. -
Выбор значения для заполнения:
Ваше первое предложение — заполнить пропущенные значения нулями (0) — может привести к путанице. В контексте вашей переменной «Когда был последний курс?» это создает ложное представление о том, что соответствующий человек проходил курс совсем недавно. Вместо этого можно рассмотреть возможность использования значения, которое не «смешивает» пропущенные записи с реальными данными. Это может быть, например, очень большое значение (такое как 9999 или более для соответствующей метрики), чтобы четко обозначить, что у человека не было курса, вместо использования бесконечности (∞), что математически не корректно в большинстве практических применений. -
Оценка значимости переменных:
Что касается вопроса о том, следует ли удалять первую переменную, то это зависит от того, как информация в обеих колонках взаимодействует. Если вы считаете, что первая колонка (да/нет) несет значимую информацию и может повлиять на ваш результат, тогда ее следует оставить. Однако вы также можете рассмотреть возможность создания взаимодействия между двумя переменными, так как это может улучшить производительность модели. -
Анализ многократной коллинеарности:
Присутствие третьей переменной, предполагающей, как человек оценивал свой курс (например, насколько он ему понравился), может осложнить ситуацию. Если вы заполните пропуски нулями, это может привести к высокой корреляции между двумя переменными, что в свою очередь может вызвать проблемы с многократной коллинеарностью. Подобная коллинеарность может негативно сказаться на оценках коэффициентов в модели, вводя ненужную неопределенность. Рассмотрите варианты, такие как использование методов регуляризации (например, LASSO) или применения PCA для снижения размерности, чтобы снизить влияние коллинеарности. -
Заключение и рекомендации:
В конечном итоге, нет универсального ответа на вопросы, касающиеся обращения с пропущенными значениями. Лучше всего опираться на контекст данных и цель анализа, а не следовать строго установленным правилам. Будет разумно провести экспериментальные исследования качества модели, как с заполненными пропущенными значениями, так и с удалением переменных, чтобы понять, как это влияет на результаты.
Таким образом, подход к заполнению пропущенных значений требует внимательности и продуманности. Применяя правильные техники, вы сможете сохранить целостность и качество ваших данных, что в конечном итоге приведет к более точным и надежным прогнозам.