Lección 4: Ejecutar predicciones de cesta de la compra

En esta lección usará la instrucción SELECT de DMX para crear predicciones basadas en los modelos de asociación que creó en Lección 2: Agregar modelos de minería a la estructura de minería cesta de la compra. Para crear una consulta de predicción se usa la instrucción SELECT de DMX y se agrega una cláusula PREDICTION JOIN. Para obtener más información acerca de la sintaxis de una combinación de predicción, vea SELECT FROM <modelo> PREDICTION JOIN (DMX).

El formato SELECT FROM <model> PREDICTION JOIN de la instrucción SELECT consta de tres partes:

  • Una lista de las funciones de predicción y las columnas del modelo de minería de datos devueltas en el conjunto de resultados. Esta lista también puede incluir columnas de entrada de los datos de origen.

  • Una consulta de origen que define los datos que se usan para crear una predicción. Por ejemplo, si está creando muchas predicciones en un lote, la consulta de origen podría recuperar una lista de clientes.

  • Una asignación entre las columnas del modelo de minería de datos y los datos de origen. Si los nombres de las columnas coinciden, puede usar la sintaxis NATURAL PREDICTION JOIN y omitir las asignaciones de columna.

La consulta se puede mejorar si se usan funciones de predicción. Las funciones de predicción proporcionan información adicional, como la probabilidad de que se produzca una predicción o la existencia de compatibilidad con una predicción en el conjunto de datos de entrenamiento. Para obtener más información acerca de las funciones de predicción, vea Funciones (DMX).

También puede usar el generador de consultas de predicción de Business Intelligence Development Studio para crear consultas de predicción. Para obtener más información, vea Usar el Generador de consultas de predicción para crear consultas de predicción DMX.

Instrucción singleton PREDICTION JOIN

El primer paso es crear una consulta singleton, para lo cual se usa la sintaxis SELECT FROM <model> PREDICTION JOIN y se ofrece un conjunto único de valores como entrada. A continuación, se incluye un ejemplo genérico de la instrucción singleton:

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

En la primera línea del código se definen las columnas del modelo de minería de datos que devuelve la consulta y se especifica el nombre del modelo de minería de datos usado para generar la predicción:

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

La línea del código siguiente indica la operación que se va a realizar. Dado que se especificarán valores para cada una de las columnas y se escribirán los nombres de columna exactamente de manera que coincidan con el modelo, puede usar la sintaxis NATURAL PREDICTION JOIN. Sin embargo, si los nombres de columna fueran diferentes, tendría que especificar las asignaciones entre las columnas del modelo y las columnas de los nuevos datos agregando una cláusula ON.

[NATURAL] PREDICTION JOIN

En las líneas siguientes del código se definen los artículos del carro de la compra que se utilizarán para predecir artículos adicionales que un cliente agregará:

(SELECT '<value>' AS [<column>], 
    (SELECT 'value' AS [<nested column>] UNION
        SELECT 'value' AS [<nested column>] ...) 
    AS [<nested table>])

Tareas de la lección

En esta lección realizará las tareas siguientes:

  • Crear una consulta que prediga qué otros artículos podría adquirir un cliente en función de los artículos que ya se están en su carro de la compra. Para crear esta consulta usará el modelo de minería de datos con el valor de MINIMUM_PROBABILITY predeterminado.

  • Crear una consulta que prediga qué otros artículos podría adquirir un cliente en función de los artículos que ya se están en su carro de la compra. Esta consulta se basa en un modelo diferente, en el que MINIMUM_PROBABILITY ha quedado establecido en 0,01. Dado que el valor predeterminado para MINIMUM_PROBABILITY en modelos de asociación es 0,3, la consulta en este modelo debería devolver más elementos posibles que la consulta en el modelo predeterminado.

Crear una predicción usando un modelo con el valor de MINIMUM_PROBABILITY predeterminado

Para crear una consulta de asociación

  1. En el Explorador de objetos, haga clic con el botón secundario en la instancia de Analysis Services, seleccione Nueva consulta y, a continuación, haga clic en DMX para abrir el Editor de consultas.

  2. Copie el ejemplo genérico de la instrucción PREDICTION JOIN en la consulta en blanco.

  3. Reemplace lo siguiente:

    <select list> 
    

    por:

    PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)
    

    Podría incluir sólo el nombre de columna [Products], pero si utiliza la función Predict (DMX), puede limitar el número de artículos devueltos por el algoritmo a tres. También puede usar INCLUDE_STATISTICS, que devuelve la compatibilidad, la probabilidad y la probabilidad ajustada para cada producto. Estas estadísticas ayudan a valorar la precisión de la predicción.

  4. Reemplace lo siguiente:

    [<mining model>] 
    

    por:

    [Default Association]
    
  5. Reemplace lo siguiente:

    (SELECT '<value>' AS [<column>], 
        (SELECT 'value' AS [<nested column>] UNION
            SELECT 'value' AS [<nested column>] ...) 
        AS [<nested table>])
    

    por:

    (SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
      UNION SELECT 'Mountain Tire Tube' AS [Model]
      UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
    

    Esta instrucción utiliza la instrucción UNION para especificar tres productos que se deben incluir en el carro de la compra junto con los artículos previstos. La columna Model de la instrucción SELECT corresponde a la columna de modelo incluida en la tabla de productos anidada.

    Ahora, la instrucción completa debería ser como sigue:

    SELECT
      PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)
    From
      [Default Association]
    NATURAL PREDICTION JOIN
    (SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
      UNION SELECT 'Mountain Tire Tube' AS [Model]
      UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
    
  6. En el menú Archivo, haga clic en Guardar DMXQuery1.dmx como.

  7. En el cuadro de diálogo Guardar como, desplácese a la carpeta correspondiente y asigne el nombre Association Prediction.dmx al archivo.

  8. En la barra de herramientas, haga clic en el botón Ejecutar.

    La consulta devuelve una tabla que contiene tres productos: HL Mountain Tire, Fender Set - Mountain y ML Mountain Tire. En la tabla se enumeran estos productos devueltos por orden de probabilidad. En la parte superior de la tabla aparece el producto devuelto con mayor probabilidad de estar incluido en el mismo carro de la compra que los tres productos especificados en la consulta. Los dos productos siguientes son los de mayor probabilidad de estar incluidos en el carro de la compra. La tabla también contiene estadísticas que describen la precisión de la predicción.

Crear una predicción usando un modelo con el valor 0,01 para MINIMUM_PROBABILITY

Para crear una consulta de asociación

  1. En el Explorador de objetos, haga clic con el botón secundario en la instancia de Analysis Services, seleccione Nueva consulta y, a continuación, haga clic en DMX para abrir el Editor de consultas.

  2. Copie el ejemplo genérico de la instrucción PREDICTION JOIN en la consulta en blanco.

  3. Reemplace lo siguiente:

    <select list> 
    

    por:

    PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3)
    
  4. Reemplace lo siguiente:

    [<mining model>] 
    

    por:

    [Modified Association]
    
  5. Reemplace lo siguiente:

    (SELECT '<value>' AS [<column>], 
        (SELECT 'value' AS [<nested column>] UNION
            SELECT 'value' AS [<nested column>] ...) 
        AS [<nested table>])
    

    por:

    (SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
      UNION SELECT 'Mountain Tire Tube' AS [Model]
      UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
    

    Esta instrucción utiliza la instrucción UNION para especificar tres productos que se deben incluir en el carro de la compra junto con los artículos previstos. La columna [Model] de la instrucción SELECT corresponde a la columna incluida en la tabla de artículos anidada.

    Ahora, la instrucción completa debería ser como sigue:

    SELECT
      PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3)
    From
      [Modified Association]
    NATURAL PREDICTION JOIN
    (SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
      UNION SELECT 'Mountain Tire Tube' AS [Model]
      UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
    
  6. En el menú Archivo, haga clic en Guardar DMXQuery1.dmx como.

  7. En el cuadro de diálogo Guardar como, desplácese a la carpeta correspondiente y asigne el nombre Modified Association Prediction.dmx al archivo.

  8. En la barra de herramientas, haga clic en el botón Ejecutar.

    La consulta devuelve una tabla que contiene tres artículos: HL Mountain Tire, Water Bottle y Fender Set - Mountain. En la tabla se enumeran estos productos por orden de probabilidad. El producto que aparece al principio de la tabla es el producto con mayor probabilidad de estar incluido en el mismo carro de la compra que los tres artículos especificados en la consulta. Los productos restantes son los siguientes con mayor probabilidad de estar incluidos en el carro de la compra. La tabla también contiene estadísticas que describen la precisión de la predicción.

    A partir de los resultados de esta consulta, se puede ver que el valor del parámetro MINIMUM_PROBABILITY afecta a los resultados devueltos por la consulta.

Éste es el último paso del tutorial de Market Basket. Ahora dispone de un conjunto de modelos que puede usar para predecir los artículos que los clientes pueden adquirir simultáneamente.

Para aprender a utilizar DMX en otro escenario de predicción, vea Tutorial DMX de Bike Buyer.