Отсутствующие значения (службы Analysis Services — интеллектуальный анализ данных)
Недостающее значение в данных может указывать на различные обстоятельства. Возможно, поле неприменимо, не произошло событие или данные не были доступными. Возможно также, что пользователь, вводивший данные, не знал, какое значение является правильным, или не задумывался над тем, что поле должно быть заполнено. Поэтому в службах Analysis Services предусмотрены два существенно различающихся механизма для управления и проведения вычислений над этими недостающими значениями, известными также как значения NULL.
Если моделируемая задача требует, чтобы какой-то столбец не мог ни при каких обстоятельствах содержать недостающие значения, то необходимо использовать флаг модели NOT_NULL при определении структуры интеллектуального анализа данных. Это позволяет гарантировать, что обработка окончится неудачей, если в некотором варианте будет отсутствовать соответствующее значение. Если при обработке модели возникнет ошибка, можно зарегистрировать эту ошибку в журнале и предпринять шаги по исправлению данных, предоставляемых для модели. Предусмотрен набор средств, которые могут использоваться для логического вывода и заполнения требуемых значений, например преобразование «Уточняющий запрос» или задача «Профайлер данных» в службах SQL Server Integration Services, а также средство «Заполнение по примеру», предоставляемое в надстройках интеллектуального анализа данных для Excel.
Однако имеется много сценариев интеллектуального анализа данных, в которых недостающие значения предоставляют важную информацию. Обычно в службах Analysis Services недостающие значения рассматриваются как информативные, а вероятность включения недостающих значений в вычисления настраивается. Это позволяет обеспечить сбалансированность моделей и не слишком большой объем существующих вариантов. В настоящем разделе приведено описание того, как значения Missing определяются и учитываются в моделях, допускающих значения NULL. Кроме того, в данном разделе показано, как значения Missing обрабатываются в алгоритмах интеллектуального анализа данных и используются при создании модели.
Примечание |
---|
Каждый алгоритм, включая пользовательские алгоритмы, которые могут быть получены в виде подключаемого модуля стороннего разработчика, может обрабатывать недостающие значения по-разному. |
Использование недостающих значений в моделях
В рассматриваемом алгоритме интеллектуального анализа данных недостающие значения являются информативными. В таблицах вариантов состояние Missing рассматривается как допустимое состояние, подобно любому другому состоянию. Кроме того, в модели интеллектуального анализа данных могут использоваться другие значения для прогнозирования того, является ли некоторое значение недостающим. Иными словами, тот факт, что некоторое значение отсутствует, не рассматривается как ошибка.
При создании модели интеллектуального анализа данных состояние Missing автоматически добавляется к модели применительно ко всем дискретным столбцам. Например, если входной столбец для представления пола, Gender, содержит два возможных значения, Male (мужской) и Female (женский), то автоматически добавляется третье значение для представления значения Missing, а гистограмма, показывающая распределение всех значений для этого столбца, всегда включает данные о количестве вариантов со значениями Missing. Если в столбце Gender отсутствуют недостающие значения, то гистограмма показывает, что состояние Missing обнаружено в 0 вариантах.
Включение состояния Missing по умолчанию имеет смысл, если есть основание полагать, что в данных могут не обнаруживаться примеры всех возможных значений, но не должно быть так, чтобы модель исключала данную вероятность лишь потому, что в данных нет соответствующего примера. Например, даже если данные о сбыте, относящиеся к какому-то магазину, показали, что все клиенты, приобретавшие определенный продукт, оказались женщинами, то вряд ли следует создавать модель, которая прогнозирует, что данный продукт могут приобретать только женщины. Вместо этого в службах Analysis Services добавляется местозаполнитель для дополнительного неизвестного значения, называемый Missing, который становится основой способа учета других возможных состояний.
Например, в следующей таблице показано распределение значений для узла (All) в модели дерева решений, созданной для занятия «Покупатель велосипеда». В сценарии, рассматриваемом в этом примере, столбец [Bike Buyer] представляет собой прогнозируемый атрибут, где 1 обозначает «Да», а 0 — «Нет».
Значение |
Варианты |
---|---|
0 |
9296 |
1 |
9098 |
Отсутствует |
0 |
Это распределение показывает, что приблизительно половина клиентов приобрела велосипед, а другая половина — нет. Этот конкретный набор данных является очень качественным, поэтому для каждого варианта в столбце [Bike Buyer] предусмотрено значение, а количество значений Missing равно 0. Но если бы в каком-то из вариантов в поле [Bike Buyer] имелось значение NULL, то в службах Analysis Services эта строка рассматривалась бы как вариант со значением Missing.
Если входные данные представляют собой непрерывный столбец, то в данной модели два возможных состояния для атрибута были бы сведены в таблицу: Existing и Missing. Иными словами, столбец либо содержит значение с некоторым числовым типом данных, либо не содержит никакого значения. Для вариантов, в которых значение имеется, в этой модели вычисляется среднее, стандартное отклонение и другие значимые статистические показатели. Для вариантов, в которых значение отсутствует, в этой модели предоставляются данные о количестве значений Missing, а также корректируются прогнозы соответствующим образом. Применяемый метод корректировки прогнозов зависит от алгоритма и рассматривается в следующем разделе.
Примечание |
---|
Что касается атрибутов во вложенной таблице, недостающие значения там не являются информативными. Например, если некоторый клиент не приобрел определенный продукт, то во вложенной таблице Products будет отсутствовать строка, соответствующая этому продукту, а в модели интеллектуального анализа данных не появится атрибут, относящийся к отсутствующему продукту. Но если интерес представляют клиенты, которые не приобрели определенные продукты, то можно создать модель, предусматривающую фильтрацию по критерию отсутствия продуктов во вложенной таблице, используя инструкцию NOT EXISTS в фильтре модели. Дополнительные сведения см. в разделе Как применить фильтр к модели интеллектуального анализа данных. |
Корректировка вероятности применительно к недостающему значению
Кроме подсчета значений службы Analysis Services вычисляют вероятность любого значения по всему набору данных. Это касается и значений Missing. Например, в следующей таблице показана вероятность, относящаяся к вариантам в предыдущем примере.
Значение |
Варианты |
Вероятность |
---|---|---|
0 |
9296 |
50.55 % |
1 |
9098 |
49.42 % |
Отсутствует |
0 |
0.03 % |
Может показаться странным, что рассчитанная вероятность значения Missing равна 0,03%, тогда как количество таких вариантов составляет 0. Но фактически это поведение определено проектом и представляет собой настройку, позволяющую верно обрабатывать в модели неизвестные значения.
Обычно вероятность рассчитывается как количество благоприятных вариантов, деленное на количество всех возможных вариантов. В этом примере алгоритм вычисляет сумму количества вариантов, соответствующих определенному условию ([Bike Buyer] = 1 или [Bike Buyer] = 0), после чего полученное значение делится на общее количество строк. Однако чтобы учесть варианты Missing, к количеству всех возможных вариантов добавляется 1. В результате вероятность неизвестного варианта больше не равна нулю, но составляет очень небольшую величину, которая указывает, что это состояние просто маловероятно, но возможно.
Добавление небольшого значения Missing не приводит к изменению результата прогноза, однако позволяет усовершенствовать моделирование в сценариях, где данные с предысторией не содержат все возможные исходы.
Примечание |
---|
Поставщики интеллектуального анализа данных различаются способами обработки недостающих значений. Например, некоторые поставщики исходят из предположения, что недостающие данные во вложенном столбце являются разреженным представлением, а наличие недостающих данных в невложенном столбце определяется случайным распределением. |
Если достоверно известно, что в данных определены все исходы и нужно исключить возможность корректировки вероятностей, необходимо задать флаг модели NOT_NULL для соответствующего столбца в структуре интеллектуального анализа данных.
Специальная обработка недостающих значений в моделях дерева принятия решений
В алгоритме дерева принятия решений (Майкрософт) вероятности недостающих значений вычисляются иначе по сравнению с другими алгоритмами. Алгоритм дерева принятия решений не просто прибавляет 1 к общему количеству вариантов, а использует немного другую формулу для корректировки с учетом недостающих состояний.
В модели дерева принятия решений вероятность недостающего состояния рассчитывается следующим образом:
ВероятностьСостояния = (АприорнаяВероятностьУзла)* (НесущееМножествоСостояния + 1) / (НесущееМножествоУзла + ВсегоСостояний).
Кроме того, в службах SQL Server 2008 Analysis Services алгоритм дерева принятия решений предоставляет возможность проведения дополнительной корректировки, что позволяет скомпенсировать в алгоритме присутствие фильтров в модели, а это может привести к исключению многих состояний во время обучения.
В SQL Server 2008 предусмотрено, что если некоторое состояние присутствует во время обучения, но при этом обнаруживается, что это состояние в определенном узле имеет нулевое несущее множество, то выполняется стандартная корректировка. Однако если некоторое состояние так и не обнаруживается во время обучения, то алгоритм задает его вероятность точно равным 0. Эта корректировка применяется не только к недостающему состоянию, но и к состояниям, которые существуют в обучающих данных, но получают нулевое несущее множество в результате фильтрации модели.
Эта дополнительная корректировка приводит к тому, что вступает в силу следующая формула.
ВероятностьСостояния = 0,0, если это состояние имеет нулевое несущее множество в обучающем наборе
ELSE ВероятностьСостояния = (АприорнаяВероятностьУзла)* (НесущееМножествоСостояния + 1) / (НесущееМножествоУзла + ВсегоСостоянийСНенулевымНесущимМножеством)
Результатом применения этой корректировки является поддержание стабильности дерева.