«Как обрабатывать отсутствующие значения в наборе данных?» — это тема, которая появляется в каждом курсе по машинному обучению и является распространенным вопросом на собеседованиях для специалистов по обработке и анализу данных и инженеров по машинному обучению. Такие методы, как удаление данных, замена среднего/медианы и вменение с помощью KNN/DL, часто используются для борьбы с пропущенными значениями.

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

Отсутствующие значения против неприменимых значений

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

С другой стороны, неприменимые значения относятся к случаям, когда значение не может быть применено или не имеет смысла в конкретном контексте. Например, если функция в наборе данных представляет собой цену мобильной подписки клиента, не имеет смысла иметь число в этой функции для клиента без мобильных подписок. По-видимому, в этом случае не имеет смысла применять такие методы, как удаление данных, замена среднего/медианы или вменение.

Теперь снова посмотрите на нулевые значения и «Нет» в вашем наборе данных, действительно ли они пропущены?

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

Как обрабатывать неприменимые значения?

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

Пометка включает заполнение неприменимого значения значением, выходящим за пределы нормального диапазона. Например, если набор данных содержит цены на мобильную подписку, а нормальный диапазон находится в диапазоне от 0 до 1000, мы можем заполнить неприменимые значения такими значениями, как -1000, -99 или -1. Точно так же для категориальных функций мы могли бы заполнить неприменимые значения дополнительной поддельной категорией, такой как «Н/Д», которая позже может быть преобразована в часть кодирования.

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

Выбор значений для заполнения зависит от используемого алгоритма машинного обучения. Для древовидных алгоритмов, таких как случайный лес и XGBoost, значение не имеет большого значения, если оно находится за пределами нормального диапазона. В примере с тарифами на мобильную подписку заполнение неприменимого значения -99999 или -1 будет иметь тот же эффект, что и заполнение -0,0001. Это связано с тем, что алгоритм дерева может легко выполнить разбиение, чтобы отличить эти значения от действительных значений. Однако для линейных моделей масштаб значения может повлиять на то, насколько хорошо оно соответствует линии. Поэтому важно хорошо знать и понимать, какой алгоритм машинного обучения будет применяться при заполнении значений. Чтобы это не искажало данные и не влияло на производительность модели.

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