- PVSM.RU - https://www.pvsm.ru -
Существующее определение Null в Data Science сильно ограничено. Приложив немножко усилий? мы значительно улучшим обработку данных, ранее попадаемых в Null.
Старая проблема — "Null" проблема [1]. Она была сформулированна в статье Кодда [2] в отношении семантики баз данных.
Программисты должны прикладывать много усилий, чтобы обрабатывать Null значения. Наверное, поэтому они не любят Null и даже продвигали идею, что без Null можно обойтись. Популярно высказывание о том, что включение Null в SQL было ошибкой [3].
Последнее определение — самое часто используемое в БД.
В Data Science распросранено определение Null, как пропущенное (missed) значение.
Здесь [4]Jake VanderPlas обсуждает использование и трактовки Null, NaN, NA, None значений в python, Pandas, numpy.
Ниже я покажу, что существующий подход лишь частично отражает реальность и во многих случаях может быть расширен именно для использования в Data Science.
Рассмотрим типичные случаи, когда в примере (sample), представлющем набор значений, отсутствуют некоторые значения.
Пример: датчик, снимающий значение, не выдал его. Датчик может быть поврежден. Или канал считывания данных может работать нестабильно с пропажей части данных.
Можно детализировать и другие случаи, но мы остановимся только на перечисленных.
Разные Null могут привести к различным последствиям. В вышеприведенных примерах, если Null означает "нет данных", то запустится процедура проверки датчика и канала предачи даннах. Если Null означает "Малая Вероятность", то мы придем к необходимости изменения расчетной формулы, чтобы она могла обрабатывать очень маленькие исходные значения. "Значение повреждено" может привести нас к решению поменять методики получения данных (например методику опроса).
Если мы используем данные для тренировки ML модели, то разделив Null на несколько более конкретных значений, мы извлечем больше информации из входных данных и в результате получим более точную модель.
Рассмотрим типовую в МЛ задачу классифиции документов. Наша цель — разложить документы по нескольким классам. Но некоторые документы не могут быть классифицированны. Причина этому:
В всех этих случаях мы обычно определям класс документа как Null. Но все эти случаи будут лучше обрабатываться, если мы включим в нашу систему классификации все значения, которые часто встречаются и которые имеют смысл: "Данных не хватает", "Конкурирующие значения", "Нет данных", "Другие", "Значение повреждено". Обычно все вышеперечисленные значения будут отмечены как Null и будут удалены из тренировочных наборов данных. Но мы используем нашу модель в реальной жизни, а в ней нам будут попадаться все эти вышеперечисленные значения. И нам совсем не будет лишнее научиться распознавать и поврежденные, и многозначные, и другие подобные значения.
Все вышеизложенное было моей гипотезой. Недавно я проверил ее на классификации документов и гипотеза стала теорией. Качество моей модели ощутимо улучшилось после добавления пяти вышеперечисленных типов классов.
Есть и минус в замене Null на несколько более детальных классов. Null — это абстракция на уровне типов данных, на уровне языка, что дает нам много встроенных функций и методов в обработке данных.
С другой сторны мы по сути добавляем новые классы в нашу систему классификации, что не намного усложняет обработку.
И, как минимум, нам надо явно понимать, что понимается под Null значениями в наших данных. А лучшее понимание данных всегда приведет к лучшим результатам, не правда ли?
Автор: Leo_Gan
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/algoritmy/346896
Ссылки в тексте:
[1] "Null" проблема: https://en.wikipedia.org/wiki/Null_(SQL)
[2] статье Кодда: https://pdfs.semanticscholar.org/fed7/727e4864406ad69362f9500c93011dac7005.pdf?_ga=2.38739811.1556411169.1581898167-1022859956.1581898167
[3] включение Null в SQL было ошибкой: https://en.wikipedia.org/wiki/Null_(SQL)#Criticism
[4] Здесь : https://jakevdp.github.io/PythonDataScienceHandbook/03.04-missing-values.html
[5] Источник: https://habr.com/ru/post/488616/?utm_source=habrahabr&utm_medium=rss&utm_campaign=488616
Нажмите здесь для печати.