Partilhar via


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

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 prognóstico estã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 tem probabilidade de ser um comprador de bicicleta, passando entradas à consulta, como a distância para o trabalho, 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 por lotes
Use uma consulta por lotes para determinar que clientes em potencial em uma tabela possam vir a comprar uma bicicleta. Por exemplo, se seu departamento de marketing lhe fornecer uma lista de clientes e de atributos de cliente, então você poderá usar um prognóstico por lotes para determinar quais clientes da tabela são prováveis compradores de bicicleta.

A forma SELECT FROM <do modelo> PREDICTION JOIN (DMX) da instrução SELECT contém três partes:

  • Uma lista de colunas de modelo de mineração e funções de previsã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 usados para criar um prognóstico. Por exemplo, uma consulta por lotes poderia ser uma lista de clientes.

  • Um mapeamento entre as colunas de modelo de mineração e os dados de origem. Se esses nomes coincidirem, então você pode usar a sintaxe NATURAL e não incluir os mapeamentos de coluna.

É possível melhorar a consulta ainda mais, usando as funções de prognóstico. As funções de prognóstico fornecem informações adicionais, como a probabilidade de um prognóstico se confirmar, e dão suporte ao prognóstico no conjunto de dados de treinamento. Para obter mais informações sobre funções de previsão, consulte Funções (DMX).

As previsões neste tutorial são baseadas na tabela ProspectiveBuyer no banco de dados de exemplo AdventureWorksDW2012 . A tabela ProspectiveBuyer contém uma lista de clientes em potencial e as características associadas a eles. Os clientes nesta tabela independem dos clientes usados para criar o modelo de mineração da á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 a probabilidade de um determinado cliente vir a comprar uma bicicleta.

  • Crie uma consulta em lotes para determinar quais clientes, listados em uma tabela de clientes, têm probabilidade de comprar uma bicicleta.

Consulta Singleton

A primeira etapa é usar o MODELO> SELECT FROM <PREDICTION JOIN (DMX) em uma consulta de previsão singleton. Segue um exemplo genérico da instruçã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 nome do modelo de mineração usado para gerar a previsão:

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

Nas linhas seguintes do código são definidas as características do cliente usadas para criar um prognóstico:

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

Se você especificar NATURAL PREDICTION JOIN, o servidor faz a correspondência entre cada coluna do modelo com uma coluna dos dados de entrada, com base em nomes de coluna. Se os nomes da coluna não coincidirem, as colunas serão ignoradas.

Para criar uma consulta de prognóstico singleton

  1. Em 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 é exibido com uma consulta nova em branco.

  2. Copie o exemplo genérico da instrução singleton, no campo em branco da consulta.

  3. Substitua o seguinte:

    <select list>   
    

    por:

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

    A instrução AS é usada para designar um alias para as colunas que retornaram na 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:

    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 As.

  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 um prognóstico sobre a possibilidade de um cliente, com as características especificadas, comprar uma bicicleta, além de as estatísticas sobre tal prognóstico.

Consulta por lotes

A próxima etapa é usar o MODELO> SELECT FROM <PREDICTION JOIN (DMX) em uma consulta de previsão em lote. Segue um exemplo genérico de uma instrução por lotes:

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>  

Assim como na consulta singleton, as primeiras duas linhas do código definem as colunas do modelo de mineração que a consulta retorna, assim como o nome do modelo de mineração usado para gerar o prognóstico: A instrução TOP <number> 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 os prognóstico se baseiam:

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

Você dispõe de várias opções de métodos para recuperar os dados de origem; mas, neste tutorial, usará o OPENQUERY. Para obter mais informações sobre as opções disponíveis, consulte <consulta> de dados de origem.

A linha seguinte define o mapeamento entre as colunas de origem do modelo de mineração e as colunas dos dados de origem.

ON <column mappings>  

A cláusula WHERE filtra os resultados retornados pela consulta de prognóstico:

WHERE <where clause, boolean expression,>  

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

ORDER BY <expression> [DESC|ASC]  

Use ORDER BY em combinação com a instrução TOP <number> para filtrar os resultados retornados. Por exemplo, neste prognóstico você devolverá os dez principais compradores de bicicleta, ordenados pela probabilidade de maior acerto. Use a sintaxe [DESC|ASC] para controlar a ordem de exibição dos resultados.

Para criar uma consulta de prognóstico por lotes

  1. Em 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 é exibido com uma consulta nova em branco.

  2. Copie o exemplo genérico da instrução por lotes, no campo em branco da consulta.

  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 apenas os dez primeiros resultados serão retornados pela consulta. Nesta consulta, a instrução ORDER BY ordena os resultados segundo a maior probabilidade de acerto do prognóstico, de forma que apenas os dez resultados mais prováveis retornem.

  4. Substitua o seguinte espaço reservado:

    [<mining model>]   
    

    Pelo nome do modelo:

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

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

    Por uma instrução que referencia o data warehouse atual do 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>  
    

    Pelos 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 mais prováveis primeiro.

    A instrução completa agora deve ser:

    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 As.

  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 contendo nomes de cliente, um prognóstico sobre a possibilidade de cada cliente comprar uma bicicleta e a probabilidade deste prognóstico.

Este é o último passo no tutorial de Bike Buyer. Você tem um conjunto de modelos de mineração que lhe permite explorar as semelhanças entre seus clientes e prever se os clientes em potencial comprarão uma bicicleta.

Para saber como usar o DMX em um cenário de Cesta de Mercado, confira Tutorial de DMX do Market Basket.