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

Добавления: 5 декабря 2005 г.

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

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

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

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

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

Прогноз в этом учебнике основан на таблице ProspectiveBuyer в образце базы данных AdventureWorksDW. Таблица 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 aliast>]

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

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
       [Decision Tree].[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>
WHERE <expression>
ORDER BY <expression>

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

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

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

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

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

ON <on clause>

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

WHERE <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 DW],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    
  6. Замените следующий код:

    <on clause> 
    WHERE <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 DW],
        '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. На панели инструментов нажмите кнопку Выполнить.

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

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

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