Запрос моделей интеллектуального анализа данных (службы Analysis Services — интеллектуальный анализ данных)

Обучив модель интеллектуального анализа данных, ее можно исследовать с помощью пользовательских средств просмотра, предоставляемых средой разработки Среда SQL Server Management Studio и Business Intelligence Development Studio. Однако для прогнозов и для получения усложненных или конкретизированных сведений нужно создавать запросы к модели интеллектуального анализа данных. Запросы помогают лучше понять содержащуюся в модели информацию и работать с ней следующим образом:

  • создавать одиночные и пакетные прогнозы;

  • узнавать больше о закономерностях, обнаруженных моделью;

  • просматривать подробные сведения обучающих вариантов для конкретного шаблона или подмножества модели;

  • детализировать варианты, содержащиеся в модели;

  • извлекать формулы, правила и статистические данные обо всей модели, ее подмножестве, всех данных модели или их подмножестве.

В службах SQL Server Службы Analysis Services существует графический интерфейс для создания запросов, а также язык запросов, называемый языком расширений интеллектуального анализа данных, полезный при создании пользовательских прогнозов и сложных запросов. Для построения прогнозирующих запросов на языке расширений интеллектуального анализа данных можно пользоваться построителями запросов, предоставляемыми как средой Среда SQL Server Management Studio, так и средой Business Intelligence Development Studio. В среде Среда SQL Server Management Studio есть также шаблоны DMX-запросов.

Дополнительные сведения об использовании построителя запросов см. в разделе Использование построителя прогнозирующих запросов для создания прогнозирующих запросов расширений интеллектуального анализа данных.

Дополнительные сведения об использовании шаблонов DMX-запросов см. в разделах Создание запросов расширений интеллектуального анализа в среде SQL Server Management Studio и Как использовать шаблоны в среде SQL Server Management Studio.

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

  • Прогнозирующие запросы

    • Одноэлементные прогнозирующие запросы

    • Пакетные прогнозирующие запросы

    • Прогнозы временных рядов

  • Запросы содержимого

  • Запросы, определяющие данные

Прогнозирующие запросы

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

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

И одноэлементные, и пакетные запросы используют конструкцию PREDICTION JOIN для определения новых данных: разница в том, как задается входная сторона прогнозируемого соединения. В одноэлементном запросе данные передаются встроенными, как часть запроса. В пакетном запросе данные поступают из внешнего источника данных, задаваемого конструкцией OPENQUERY. Дополнительные сведения см. в разделе OPENQUERY (расширения интеллектуального анализа данных).

Кроме того, в моделях временных рядов можно делать прогнозы на основе самой модели, без ввода новых данных, только на основе существующих временных последовательностей.

В следующем разделе содержатся сведения о создании перечисленных типов запросов.

Тип запроса

Параметры запроса

Одноэлементный прогнозирующий запрос

Создание прогноза относительно одного нового варианта или нескольких новых вариантов, вводимых в запрос.

Пакетные прогнозы

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

Прогнозы временных рядов

Прогноз определенного числа будущих этапов на основании существующей модели.

Прогнозы на основе составных серий, которые образуются в результате добавления новых данных к существующей модели.

Применение существующей модели к новым рядам данных с помощью параметра REPLACE_MODEL_CASES.

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

Для настройки информации, возвращаемой прогнозирующим запросом, к нему добавляются прогнозирующие функции. Каждый тип модели или запроса поддерживает конкретные функции. Например, в моделях кластеризации поддерживаются особые прогнозирующие функции, предоставляющие дополнительные сведения о созданных в модели группах. Модели временных рядов поддерживают прогнозирующие функции, вычисляющие разницу между определенными моментами времени. Существуют также общие прогнозирующие функции, работающие почти для всех типов моделей. Список прогнозирующих функций, поддерживаемых различными типами запросов, см. в разделе Сопоставление функций с типами запросов (расширения интеллектуального анализа данных). Полный список прогнозирующих функций см. в разделе Справочник по функциям расширений интеллектуального анализа данных.

В начало

Одноэлементные запросы

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

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

Одноэлементные запросы к существующей модели можно создавать следующими способами:

  • используя конструктор интеллектуального анализа данных;

  • с помощью шаблона одноэлементных запросов;

  • создавая инструкции расширений интеллектуального анализа данных программным способом или в другом клиенте служб Службы Analysis Services.

При создании одноэлементного запроса нужно предоставить модели новые данные в виде PREDICTION JOIN (прогнозируемого соединения). Это означает, что, даже если сопоставление с существующей таблицей не производится, нужно убедиться, что новые данные соответствуют существующим столбцам модели интеллектуального анализа данных. Если новые столбцы данных и новые данные полностью соответствуют, службы Службы Analysis Services установят соответствие столбцов автоматически. Такое прогнозирующее соединение называется естественным (NATURAL PREDICTION JOIN). Однако если столбцы не подходят или новые данные содержат иной тип или количество данных по сравнению с моделью, нужно указать соответствие столбцов модели новым данным или задать отсутствующие данные.

Сведения о создании одноэлементного запроса с помощью конструктора интеллектуального анализа данных см. в разделах Как создать одноэлементный запрос в конструкторе интеллектуального анализа данных и Использование построителя прогнозирующих запросов для создания прогнозирующих запросов расширений интеллектуального анализа данных.

Сведения о том, как создать одноэлементный прогнозирующий запрос с помощью расширений интеллектуального анализа данных, см. в разделе Прогнозирующие запросы (расширения интеллектуального анализа данных).

Пример использования шаблонов DMX-запросов в среде Среда SQL Server Management Studio см. в разделе Как создать одноэлементный прогнозирующий запрос из шаблона.

В начало

Пакетные прогнозирующие запросы

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

Пакетные прогнозирующие запросы к существующей модели создаются следующими способами:

  • используя конструктор интеллектуального анализа данных;

  • с помощью шаблона;

  • создавая инструкции расширений интеллектуального анализа данных программным способом или в другом клиенте служб Службы Analysis Services;

  • при создании пакетного прогнозирующего запроса с помощью конструктора интеллектуального анализа данных следует сначала определить внешний источник данных как представление источника данных;

если для создания прогнозируемого соединения используются расширения интеллектуального анализа данных, внешний источник данных можно задать одной из следующих команд: OPENQUERY, OPENROWSET или SHAPE. По умолчанию для доступа к данным в шаблонах расширений интеллектуального анализа данных используется команда OPENQUERY. Сведения об этих методах см. в разделе <source data query>.

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

Чтобы получить наилучший результат, нужно сопоставить как можно больше совпадающих столбцов данных столбцам модели. Однако запрос завершится успешно, даже если вообще не указать сопоставлений. Если столбцы данных не сопоставить столбцам модели, результатом запроса будет граничный прогноз, эквивалентный инструкции SELECT <predictable-column> FROM <model> без предложения PREDICTION JOIN.

Работа с результатами прогнозирующего запроса

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

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

Дополнительные сведения и примеры плоских наборов строк см. в разделе SELECT (расширения интеллектуального анализа данных).

Прогнозы для моделей временных рядов

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

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

При любом из этих подходов начальной точкой прогноза всегда будет конец исходной последовательности.

Допустим, существующая модель временных рядов обучалась на прошлогодних данных по продажам. За несколько месяцев накопились новые данные по продажам, и теперь нужно обновить прогноз продаж для текущего года. Можно создать прогнозируемое соединение, которое обновит модель, добавив новые данные, и расширит ее для выполнения новых прогнозов.

Другой вариант — построить модель на основе существующих данных, а затем создать прогнозируемое соединение, которое заменит существующие варианты новыми данными. Это полезно, если, например, по какому-то магазину собрано недостаточно данных и прогнозирования нужно делать с помощью модели на основе данных других магазинов. Дополнительные сведения о создании прогнозируемых соединений на моделях временных рядов см. в разделах «Запросы к моделям временных рядов» или PredictTimeSeries (расширения интеллектуального анализа данных).

В начало

Запросы содержимого

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

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

Тип запроса

Параметры запроса

SELECT FROM <модель>.CASES

Поиск вариантов, которые использовались для обучения или проверки модели. Детализация данных, включая столбцы базовой структуры интеллектуального анализа данных.

SELECT FROM <структура>.CASES

Просмотр всех данных, включенных в структуру, в том числе столбцов, не вошедших в конкретную модель интеллектуального анализа данных.

SELECT FROM <модель>.CONTENT

Получение дополнительных сведений об определенных узлах модели, в том числе правил, формул, числа вариантов в несущем множестве узла, дисперсии вариантов в узле и т. д.

SELECT FROM <модель>.DIMENSIONCONTENT

Поддерживает запросы к измерениям интеллектуального анализа данных

Этот тип запроса служит в основном для внутреннего использования. При создании собственного подключаемого алгоритма эту конструкцию можно использовать для тестирования моделей.

Эту функциональность поддерживают не все алгоритмы. Поддержка обозначается флажком в наборе строк схемы MINING_SERVICES.

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

Рассмотрим запрос, использующий синтаксис SELECT FROM <model>.CONTENT. Возвращаемые запросом данные будут сильно отличаться для модели кластеризации последовательностей, модели деревьев решений и модели временных рядов. Для модели взаимосвязей иногда бывает нужно получить описание конкретных правил, чтобы использовать их в пользовательском приложении. Для модели временных рядов или модели кластеризации последовательностей нужно бывает получить дополнительные сведения о временных закономерностях, обнаруженных в модели.

В последующих разделах приводятся примеры, дающие представление о полноте и разнообразии сведений, предоставляемых запросами содержимого. Однако сведения о содержимом модели интеллектуального анализа данных и о содержимом, специфичном для каждого типа модели, можно найти в разделе Содержимое модели интеллектуального анализа данных (службы Analysis Services — интеллектуальный анализ данных).

Пример 1. Запросы содержимого для моделей взаимосвязей

Инструкцию SELECT FROM <модель>.CONTENT можно использовать для получения различных видов содержимого, в зависимости от типа запрашиваемой модели. В модели взаимосвязей у узлов, представляющих правила, параметр NODE_TYPE равен 8, а у наборов элементов он равен 7. Таким образом, следующий запрос вернет первые 10 наборов элементов, упорядоченных по размеру несущего множества (сортировка по умолчанию).

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7

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

Ключевое слово FLATTENED указывает, что вложенный набор строк следует перевести в формат плоской таблицы. Атрибут, представляющий продукт с правой стороны правила, содержится в таблице NODE_DISTRIBUTION; поэтому добавляется требование, чтобы длина была больше 2, и в результате возвращается только строка, содержащая имя атрибута. Для удаления имени модели из третьего столбца используется обычная функция для работы со строками. Имя модели, как правило, используется в качестве префикса для величин во вложенных столбцах. Предложение WHERE задает для параметра NODE_TYPE значение 8, чтобы получить только правила.

SELECT FLATTENED NODE_UNIQUE_NAME , NODE_DESCRIPTION,
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name'))) 
FROM NODE_DISTRIBUTION
WHERE LEN(ATTRIBUTE_NAME)>2
) 
AS RightSideProduct
FROM [<Association model name>].CONTENT
WHERE NODE_TYPE = 8 
ORDER BY NODE_SUPPORT DESC

Дополнительные примеры см. в разделе Запрос модели взаимосвязей (службы Analysis Services — интеллектуальный анализ данных).

Пример 2. Запрос содержимого из модели дерева принятия решений

Запрос содержимого модели может быть полезен, например, в ситуации, когда после прогнозирующего запроса нужно вернуть правило, объясняющее, почему было предсказано именно это состояние. Например, к запросу можно добавить прогнозирующую функцию PredictNodeId для получения идентификатора узла, содержащего правило. Для этого используется следующий синтаксис.

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer]) 
FROM [<decision tree model name>]
PREDICTION JOIN 
<input rowset> 

Для модели дерева принятия решений заголовок будет содержать описание пути к результату. Таким образом, зная идентификатор узла, содержащего результат, можно узнать правило или путь, объясняющие прогноз, с помощью следующего запроса содержимого.

SELECT NODE_CAPTION
FROM [<decision tree model name>] 
WHERE NODE_UNIQUE_NAME= '<node id>'

Дополнительные примеры см. в разделе Запрос модели дерева принятия решений (службы Analysis Services — интеллектуальный анализ данных).

В начало

Запросы, определяющие данные

Службы Службы Analysis Services предоставляют разнообразные инструкции определения данных для создания структур и моделей интеллектуального анализа данных и работы с ними. Дополнительные сведения см. в разделе Управление структурами и моделями интеллектуального анализа данных.