Compartilhar via


Lição 5: Executando consultas de previsão

Nesta lição, você usará o formato SELECT FROM <model> PREDICTION JOIN (DMX) da instrução SELECT para criar dois tipos diferentes de previsões com base no modelo de árvore de decisão criado na Lição 2: adicionando modelos de mineração à estrutura de mineração de associação. Esses tipos de previsão são definidos abaixo.

Consulta Singleton
Use uma consulta singleton para fornecer valores ad hoc ao fazer previsões. Por exemplo, você pode determinar se um único cliente provavelmente será um comprador de bicicleta, passando entradas para a consulta, como a distância de deslocamento, o código de área ou o número de filhos do cliente. A consulta singleton retorna um valor que indica a probabilidade de a pessoa comprar uma bicicleta com base nessas entradas.

Consulta em lote
Use uma consulta em lote para determinar quem em uma tabela de clientes potenciais provavelmente comprará uma bicicleta. Por exemplo, se o departamento de marketing fornecer uma lista de clientes e atributos dos clientes, você poderá usar uma previsão em lote para determinar quais pessoas da tabela têm maior probabilidade de comprar uma bicicleta.

O formato SELECT FROM <model> PREDICTION JOIN (DMX) da instrução SELECT contém três partes:

  • Uma lista das colunas do modelo de mineração e funções de previsão que são retornadas nos resultados. Os resultados também podem conter colunas de entrada dos dados de origem.

  • A consulta de origem que define os dados que estão sendo usados para criar uma previsão. Por exemplo, em uma consulta em lote, isso pode ser uma lista de clientes.

  • Um mapeamento entre as colunas do modelo de mineração e os dados de origem. Se esses nomes corresponderem, você poderá usar a sintaxe NATURAL e deixar de fora os mapeamentos de coluna.

Você pode aprimorar ainda mais a consulta usando funções de previsão. As funções de previsão fornecem informações adicionais, como a probabilidade de uma previsão ocorrer, e fornecem suporte para a previsão no conjunto de dados de treinamento. Para obter mais informações sobre funções de previsão, consulte Functions (DMX).

As previsões neste tutorial são baseadas na tabela ProspectiveBuyer no banco de dados AdventureWorksDW2012 de exemplo. A tabela ProspectiveBuyer contém uma lista de clientes potenciais e suas características associadas. Os clientes listados nesta tabela são independentes daqueles que foram usados para criar o modelo de mineração baseado em árvore de decisão.

Você também pode criar previsões usando o construtor de consultas de previsão no SSDT (SQL Server Data Tools).

Tarefas da lição

Você executará as seguintes tarefas nesta lição:

  • Crie uma consulta singleton para determinar se um cliente específico provavelmente comprará uma bicicleta.

  • Crie uma consulta em lote para determinar quais clientes, listados em uma tabela de clientes, provavelmente comprarão uma bicicleta.

Consulta Singleton

A primeira etapa é usar o SELECT FROM <modelo> PREDICTION JOIN (DMX) em uma consulta de previsão singleton. A seguir está um exemplo genérico de declaração singleton:

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

A primeira linha do código define as colunas do modelo de mineração que a consulta deve retornar e especifica o modelo de mineração usado para gerar a previsão:

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

As próximas linhas do código definem as características do cliente que você usa para criar uma previsão:

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

Se você especificar NATURAL PREDICTION JOIN, o servidor corresponderá cada coluna do modelo a uma coluna da entrada, com base em nomes de coluna. Se os nomes de coluna não corresponderem, as colunas serão ignoradas.

Para criar uma consulta de previsão singleton

  1. No Pesquisador de Objetos, clique com o botão direito do mouse na instância do Analysis Services, aponte para Nova Consulta e clique em DMX.

    O Editor de Consultas é aberto e contém uma nova consulta em branco.

  2. Copie o exemplo genérico da declaração singleton para a consulta em branco.

  3. Substitua o seguinte:

    <select list>   
    

    por:

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

    A instrução AS é usada para atribuir um nome às colunas retornadas pela consulta. A função PredictHistogram retorna estatísticas sobre a previsão, incluindo a probabilidade e o suporte. Para obter mais informações sobre as funções que podem ser usadas em uma instrução de previsão, consulte Functions (DMX).

  4. Substitua o seguinte:

    [<mining model>]   
    

    por:

    [Decision Tree]  
    
  5. Substitua o seguinte:

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

    por:

    (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  
    

    A instrução completa agora deve ser a seguinte:

    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. No menu Arquivo , clique em Salvar DMXQuery1.dmx Como.

  7. Na caixa de diálogo Salvar como , navegue até a pasta apropriada e nomeie o arquivo Singleton_Query.dmx.

  8. Na barra de ferramentas, clique no botão Executar .

    A consulta retorna uma previsão sobre se um cliente com as características especificadas comprará uma bicicleta, bem como estatísticas sobre essa previsão.

Consulta em lote

A próxima etapa é usar o SELECT FROM <modelo> PREDICTION JOIN (DMX) em uma consulta de previsão em lote. Veja a seguir um exemplo genérico de uma instrução de processamento em lote:

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>  

Como na consulta singleton, as duas primeiras linhas do código definem as colunas do modelo de mineração que a consulta retorna, bem como o nome do modelo de mineração usado para gerar a previsão. A instrução TOP <número> especifica que a consulta retornará apenas o número ou os resultados especificados por <número>.

As próximas linhas do código definem os dados de origem nos quais as previsões se baseiam:

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

Você tem várias opções para o método de recuperação dos dados de origem, mas neste tutorial, você usará OPENQUERY. Para obter mais informações sobre as opções disponíveis, consulte <a consulta> de dados de origem.

A próxima linha define o mapeamento entre as colunas de origem no modelo de mineração e as colunas nos dados de origem:

ON <column mappings>  

A cláusula WHERE filtra os resultados retornados pela consulta de previsão:

WHERE <where clause, boolean expression,>  

A última linha opcional do código especifica a coluna pela qual os resultados serão ordenados:

ORDER BY <expression> [DESC|ASC]  

Use ORDER BY em combinação com a instrução TOP <número>, para filtrar os resultados retornados. Por exemplo, nesta previsão, você retornará os dez principais compradores de bicicletas, ordenados pela probabilidade da previsão estar correta. Você pode usar [DESC|Sintaxe ASC] para controlar a ordem na qual os resultados são exibidos.

Para criar uma consulta de previsão em lote

  1. No Pesquisador de Objetos, clique com o botão direito do mouse na instância do Analysis Services, aponte para Nova Consulta e clique em DMX.

    O Editor de Consultas é aberto e contém uma nova consulta em branco.

  2. Copie o exemplo genérico da instrução do lote para a consulta vazia.

  3. Substitua o seguinte:

    <select list>   
    

    por:

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

    A cláusula TOP 10 especifica que somente os dez principais resultados serão retornados pela consulta. A instrução ORDER BY nesta consulta ordena os resultados pela probabilidade da previsão estar correta, portanto, somente os dez resultados mais prováveis serão retornados.

  4. Substitua o seguinte espaço reservado:

    [<mining model>]   
    

    Com o nome do modelo:

    [Decision Tree]  
    
  5. Substitua a seguinte instrução OPENQUERY genérica:

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

    Com uma instrução que faz referência ao atual data warehouse Adventureworks, como:

    OPENQUERY([Adventure Works DW 2014],  
      'SELECT  
        [LastName],  
        [FirstName],  
        [MaritalStatus],  
        [Gender],  
        [YearlyIncome],  
        [TotalChildren],  
        [NumberChildrenAtHome],  
        [Education],  
        [Occupation],  
        [HouseOwnerFlag],  
        [NumberCarsOwned]  
      FROM  
        [dbo].[ProspectiveBuyer]  
      ') AS t  
    
  6. Substitua a seguinte sintaxe genérica:

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

    Com os mapeamentos de coluna necessários para este modelo e conjunto de dados de entrada:

    [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  
    

    Especifique DESC para listar os resultados com a maior probabilidade primeiro.

    A instrução completa agora deve ser a seguinte:

    SELECT  
      TOP 10  
      t.[LastName],  
      t.[FirstName],  
      [Decision Tree].[Bike Buyer],  
      PredictProbability([Bike Buyer])  
    FROM  
      [Decision Tree]  
    PREDICTION JOIN  
      OPENQUERY([Adventure Works DW 2014],  
        '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. No menu Arquivo , clique em Salvar DMXQuery1.dmx Como.

  8. Na caixa de diálogo Salvar como , navegue até a pasta apropriada e nomeie o arquivo Batch_Prediction.dmx.

  9. Na barra de ferramentas, clique no botão Executar .

    A consulta retorna uma tabela que contém nomes de clientes, uma previsão de se cada cliente comprará uma bicicleta e a probabilidade da previsão.

Esta é a última etapa no tutorial do Comprador de Bicicletas. Agora você tem um conjunto de modelos de mineração que você pode usar para explorar semelhanças entre os clientes e prever se os clientes potenciais comprarão uma bicicleta.

Para saber como usar o DMX em um cenário de Cesta de Mercado, consulte o Tutorial DMX da Cesta de Mercado.