Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta lección, usarás la forma SELECT FROM <model> PREDICTION JOIN (DMX) de la instrucción SELECT para crear dos tipos diferentes de predicciones basado en el modelo de árbol de decisión que creaste en lección 2: Añadir modelos de minería a la estructura de minería de asociación. Estos tipos de predicción se definen a continuación.
Consulta singular
Use una consulta singleton para proporcionar valores ad hoc al realizar predicciones. Por ejemplo, puede determinar si un solo cliente es probable que compre bicicletas, pasando datos de entrada a la consulta, como la distancia de desplazamiento, el código de área o el número de hijos del cliente. La consulta singleton devuelve un valor que indica la probabilidad de que la persona compre una bicicleta en función de esas entradas.
Consulta por lotes
Use una consulta por lotes para determinar quién es probable que en una tabla de clientes potenciales compre una bicicleta. Por ejemplo, si el departamento de marketing proporciona una lista de clientes y atributos de cliente, puede usar una predicción por lotes para determinar quién de la tabla es probable que compre una bicicleta.
La forma SELECT FROM <model> PREDICTION JOIN (DMX) de la instrucción SELECT contiene tres partes:
Lista de las columnas del modelo de minería de datos y las funciones de predicción que se devuelven en los resultados. Los resultados también pueden contener columnas de entrada de los datos de origen.
Consulta de origen que define los datos que se usan para crear una predicción. Por ejemplo, en una consulta por lotes, podría ser una lista de clientes.
Asignación entre las columnas del modelo de minería y la fuente de datos. Si estos nombres coinciden, puede usar la sintaxis NATURAL y omitir la asignación de columnas.
Puede mejorar aún más la consulta mediante funciones de predicción. Las funciones de predicción proporcionan información adicional, como la probabilidad de que se produzca una predicción, y proporcionan compatibilidad con la predicción en el conjunto de datos de entrenamiento. Para obtener más información sobre las funciones de predicción, consulte Funciones (DMX).
Las predicciones de este tutorial se basan en la tabla ProspectiveBuyer de la base de datos de ejemplo AdventureWorksDW2012 . La tabla PotentialBuyer contiene una lista de clientes potenciales y sus características asociadas. Los clientes de esta tabla son independientes de los clientes que se usaron para crear el modelo de árbol de decisión para minería de datos.
También puede crear predicciones mediante el generador de consultas de predicción en SQL Server Data Tools (SSDT).
Tareas de la lección
Realizará las siguientes tareas en esta lección:
Cree una consulta singleton para determinar si es probable que un cliente específico compre una bicicleta.
Cree una consulta por lotes para determinar qué clientes, enumerados en una tabla de clientes, probablemente compren una bicicleta.
Consulta única
El primer paso es usar el SELECT FROM <model> PREDICTION JOIN (DMX) en una consulta de predicción singleton. A continuación se presenta un ejemplo genérico de la afirmación 'singleton'.
SELECT <select list> FROM [<mining model name>]
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
La primera línea del código define las columnas del modelo de minería de datos que debe devolver la consulta y especifica el modelo de minería de datos que se usa para generar la predicción:
SELECT <select list> FROM [<mining model name>]
Las siguientes líneas del código definen las características del cliente que usa para crear una predicción:
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>
Si especifica NATURAL PREDICTION JOIN, el servidor asocia cada columna del modelo a una columna de la entrada, basándose en los nombres de columna. Si los nombres de columna no coinciden, se omiten las columnas.
Para crear una consulta de predicción singleton.
En el Explorador de objetos, haga clic con el botón derecho en la instancia de Analysis Services, seleccione Nueva consulta y, a continuación, haga clic en DMX.
Se abre el Editor de consultas y contiene una consulta nueva en blanco.
Copie el ejemplo genérico de la declaración singleton en la consulta vacía.
Reemplace lo siguiente:
<select list>con:
[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS StatisticsLa instrucción AS se usa para aplicar alias a las columnas devueltas por la consulta. La función PredictHistogram devuelve estadísticas sobre la predicción, incluida la probabilidad y la compatibilidad. Para obtener más información sobre las funciones que se pueden usar en una instrucción de predicción, consulte Functions (DMX).
Reemplace lo siguiente:
[<mining model>]con:
[Decision Tree]Reemplace lo siguiente:
(SELECT '<value>' AS [<column name>], ...) AS tcon:
(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 tLa instrucción completa debe ser la siguiente:
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 tEn el menú Archivo , haga clic en Guardar DMXQuery1.dmx Como.
En el cuadro de diálogo Guardar como , vaya a la carpeta adecuada y asigne al archivo
Singleton_Query.dmxel nombre .En la barra de herramientas, haga clic en el botón Ejecutar .
La consulta devuelve una predicción sobre si un cliente con las características especificadas comprará una bicicleta, así como estadísticas sobre esa predicción.
Consulta por lotes
El siguiente paso consiste en usar SELECT FROM <model> PREDICTION JOIN (DMX) en una consulta de predicción por lotes. A continuación se muestra un ejemplo genérico de una declaración de procesamiento 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>
Como en la consulta singleton, las dos primeras líneas del código definen las columnas del modelo de minería de datos que devuelve la consulta, así como el nombre del modelo de minería de datos que se usa para generar la predicción. La instrucción TOP <number> especifica que la consulta solo devolverá el número o los resultados especificados por <number>.
Las siguientes líneas del código definen los datos de origen en los que se basan las predicciones:
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
Tiene varias opciones para el método para recuperar los datos de origen, pero en este tutorial, usará OPENQUERY. Para obtener más información sobre las opciones disponibles, consulte <consulta de datos de origen>.
La siguiente línea define el mapeo entre las columnas de origen en el modelo de minería de datos y las columnas en los datos de origen.
ON <column mappings>
La cláusula WHERE filtra los resultados devueltos por la consulta de predicción:
WHERE <where clause, boolean expression,>
La última y opcional línea del código especifica la columna por la que se ordenarán los resultados:
ORDER BY <expression> [DESC|ASC]
Use ORDER BY en combinación con la instrucción TOP <number> para filtrar los resultados que se devuelven. Por ejemplo, en esta predicción devolverá los diez mejores compradores de bicicletas, ordenados por la probabilidad de que la predicción sea correcta. Puede usar [DESC|Sintaxis de ASC] para controlar el orden en que se muestran los resultados.
Para crear una consulta de predicción por lotes
En el Explorador de objetos, haga clic con el botón derecho en la instancia de Analysis Services, seleccione Nueva consulta y, a continuación, haga clic en DMX.
Se abre el Editor de consultas y contiene una consulta nueva en blanco.
Copie el ejemplo genérico de la instrucción batch en la consulta en blanco.
Reemplace lo siguiente:
<select list>con:
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer])La cláusula TOP 10 especifica que solo la consulta devolverá los diez primeros resultados. La instrucción ORDER BY de esta consulta ordena los resultados por la probabilidad de que la predicción sea correcta, por lo que solo se devolverán los diez resultados más probables.
Reemplace el siguiente marcador de posición:
[<mining model>]Con el nombre del modelo:
[Decision Tree]Reemplace la siguiente instrucción OPENQUERY genérica:
OPENQUERY([<datasource>],'<SELECT statement>')Con una instrucción que hace referencia al almacenamiento de datos adventureworks actual, como:
OPENQUERY([Adventure Works DW 2014], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS tReemplace la siguiente sintaxis genérica:
<ON clause, mapping,> WHERE <where clause, boolean expression,> ORDER BY <expression>Con las asignaciones de columna necesarias para este modelo y conjunto de datos 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]) DESCEspecifique
DESCpara enumerar los resultados con la probabilidad más alta primero.La instrucción completa debe ser la siguiente:
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]) DESCEn el menú Archivo , haga clic en Guardar DMXQuery1.dmx Como.
En el cuadro de diálogo Guardar como , vaya a la carpeta adecuada y asigne al archivo
Batch_Prediction.dmxel nombre .En la barra de herramientas, haga clic en el botón Ejecutar .
La consulta devuelve una tabla que contiene nombres de cliente, una predicción de si cada cliente comprará una bicicleta y la probabilidad de la predicción.
Este es el último paso del tutorial Bike Buyer. Ahora tiene un conjunto de modelos de minería de datos que puede usar para explorar similitudes entre los clientes y predecir si los clientes potenciales comprarán una bicicleta.
Para obtener información sobre cómo usar DMX en un escenario de Market Basket, consulte Market Basket DMX Tutorial.