Текущее определение Null в Data Science очень ограничено.
С небольшим усилием? Мы существенно улучшим обработку данных, которые раньше попадали в Null. Старая проблема - «Нулевая» проблема .
Он был сформулирован в Статья Кодда относительно семантики базы данных.
Программистам приходится прикладывать немало усилий для обработки значений Null. Вероятно, поэтому они не любят Null и даже продвигают идею, что без Null можно обойтись.
Существует популярная поговорка, что включение Null в SQL было ошибкой .
Существуют следующие определения Null:
- Нет в наличии
- Непригодный
- пропущенный
- неизвестный
Но в Data Science определение Null распространено как отсутствующее значение.
Здесь Джейк ВандерПлас обсуждает использование и интерпретацию значений Null, NaN, NA, None в Python, Pandas, numpy. Ниже я покажу, что существующий подход лишь частично отражает реальность и во многих случаях может быть расширен специально для использования в Data Science. Здесь дает хороший обзор текущего положения дел с пропущенными данными (спасибо АлканСте !) Рассмотрим типичные случаи, когда в выборке, представляющей набор значений, отсутствуют некоторые значения.
Нет данных
Пример: датчик, считывающий значение, не выдал его.Датчик может быть поврежден.
Либо канал чтения данных может работать нестабильно, часть данных отсутствует.
Не уверен
- Конкурирующие ценности : алгоритм классифицировал значение как A и B с равной вероятностью.
По существующему правилу мы не пишем два значения одновременно, а пишем как Null.
- Низкая вероятность : Алгоритм классифицировал значение как A, но с очень низкой вероятностью.
По существующему правилу мы не можем принять значение А.
- Большая ошибка : Значение считывается с датчика.
Значение получено с погрешностью, превышающей допустимое значение, и мы не можем определить значение с необходимой достоверностью.
Но при этом мы видим, что значение с датчика получено.
Повреждать
- выброс : Поле «возраст человека» содержит значение 1000 лет. На этапе проверки мы обнаружили эту ошибку и заменили значение 1000 на Null.
Разные значения Null могут привести к разным последствиям.
В приведенных примерах, если Null означает «нет данных», то запустится процедура проверки датчика и канала данных.
Если Null означает «Низкая вероятность», тогда нам придется изменить формулу расчета, чтобы она могла обрабатывать очень маленькие входные значения.
«Ценность повреждена» может привести нас к решению изменить методы сбора данных (например, методологию опроса).
Если мы используем данные для обучения модели ML, то, разделив Null на несколько более конкретных значений, мы извлечем больше информации из входных данных и получим более точную модель.
Замена Null классами Давайте рассмотрим типичную задачу ML по классификации документов.
Наша цель — сортировать документы по нескольким классам.
Но некоторые документы не могут быть засекречены.
Причина этого:
- Текст слишком короткий, чтобы понять, что это за класс.
Мы получаем дело Данные отсутствуют .
- Документ содержит несколько частей, относящихся к разным классам.
Происходит Конкурирующие ценности .
- У нас есть полный документ. Текста у нас достаточно, текст не поврежден и не двусмысленен.
Но, несмотря на это, мы не можем отнести документ к одному из доступных типов.
Текст документа указывает на класс, который для нас не определен.
Этот класс можно определить как Другой .
- Документ здесь вообще не имеет текста, но при этом имеет остальные характеристики документа, такие как: название, автор, дата создания и т.д. Нет данных .
- Файл поврежден, несколько документов порваны в разных местах.
Происходит Значение повреждено .
.
Обычно все приведенные выше значения помечаются как Null и удаляются из наборов обучающих данных.
Но мы используем нашу модель в реальной жизни, и в ней мы встретим все эти вышеперечисленные значения.
И нам будет полезно научиться распознавать испорченные, многозначные и другие подобные значения.
Во многих случаях такое проектирование признаков может значительно улучшить качество классификации.
Есть и обратная сторона замены Null несколькими более подробными классами.
Null — это абстракция на уровне типа данных, на уровне языка, которая дает нам множество встроенных функций и методов обработки данных.
По сути, мы добавляем новые классы в нашу систему классификации, что не усложняет обработку.
И, как минимум, нам нужно четко понимать, что означают значения Null в наших данных.
А лучшее понимание данных всегда приведет к лучшим результатам, не так ли? Теги: #Машинное обучение #Алгоритмы #машинное обучение #наука о данных #Инженерия данных #Обработка естественного языка #Семантика #null #na #nan #None
-
Упрощение Сборки Сборок В Unity3D
19 Oct, 24 -
Бесшовная Интеграция – Все Наоборот
19 Oct, 24 -
Книга «Недизайнерская Книга О Дизайне»
19 Oct, 24