다음을 통해 공유


5단원: 예측 쿼리 실행

이 단원에서는 SELECT FROM <model> PREDICTION JOIN (DMX) 형식을 사용하여 단원 2: 연결 마이닝 구조에 마이닝 모델 추가에서 생성한 의사 결정 트리 모델을 기반으로 두 종류의 예측을 생성합니다. 이러한 예측 형식은 아래에 정의되어 있습니다.

Singleton 쿼리
단일 쿼리를 사용하여 예측을 할 때 임시 값을 제공합니다. 예를 들어 통근 거리, 지역 코드 또는 고객의 자식 수와 같은 쿼리에 입력을 전달하여 단일 고객이 자전거 구매자일 가능성이 있는지 여부를 확인할 수 있습니다. 싱글톤 쿼리는 사용자가 해당 입력에 따라 자전거를 구매할 가능성이 얼마나 되는지 나타내는 값을 반환합니다.

일괄 처리 쿼리
일괄 처리 쿼리를 사용하여 잠재 고객 테이블에서 자전거를 구매할 가능성이 있는 사용자를 결정합니다. 예를 들어 마케팅 부서에서 고객 및 고객 특성 목록을 제공하는 경우 일괄 처리 예측을 사용하여 테이블에서 자전거를 구매할 가능성이 있는 사람을 결정할 수 있습니다.

SELECT FROM <model> PREDICTION JOIN (DMX) 형식의 SELECT 문은 세 가지 부분으로 구성됩니다.

  • 결과에 반환되는 마이닝 모델 열 및 예측 함수의 목록입니다. 결과에는 원본 데이터의 입력 열도 포함될 수 있습니다.

  • 예측을 만드는 데 사용되는 데이터를 정의하는 원본 쿼리입니다. 예를 들어 일괄 처리 쿼리에서는 고객 목록이 될 수 있습니다.

  • 마이닝 모델 열과 원본 데이터 간의 매핑입니다. 이러한 이름이 일치하는 경우 NATURAL 구문을 사용하고 열 매핑을 제외할 수 있습니다.

예측 함수를 사용하여 쿼리를 더욱 향상시킬 수 있습니다. 예측 함수는 예측 발생 확률과 같은 추가 정보를 제공하고 학습 데이터 세트의 예측을 지원합니다. 예측 함수에 대한 자세한 내용은 DMX(Functions)를 참조하세요.

이 자습서의 예측은 AdventureWorksDW2012 샘플 데이터베이스의 ProspectiveBuyer 테이블을 기반으로 합니다. ProspectiveBuyer 테이블에는 잠재 고객 및 관련 특성 목록이 포함되어 있습니다. 이 테이블의 고객은 의사 결정 트리 마이닝 모델을 만드는 데 사용된 고객과 독립적입니다.

SSDT(SQL Server Data Tools)에서 예측 쿼리 작성기를 사용하여 예측을 만들 수도 있습니다.

학습 과제

이 단원에서는 다음 작업을 수행합니다.

  • 단일 쿼리를 만들어 특정 고객이 자전거를 구매할 가능성이 있는지 여부를 확인합니다.

  • 일괄 처리 쿼리를 만들어 고객 테이블에 나열된 고객이 자전거를 구매할 가능성이 있는지 확인합니다.

Singleton 쿼리

첫 번째 단계는 단일 예측 쿼리에서 SELECT FROM <model> PREDICTION JOIN (DMX)을 사용하는 것입니다. 다음은 싱글톤(Singleton) 패턴의 일반적인 예입니다.

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

코드의 첫 번째 줄은 쿼리가 반환해야 하는 마이닝 모델의 열을 정의하고 예측을 생성하는 데 사용되는 마이닝 모델을 지정합니다.

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 인스턴스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 가리킨 다음 DMX를 클릭합니다.

    쿼리 편집기가 열리고 비어 있는 새 쿼리가 포함됩니다.

  2. 싱글톤 문의 제네릭 예제를 빈 쿼리에 복사합니다.

  3. 다음을 대체하십시오

    <select list>   
    

    와 함께

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

    AS 문은 쿼리에서 반환된 열의 별칭을 지정하는 데 사용됩니다. PredictHistogram 함수는 확률 및 지원을 포함하여 예측에 대한 통계를 반환합니다. 예측 문에서 사용할 수 있는 함수에 대한 자세한 내용은 Functions(DMX)를 참조하세요.

  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  
       [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 <model> PREDICTION JOIN (DMX)을 사용하는 것입니다. 다음은 배치 명령문의 일반적인 예입니다.

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>  

싱글톤 쿼리와 마찬가지로 코드의 처음 두 줄은 쿼리가 반환하는 마이닝 모델의 열과 예측을 생성하는 데 사용되는 마이닝 모델의 이름을 정의합니다. TOP <number> 문은 쿼리가 숫자로 지정된 <>숫자 또는 결과만 반환되도록 지정합니다.

코드의 다음 줄은 예측이 기반으로 하는 원본 데이터를 정의합니다.

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

원본 데이터를 검색하는 방법에 대한 몇 가지 옵션이 있지만 이 자습서에서는 OPENQUERY를 사용합니다. 사용 가능한 옵션에 대한 자세한 내용은 원본 데이터 쿼리>를 참조<하세요.

다음 줄은 마이닝 모델의 원본 열과 원본 데이터의 열 간의 매핑을 정의합니다.

ON <column mappings>  

WHERE 절은 예측 쿼리에서 반환된 결과를 필터링합니다.

WHERE <where clause, boolean expression,>  

코드의 마지막 줄과 선택적 줄은 결과를 정렬할 열을 지정합니다.

ORDER BY <expression> [DESC|ASC]  

TOP <number> 문과 함께 ORDER BY를 사용하여 반환되는 결과를 필터링합니다. 예를 들어 이 예측에서는 예측이 정확할 확률에 따라 정렬된 상위 10명의 자전거 구매자를 반환합니다. [DESC|ASC] 구문은 결과가 표시되는 순서를 제어합니다.

일괄 처리 예측 쿼리를 만들려면

  1. 개체 탐색기에서 Analysis Services 인스턴스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 가리킨 다음 DMX를 클릭합니다.

    쿼리 편집기가 열리고 비어 있는 새 쿼리가 포함됩니다.

  2. 일괄 처리 문의 제네릭 예제를 빈 쿼리에 복사합니다.

  3. 다음을 대체하십시오

    <select list>   
    

    와 함께

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

    TOP 10 절은 상위 10개 결과만 쿼리에서 반환되도록 지정합니다. 이 쿼리의 ORDER BY 문은 예측이 정확할 확률에 따라 결과를 정렬하므로 가장 가능성이 높은 10개의 결과만 반환됩니다.

  4. 다음 자리 표시자를 바꿉다.

    [<mining model>]   
    

    모델 이름을 사용하여 다음을 수행합니다.

    [Decision Tree]  
    
  5. 다음 일반 OPENQUERY 문을 대체합니다.

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

    다음과 같이 현재 Adventureworks 데이터 웨어하우스를 참조하는 문을 사용합니다.

    OPENQUERY([Adventure Works DW 2014],  
      'SELECT  
        [LastName],  
        [FirstName],  
        [MaritalStatus],  
        [Gender],  
        [YearlyIncome],  
        [TotalChildren],  
        [NumberChildrenAtHome],  
        [Education],  
        [Occupation],  
        [HouseOwnerFlag],  
        [NumberCarsOwned]  
      FROM  
        [dbo].[ProspectiveBuyer]  
      ') AS t  
    
  6. 다음 제네릭 구문을 바꿉다.

    <ON clause, mapping,>   
    WHERE <where clause, boolean 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 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. 파일 메뉴에서 DMXQuery1.dmx 다른 이름으로 저장을 클릭합니다.

  8. 다른 이름으로 저장 대화 상자에서 적절한 폴더로 이동하고 파일 Batch_Prediction.dmx이름을 지정합니다.

  9. 도구 모음에서 실행 단추를 클릭합니다.

    쿼리는 고객 이름, 각 고객이 자전거를 구매할지 여부에 대한 예측 및 예측의 확률을 포함하는 테이블을 반환합니다.

이는 Bike Buyer 자습서의 마지막 단계입니다. 이제 고객 간의 유사성을 탐색하고 잠재 고객이 자전거를 구매할지 여부를 예측하는 데 사용할 수 있는 마이닝 모델 집합이 있습니다.

시장 바구니 시나리오에서 DMX를 사용하는 방법을 알아보려면 Market Basket DMX 자습서를 참조하세요.