Поделиться через


SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных)

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

Синтаксис

SELECT [FLATTENED] [TOP <n>] <select expression list> 
FROM <model> | <sub select> [NATURAL] PREDICTION JOIN 
<source data query> [ON <join mapping list>] 
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]

Аргументы

  • n
    (необязательный аргумент) Целое число, указывающее количество возвращаемых строк.

  • select expression list
    Разделенный запятыми список идентификаторов столбцов и выражений, производных от модели интеллектуального анализа данных.

  • model
    Идентификатор модели.

  • sub select
    Внедренная инструкция SELECT.

  • source data query
    Исходный запрос.

  • join mapping list
    (необязательный аргумент) Логическое выражение сравнения столбцов модели со столбцами исходного запроса.

  • condition expression
    (необязательный аргумент) Условие ограничения значений, возвращаемых из списка столбцов.

  • expression
    (необязательный аргумент) Выражение, возвращающее скалярное значение.

Замечания

Предложение ON определяет сопоставление столбцов исходного запроса со столбцами модели интеллектуального анализа данных. Такое сопоставление используется для направления столбцов исходного запроса к столбцам модели интеллектуального анализа данных, чтобы эти столбцы можно было использовать в качестве входных при создании прогнозов. Столбцы в списке <join mapping list> соотносятся с помощью знака равенства (=), как показано в следующем примере:

[MiningModel].ColumnA = [source data query].Column1 AND 
[MiningModel].ColumnB = [source data query].Column2 AND
...

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

Исходный запрос для прогнозируемого соединения может представлять собой таблицу или одноэлементный запрос.

В списке <select expression list> и выражении <condition expression> можно указывать прогнозирующие функции, не возвращающие табличного выражения.

Инструкция NATURAL PREDICTION JOIN автоматически сопоставляет имена столбцов исходного запроса, совпадающих с именами столбцов модели. В случае использования инструкции NATURAL PREDICTION предложение ON можно пропустить.

Условие WHERE можно применять только к прогнозируемым столбцам или к связанным столбцам.

Предложение ORDER BY может принимать в качестве аргумента только один столбец; иначе говоря, нельзя осуществлять сортировку по более чем одному столбцу.

Пример 1. Одноэлементный запрос

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

  • Возраст 35 лет

  • Владеет домом

  • Владеет двумя автомобилями

  • Двое детей дома

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

SELECT
  [TM Decision Tree].[Bike Buyer],
  PredictHistogram([Bike Buyer])
FROM
  [TM Decision Tree]
NATURAL PREDICTION JOIN
(SELECT 35 AS [Age],
  '5-10 Miles' AS [Commute Distance],
  '1' AS [House Owner Flag],
  2 AS [Number Cars Owned],
  2 AS [Total Children]) AS t

Пример 2. Использование функции OPENQUERY

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

Запрос возвращает список имен и фамилий каждого человека в таблице наряду с логическим столбцом, указывающим на вероятность покупки им велосипеда, где 0 означает «вероятно, не будет покупать велосипед», а 1 означает «вероятно, купит велосипед». Последний столбец содержит значение вероятности прогнозируемого результата.

SELECT
  t.[LastName],
  t.[FirstName],
  [TM Decision Tree].[Bike Buyer],
  PredictProbability([Bike Buyer])
From
  [TM Decision Tree]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW],
    'SELECT
      [LastName],
      [FirstName],
      [MaritalStatus],
      [Gender],
      [YearlyIncome],
      [TotalChildren],
      [NumberChildrenAtHome],
      [Education],
      [Occupation],
      [HouseOwnerFlag],
      [NumberCarsOwned]
    FROM
      [dbo].[ProspectiveBuyer]
    ') AS t
ON
  [TM Decision Tree].[Marital Status] = t.[MaritalStatus] AND
  [TM Decision Tree].[Gender] = t.[Gender] AND
  [TM Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
  [TM Decision Tree].[Total Children] = t.[TotalChildren] AND
  [TM Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
  [TM Decision Tree].[Education] = t.[Education] AND
  [TM Decision Tree].[Occupation] = t.[Occupation] AND
  [TM Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
  [TM Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]

Чтобы ограничить набор данных только теми клиентами, которые по прогнозу приобретут велосипед, а затем отсортировать список по имени клиентов, можно к предыдущему примеру добавить предложения WHERE и ORDER BY.

WHERE [BIKE Buyer]
ORDER BY [LastName] ASC

Пример 3. Прогноз взаимосвязей

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

  • Mountain Bottle Cage

  • Mountain Tire Tube

  • Mountain-200

Функция Predict (расширения интеллектуального анализа данных) является полиморфной и может использоваться со всеми типами моделей. Значение value3 используется в качестве аргумента функции, чтобы ограничить число элементов, возвращаемых запросом. Список инструкции SELECT, следующий за предложением NATURAL PREDICTION JOIN, содержит значения, используемые в качестве входных данных для прогноза.

SELECT FLATTENED
  PREDICT([Association].[v Assoc Seq Line Items], 3)
FROM
  [Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
  UNION SELECT 'Mountain Tire Tube' AS [Model]
  UNION SELECT 'Mountain-200' AS [Model]) AS [v Assoc Seq Line Items ]) AS t

Образец результатов:

Expression.Model

HL Mountain Tire

Water Bottle

Fender Set - Mountain

Поскольку столбец, содержащий прогнозируемый атрибут [v Assoc Seq Line Items], представляет собой столбец таблицы, запрос возвращает один столбец, который содержит вложенную таблицу. По умолчанию этот столбец с вложенной таблицей имеет имя Expression. Если поставщик не поддерживает иерархические наборы строк, можно, как показано в этом примере, использовать ключевое слово FLATTENED; тогда результаты будет удобнее просматривать.