Занятие 5. Выполнение прогнозирующих запросов

На этом занятии форма инструкции SELECT SELECT FROM <model> PREDICTION JOIN (DMX) будет использована для создания двух разных типов прогнозов, основанных на модели дерева решений, которое было создано на Занятии 2. Добавление модели интеллектуального анализа данных к структуре интеллектуального анализа взаимосвязей. Эти типы прогнозов определены ниже.

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

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

Форма SELECT FROM <model> PREDICTION JOIN (DMX) инструкции SELECT содержит три части.

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

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

  • Сопоставления столбцов модели интеллектуального анализа данных исходным данным. При совпадении этих имен можно использовать синтаксис NATURAL и пропустить процесс сопоставления столбцов.

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

Прогнозы в этом учебнике основаны на таблице ProspectiveBuyer из образца базы данных База данных AdventureWorksDW2008R2. Таблица ProspectiveBuyer содержит список потенциальных клиентов и их характеристики. Клиенты, представленные в этой таблице, не зависят от клиентов, использовавшихся для создания дерева модели интеллектуального анализа данных.

Прогнозы можно также создавать, используя построитель прогнозирующих запросов в среде Business Intelligence Development Studio. Дополнительные сведения см. в разделе Использование построителя прогнозирующих запросов для создания прогнозирующих запросов расширений интеллектуального анализа данных.

Задачи занятия

На этом занятии будут выполняться следующие задачи:

  • Создание одноэлементного запроса для определения вероятности покупки велосипеда конкретным клиентом.

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

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

В первом шаге в одноэлементном прогнозирующем запросе используется инструкция SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных). В следующем фрагменте показан общий пример одноэлементной инструкции:

SELECT <select list> FROM [<mining model name>] 
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]

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

SELECT <select list> FROM [<mining model name>] 

В следующей строке определяются характеристики клиента, использованного в прогнозе:

NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>

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

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

  1. В окне Обозреватель объектов щелкните правой кнопкой мыши экземпляр служб Службы Analysis Services, укажите пункт Создать запрос и щелкните Расширения интеллектуального анализа данных.

    Откроется редактор запросов, содержащий новый пустой запрос.

  2. Скопируйте общий пример одноэлементной инструкции в пустой запрос.

  3. Вместо:

    <select list> 
    

    вставьте:

    [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
    

    Инструкция AS используется для создания псевдонимов столбцов, которые возвращает запрос. Функция PredictHistogram возвращает статистические данные прогноза, включая вероятность и поддержку. Дополнительные сведения о функциях, которые могут использоваться в инструкции прогноза, см. в разделе Функции (расширения интеллектуального анализа данных).

  4. Вместо:

    [<mining model>] 
    

    используйте

    [Decision Tree]
    
  5. Замените следующий код:

    (SELECT '<value>' AS [<column name>], ...)  AS t
    

    на

    (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
    

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

    SELECT
       [Bike Buyer] AS Buyer,
       PredictHistogram([Bike Buyer]) AS Statistics
    FROM
       [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
    
  6. В меню Файл выберите Сохранить DMXQuery1.dmx как.

  7. В диалоговом окне Сохранить как перейдите к соответствующей папке и присвойте файлу имя Singleton_Query.dmx.

  8. На панели инструментов нажмите кнопку Выполнить.

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

Пакетный запрос

В следующем шаге в пакетном прогнозирующем запросе используется инструкция SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных). Ниже представлен общий пример пакетной инструкции:

SELECT TOP <number> <select list> 
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]
ON <on clause, mapping,>
WHERE <where clause, boolean expression,>
ORDER BY <expression>

Как и в одноэлементном запросе, первые две строки кода определяют столбцы из модели интеллектуального анализа, которые возвращает запрос, а также имя модели интеллектуального анализа данных, которая используется для создания прогноза. Инструкция TOP <число> указывает, чтобы запрос возвратил только количество результатов, заданное параметром <число>.

Следующие строки кода определяют источник данных, на котором основан прогноз:

OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]

Имеется несколько вариантов метода получения исходных данных, но в этом учебнике используется инструкция OPENQUERY. Дополнительные сведения о доступных параметрах см. в разделе <source data query>.

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

ON <column mappings>

Предложение WHERE фильтрует результаты, возвращенные прогнозирующим запросом:

WHERE <where clause, boolean expression,>

Последняя (необязательная) строка кода задает столбец, по которому упорядочиваются результаты:

ORDER BY <expression> [DESC|ASC]

Предложение ORDER BY используется в сочетании с инструкцией TOP <число> для фильтрации возвращенных результатов. Например, в этом прогнозе возвращаются первые десять покупателей велосипедов, упорядоченных по степени вероятности реализации прогноза. Для управления порядком вывода результатов можно использовать синтаксис [DESC|ASC].

Создание пакетного прогнозирующего запроса

  1. В окне Обозреватель объектов щелкните правой кнопкой мыши экземпляр служб Службы Analysis Services, укажите пункт Создать запрос и щелкните Расширения интеллектуального анализа данных.

    Откроется редактор запросов, содержащий новый, пустой запрос.

  2. Скопируйте общий пример пакетной инструкции в пустой запрос.

  3. Замените следующий код:

    <select list> 
    

    на

    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    

    Предложение TOP 10 указывает, что запрос должен возвратить только десять первых результатов. Инструкция ORDER BY в этом запросе упорядочивает результаты по степени вероятности прогноза, поэтому возвращаются только десять самых вероятных результатов.

  4. Замените следующий код:

    [<mining model>] 
    

    на

    [Decision Tree]
    
  5. Замените следующий код:

    OPENQUERY([<datasource>],'<SELECT statement>')
    

    на

      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    
  6. Замените следующий код:

    <ON clause, mapping,> 
    WHERE <where clause, boolean expression,>
    ORDER BY <expression>
    

    на

    [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    

    Чтобы первыми вывести наиболее вероятные результаты, задайте DESC.

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

    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    FROM
      [Decision Tree]
    PREDICTION JOIN
      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    ON
      [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    
  7. В меню Файл щелкните Сохранить DMXQuery1.dmx как.

  8. В диалоговом окне Сохранить как перейдите в соответствующую папку и присвойте файлу имя Batch_Prediction.dmx.

  9. На панели инструментов нажмите кнопку Выполнить.

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

Это последний шаг занятия «Покупатель велосипеда». Теперь есть набор моделей интеллектуального анализа данных, которые можно использовать для изучения сходства клиентов и предсказания, будут ли потенциальные клиенты покупать велосипеды.

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