5단원: 예측 쿼리 실행
새 설치: 2005년 12월 5일
이 단원에서는 SELECT 문의 SELECT FROM <model> PREDICTION JOIN (DMX) 형식을 사용하여 2단원: Bike Buyer 마이닝 구조에 마이닝 모델 추가에서 만든 의사결정 트리 모델을 기반으로 두 개의 다른 예측 유형을 만듭니다. 이러한 예측 유형은 다음과 같습니다.
- 단일 쿼리
단일 쿼리를 사용하여 단일 고객이 자전거를 구입할 가능성이 있는지 여부를 확인할 수 있습니다. 예를 들어 집이 회사와 가깝고, 자녀가 둘이고, 특정 지역 번호 내에 거주하는 잠재 고객을 파악한 경우 단일 쿼리를 사용하여 이 고객이 자전거를 구입할 가능성이 얼마나 높은지 확인할 수 있습니다.
- 일괄 처리 쿼리
일괄 처리 쿼리를 사용하여 잠재 고객 테이블에서 자전거를 구입할 가능성이 있는 고객을 확인할 수 있습니다. 예를 들어 마케팅 부서에서 고객 및 고객 특성 목록을 제공한 경우 일괄 처리 예측을 사용하여 해당 테이블에서 자전거를 구입할 가능성이 있는 고객을 확인할 수 있습니다.
SELECT 문의 SELECT FROM <model> PREDICTION JOIN (DMX) 형식에는 다음과 같은 세 부분이 있습니다.
- 결과 집합에 반환된 마이닝 모델 열 및 예측 함수 목록. 이 목록에는 원본 데이터의 입력 열도 포함될 수 있습니다.
- 예측 생성에 사용되는 데이터를 정의하는 원본 쿼리. 예를 들어 일괄 처리 쿼리에서는 고객 목록이 원본 쿼리가 될 수 있습니다.
- 마이닝 모델 열과 원본 데이터 간의 매핑. 이름이 일치하는 경우 NATURAL 구문을 사용할 수 있으며 열 매핑을 수행하지 않아도 됩니다.
예측 함수를 사용하여 쿼리의 질을 보다 향상시킬 수 있습니다. 예측 함수는 예측 사항의 발생 확률과 같은 추가 정보를 제공하고 성향 습득 데이터 집합의 예측에 대한 지원을 제공합니다. 예측 함수에 대한 자세한 내용은 함수(DMX)를 참조하십시오.
이 자습서의 예측은 AdventureWorksDW 예제 데이터베이스의 ProspectiveBuyer 테이블을 기반으로 합니다. ProspectiveBuyer 테이블에는 잠재 고객 및 관련 특징 목록이 있습니다. 이 테이블의 고객은 의사결정 트리 마이닝 모델을 만드는 데 사용된 고객과는 독립적입니다.
Business Intelligence Development Studio의 예측 쿼리 작성기를 사용하여 예측을 만들 수도 있습니다. 자세한 내용은 예측 쿼리 작성기를 사용하여 DMX 예측 쿼리 만들기를 참조하십시오.
단원 작업
이 단원에서는 다음 작업을 수행합니다.
- 단일 쿼리를 만들어 특정 고객이 자전거를 구입할 가능성이 있는지 여부 확인
- 일괄 처리 쿼리를 만들어 고객 집합에서 자전거를 구입할 가능성이 있는 고객 확인
단일 쿼리
첫 번째 단계는 단일 예측 쿼리에서 SELECT FROM <model> PREDICTION JOIN(DMX)을 사용하는 것입니다. 다음은 단일 문의 일반적인 예입니다.
SELECT <select list> FROM [<mining model name>]
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input aliast>]
코드의 첫 번째 줄에서는 예측 생성에 사용할 마이닝 모델과 쿼리가 반환하는 마이닝 모델의 열을 정의합니다.
SELECT <select list> FROM [<mining model name>]
코드의 다음 줄에서는 예측 생성에 사용할 고객의 특징을 정의합니다.
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>
NATURAL PREDICTION JOIN을 지정하는 경우 서버에서는 이름을 기반으로 모델의 각 열을 입력 열에 일치시킵니다. 열 이름이 일치하지 않는 경우에는 무시됩니다.
단일 예측 쿼리를 만들려면
개체 탐색기에서 Analysis Services 인스턴스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 가리킨 다음 DMX를 클릭합니다.
비어 있는 새 쿼리가 포함된 쿼리 편집기가 열립니다.
단일 문의 일반적인 예를 빈 쿼리에 복사합니다.
다음 내용을
<select list>
다음 구문으로 바꿉니다.
[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
AS 문은 쿼리에서 반환한 열의 별칭을 지정하는 데 사용됩니다. PredictHistogram 함수는 확률 및 지원을 비롯하여 예측에 대한 여러 통계를 반환합니다. 예측 문에서 사용할 수 있는 함수에 대한 자세한 내용은 함수(DMX)를 참조하십시오.
다음 내용을
[<mining model>]
다음 구문으로 바꿉니다.
[Decision Tree]
다음 내용을
(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 [Decision Tree].[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
파일 메뉴에서 다른 이름으로 DMXQuery1.dmx 저장을 클릭합니다.
다른 이름으로 저장 대화 상자에서 해당 폴더로 이동한 다음 파일 이름을 Singleton_Query.dmx로 지정합니다.
도구 모음에서 실행 단추를 클릭합니다.
쿼리가 지정 특징을 갖는 고객이 자전거를 구입할지 여부에 대한 예측과 이 예측에 대한 통계를 반환합니다.
일괄 처리 쿼리
다음 단계는 일괄 처리 예측 쿼리에서 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>
WHERE <expression>
ORDER BY <expression>
단일 쿼리에서와 같이 코드의 처음 두 줄에서는 예측 생성에 사용할 마이닝 모델의 이름과 쿼리가 반환하는 마이닝 모델의 열을 정의합니다. TOP <number> 문은 쿼리가 <number>로 지정한 수 또는 결과만 반환하도록 지정합니다.
코드의 다음 줄에서는 예측의 토대가 되는 원본 데이터를 정의합니다.
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
원본 데이터를 검색하는 방법에는 여러 가지가 있지만 이 자습서에서는 OPENQUERY를 사용합니다. 사용 가능한 옵션에 대한 자세한 내용은 <source data query>를 참조하십시오.
다음 줄에서는 마이닝 모델의 원본 열과 원본 데이터 열 간의 매핑을 정의합니다.
ON <on clause>
WHERE 절은 예측 쿼리가 반환하는 결과를 필터링합니다.
WHERE <expression>
코드의 마지막 줄에서는 결과를 정렬할 기준 열을 지정합니다.
ORDER BY <expression> [DESC|ASC]
TOP <number> 문과 ORDER BY를 함께 사용하여 반환되는 결과를 필터링할 수 있습니다. 예를 들어 이 예측에서는 예측의 정확도 예상률을 기준으로 정렬된 상위 10명의 자전거 구매자를 반환합니다. [DESC|ASC] 구문을 사용하여 결과 표시 순서를 조정할 수 있습니다.
일괄 처리 예측 쿼리를 만들려면
개체 탐색기에서 Analysis Services 인스턴스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 가리킨 다음 DMX를 클릭합니다.
비어 있는 새 쿼리가 포함된 쿼리 편집기가 열립니다.
일괄 처리 문의 일반적인 예를 빈 쿼리에 복사합니다.
다음 내용을
<select list>
다음 구문으로 바꿉니다.
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer])
TOP 10은 쿼리가 상위 10개의 결과만 반환하도록 지정합니다. 이 쿼리의 ORDER BY 문은 예측의 정확도 예상률을 기준으로 결과를 정렬하여 가능성이 가장 높은 상위 10개의 결과만 반환되도록 합니다.
다음 내용을
[<mining model>]
다음 구문으로 바꿉니다.
[Decision Tree]
다음 내용을
OPENQUERY([<datasource>],'<SELECT statement>')
다음 구문으로 바꿉니다.
OPENQUERY([Adventure Works DW], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t
다음 내용을
<on clause> WHERE <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], '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
파일 메뉴에서 다른 이름으로 DMXQuery1.dmx 저장을 클릭합니다.
다른 이름으로 저장 대화 상자에서 해당 폴더로 이동한 다음 파일 이름을 Batch_Prediction.dmx로 지정합니다.
도구 모음에서 실행 단추를 클릭합니다.
쿼리에서 고객 이름, 각 고객의 자전거 구입 여부 예측 및 예측 사항의 발생 확률을 포함하는 테이블이 반환됩니다.
이 단원은 Bike Buyer 자습서의 마지막 단계입니다. 이제 생성된 마이닝 모델 집합을 사용하여 고객 간 유사성을 조사하고 잠재 고객이 자전거를 구입할 것인지 여부를 예측할 수 있습니다.
Market Basket 시나리오에서 DMX를 사용하는 방법은 Market Basket DMX 자습서를 참조하십시오.