의사 결정 트리 모델 쿼리(Analysis Services - 데이터 마이닝)

데이터 마이닝 모델에 대한 쿼리를 만들 때 분석 중에 발견된 패턴에 대한 세부 정보를 제공하는 내용 쿼리를 만들거나, 모델의 패턴을 사용하여 새 데이터에 대한 예측을 수행하는 예측 쿼리를 만들 수 있습니다. 예를 들어 의사 결정 트리 모델에 대한 내용 쿼리는 각 트리 수준의 사례 수에 대한 통계를 제공하거나 사례를 구분하는 규칙을 제공할 수 있습니다. 또한 예측 쿼리는 권장 사항, 분류 등을 생성하기 위해 모델을 새 데이터에 매핑합니다. 쿼리를 사용하여 모델에 대한 메타데이터를 검색할 수도 있습니다.

이 섹션에서는 Microsoft 의사 결정 트리 알고리즘을 기반으로 하는 모델에 대한 쿼리를 만드는 방법에 대해 설명합니다.

  • 내용 쿼리

    데이터 마이닝 스키마 행 집합에서 모델 매개 변수 검색

    DMX를 사용하여 모델의 트리에 대한 정보 반환

    의사 결정 트리 모델에서 회귀 노드 반환

  • 예측 쿼리

    예측 및 확률 반환

    의사 결정 트리에서 연결 예측

의사 결정 트리 모델 정보 찾기

의사 결정 트리 모델의 내용에 대한 의미 있는 쿼리를 만들려면 모델 내용의 구조와 노드 유형에 따라 저장되는 정보의 종류를 이해해야 합니다. 자세한 내용은 의사 결정 트리 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)를 참조하십시오.

맨 위로 이동

예제 쿼리 1: 데이터 마이닝 스키마 행 집합에서 모델 매개 변수 검색

데이터 마이닝 스키마 행 집합을 쿼리하면 모델이 만들어진 날짜, 모델이 마지막으로 처리된 날짜, 모델의 기반이 되는 마이닝 구조의 이름, 예측 가능한 특성으로 사용된 열 이름 등 모델에 대한 메타데이터를 찾을 수 있습니다. 모델을 처음으로 만들 때 사용한 매개 변수를 반환할 수도 있습니다.

select MINING_PARAMETERS 
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_Decision Tree'

예 결과:

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.5, MAXIMUM_INPUT_ATTRIBUTES=255,MAXIMUM_OUTPUT_ATTRIBUTES=255,MINIMUM_SUPPORT=10,SCORE_METHOD=4,SPLIT_METHOD=3,FORCE_REGRESSOR=

맨 위로 이동

예제 쿼리 2: DMX를 사용하여 모델의 트리에 대한 정보 반환

다음 쿼리는 기본 데이터 마이닝 자습서에서 만든 의사 결정 트리 모델에 대한 일부 기본 정보를 반환합니다. 이 쿼리는 예측 가능한 특정 특성을 나타내는 최상위 트리 노드인 유형 2 노드를 모두 반환합니다. 이 모델에는 예측 가능한 특성이 하나이므로 트리 노드가 한 개뿐입니다. 그러나 의사 결정 트리 알고리즘을 사용하여 연결 모델을 만드는 경우 각 제품에 대해 하나씩 수백 개의 트리가 있을 수 있습니다.

[!참고]

열 CHILDREN_CARDINALITY는 대괄호로 묶어 동일한 이름의 MDX 예약 키워드와 구분해야 합니다.

SELECT MODEL_NAME, NODE_NAME, NODE_CAPTION, 
NODE_SUPPORT, [CHILDREN_CARDINALITY]
FROM TM_DecisionTrees.CONTENT
WHERE NODE_TYPE = 2

예 결과:

MODEL_NAME

NODE_NAME

NODE_CAPTION

NODE_SUPPORT

CHILDREN_CARDINALITY

TM_DecisionTree

000000001

All

12939

5

의사 결정 트리 모델에서 특정 노드의 카디널리티를 보면 해당 노드의 직접 자식 수를 알 수 있습니다. 따라서 이전 쿼리가 반환한 노드의 카디널리티를 보면 모델에서 잠재 자전거 구매자의 대상 모집단을 5개의 하위 그룹으로 나누었음을 알 수 있습니다. 다음 관련 쿼리는 이러한 5개 하위 그룹의 자식을 자식 노드의 특성 및 값 분포와 함께 반환합니다. 지지도, 확률 및 분산과 같은 통계는 중첩 테이블 NODE_DISTRIBUTION에 저장되므로 이 예에서는 FLATTENED 키워드를 사용하여 중첩 테이블 열을 출력합니다.

[!참고]

중첩 테이블 열 SUPPORT는 대괄호로 묶어 동일한 이름의 예약 키워드와 구분해야 합니다.

SELECT FLATTENED NODE_NAME, NODE_CAPTION,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT]
FROM NODE_DISTRIBUTION) AS t
FROM TM_DecisionTree.CONTENT
WHERE [PARENT_UNIQUE_NAME] = '000000001'

예 결과:

NODE_NAME

NODE_CAPTION

T.ATTRIBUTE_NAME

T.ATTRIBUTE_VALUE

SUPPORT

00000000100

Number Cars Owned = 0

Bike Buyer

Missing

0

00000000100

Number Cars Owned = 0

Bike Buyer

0

1067

00000000100

Number Cars Owned = 0

Bike Buyer

1

1875

00000000101

Number Cars Owned = 3

Bike Buyer

Missing

0

00000000101

Number Cars Owned = 3

Bike Buyer

0

678

00000000101

Number Cars Owned = 3

Bike Buyer

1

473

이러한 결과를 통해 자전거를 구입한 고객([Bike Buyer] = 1)을 구분하고 1067명의 고객이 0대의 차량을 소유했으며 473명의 고객이 3대의 차량을 소유했다는 것을 알 수 있습니다.

자전거를 구입한 고객에 대한 추가 정보를 검색한다고 가정합니다. 다음 예와 같이 쿼리에 IsDescendant(DMX) 함수를 사용하여 하위 트리에 대한 추가 세부 정보를 볼 수 있습니다. 이 쿼리는 트리에서 42세 이상인 고객을 포함하는 리프 노드(NODE_TYPE = 4)를 검색하여 자전거 구매자 수를 반환합니다. 이 쿼리는 중첩 테이블의 행을 Bike Buyer = 1인 행으로 제한합니다.

SELECT FLATTENED NODE_NAME, NODE_CAPTION,NODE_TYPE,
(
SELECT [SUPPORT] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Bike Buyer' AND ATTRIBUTE_VALUE = '1'
) AS t
FROM TM_DecisionTree.CONTENT
WHERE ISDESCENDANT('0000000010001')
AND NODE_TYPE = 4

예 결과:

NODE_NAME

NODE_CAPTION

t.SUPPORT

000000001000100

Yearly Income >= 26000 and < 42000

266

00000000100010100

Total Children = 3

75

0000000010001010100

Number Children At Home = 1

75

맨 위로 이동

예제 쿼리 3: 의사 결정 트리 모델에서 회귀 노드 반환

연속 특성에 대한 회귀를 포함하는 의사 결정 트리 모델을 만드는 경우 회귀 수식을 사용하여 예측을 수행하거나 회귀 수식에 대한 정보를 추출할 수 있습니다. 회귀 모델 쿼리에 대한 자세한 내용은 선형 회귀 모델 쿼리(Analysis Services - 데이터 마이닝)를 참조하십시오.

모델에 회귀 노드와 불연속 특성 또는 범위에 따라 분할되는 노드가 혼합되어 있는 경우 회귀 노드만 반환하는 쿼리를 만들 수 있습니다. NODE_DISTRIBUTION 테이블에는 회귀 수식에 대한 세부 정보가 포함됩니다. 이 예에서는 쉽게 볼 수 있도록 열이 일반화되고 NODE_DISTRIBUTION 테이블에 별칭이 지정됩니다. 그러나 이 모델에는 Income을 다른 연속 특성과 연결하는 회귀 변수가 없습니다. 이 경우 Analysis Services는 특성의 평균 값과 해당 특성에 대한 모델의 총 분산을 반환합니다.

SELECT FLATTENED NODE_DISTRIBUTION AS t
FROM DT_Predict. CONTENT
WHERE NODE_TYPE = 25

예 결과:

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

t.SUPPORT

t.PROBABILITY

t.VARIANCE

t.VALUETYPE

Yearly Income

Missing

0

0.000457142857142857

0

1

Yearly Income

57220.8876687257

17484

0.999542857142857

1041275619.52776

3

  

57220.8876687257

0

0

1041216662.54387

11

회귀 모델에 사용되는 값 유형 및 통계에 대한 자세한 내용은 선형 회귀 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)를 참조하십시오.

맨 위로 이동

모델을 사용하여 예측 만들기

의사 결정 트리는 분류, 회귀, 연결 등과 같은 다양한 태스크에 사용할 수 있으므로 의사 결정 트리 모델에 대한 예측 쿼리를 작성할 때 많은 옵션을 사용할 수 있습니다. 예측 결과를 이해하려면 모델을 만든 용도를 알아야 합니다. 다음 쿼리 예제에서는 3가지 다른 시나리오를 보여 줍니다.

  • 분류 모델에 대한 예측을 예측이 정확할 확률과 함께 반환한 다음 확률별로 결과 필터링

  • 단일 쿼리를 만들어 연결 예측

  • 의사 결정 트리에서 입력과 출력 간의 관계가 선형인 부분에 대한 회귀 수식 검색

맨 위로 이동

예제 쿼리 4: 예측 및 확률 반환

다음 예제 쿼리에서는 기본 데이터 마이닝 자습서에서 만든 의사 결정 트리 모델을 사용하고 AdventureWorks DW의 예제 데이터 테이블 dbo.ProspectiveBuyers를 모델에 전달하여 목록의 고객 중 자전거를 구입할 고객을 예측합니다. 이 쿼리에는 모델에서 발견한 확률에 대한 유용한 정보를 포함하는 중첩 테이블을 반환하는 예측 함수 PredictHistogram(DMX)이 포함됩니다. 예측은 확률이 50%를 초과하는 자전거 잠재 구매자만 반환되도록 WHERE 절을 추가하여 필터링됩니다.

SELECT
  [TM_DecisionTree].[Bike Buyer],
  PredictHistogram([Bike Buyer]) as Results
FROM
  [TM_DecisionTree]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW],
    'SELECT
      [FirstName],
      [LastName],
      [MaritalStatus],
      [Gender],
      [YearlyIncome],
      [TotalChildren],
      [NumberChildrenAtHome],
      [HouseOwnerFlag],
      [NumberCarsOwned]
    FROM
      [dbo].[ProspectiveBuyer]
    ') AS t
ON
  [TM_DecisionTree].[First Name] = t.[FirstName] AND
  [TM_DecisionTree].[Last Name] = t.[LastName] AND
  [TM_DecisionTree].[Marital Status] = t.[MaritalStatus] AND
  [TM_DecisionTree].[Gender] = t.[Gender] AND
  [TM_DecisionTree].[Yearly Income] = t.[YearlyIncome] AND
  [TM_DecisionTree].[Total Children] = t.[TotalChildren] AND
  [TM_DecisionTree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
  [TM_DecisionTree].[House Owner Flag] = t.[HouseOwnerFlag] AND
  [TM_DecisionTree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Bike Buyer] = 1
AND PredictProbability([Bike Buyer]) >'.05'

기본적으로 Analysis Services는 열 레이블 Expression을 사용하여 중첩 테이블을 반환합니다. 반환되는 열에 별칭을 지정하여 이 레이블을 변경할 수 있습니다. 이렇게 하면 별칭(이 경우 Results)이 열 머리글과 중첩 테이블의 값 모두로 사용됩니다. 결과를 보려면 중첩 테이블을 확장해야 합니다.

예 결과:

Bike Buyer

결과

1

결과

Bike Buyer$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
125400.6348492420456440.01356216828156200
014600.3649841745793770.0066133693255091500
00.0001665833749791770.00016658337497917700

공급자가 여기에 표시된 결과와 같은 계층적 행 집합을 지원하지 않는 경우 쿼리에 FLATTENED 키워드를 사용하여 반복되는 열 값 대신 Null을 포함하는 테이블로 결과를 반환할 수 있습니다. 자세한 내용은 중첩 테이블(Analysis Services - 데이터 마이닝) 또는 Select 문 이해(DMX)를 참조하십시오.

맨 위로 이동

예제 쿼리 5: 의사 결정 트리에서 연결 예측

다음 쿼리를 사용하려면 자습서에 포함된 연결 모델의 복사본을 만들고 알고리즘을 의사 결정 트리 알고리즘으로 변경해야 합니다. 자세한 내용은 3단원: 시장 바구니 시나리오 구축(중급 데이터 마이닝 자습서)을 참조하십시오.

다음 예제 쿼리는 Business Intelligence Development Studio에서 필드를 선택한 다음 드롭다운 목록에서 이러한 필드의 값을 선택하여 간단하게 만들 수 있는 단일 쿼리입니다.

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)
FROM
  [DT_Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Patch kit' AS [Model]) AS [v Assoc Seq Line Items]) AS t

예상 결과:

Model

Mountain-200

Mountain Tire Tube

Touring Tire Tube

결과를 통해 Patch Kit 제품을 구매한 고객에게 권장하기에 가장 좋은 3가지 제품을 알 수 있습니다. 값을 입력하거나 단일 쿼리 입력 대화 상자에서 값을 추가 또는 제거하여 권장 사항을 결정할 때 여러 제품을 입력으로 제공할 수도 있습니다. 다음 예제 쿼리에서는 여러 값을 제공하여 이에 대해 예측을 수행하는 방법을 보여 줍니다. 값은 입력 값을 정의하는 SELECT 문에서 UNION 절로 연결됩니다.

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)
From
  [DT_Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Racing Socks' AS [Model]
  UNION SELECT 'Women''s Mountain Shorts' AS [Model]) AS [v Assoc Seq Line Items]) AS t

예상 결과:

Model

Long-Sleeve Logo Jersey

Mountain-400-W

Classic Vest

맨 위로 이동

예측 함수 목록

모든 Microsoft 알고리즘은 공통 함수 집합을 지원합니다. 그러나 Microsoft 의사 결정 트리 알고리즘은 다음 표에 나열된 함수를 추가로 지원합니다.

모든 Microsoft 알고리즘에 공통된 함수 목록은 쿼리 유형에 대한 함수 매핑(DMX)을 참조하십시오. 특정 함수의 구문은 DMX(Data Mining Extensions) 함수 참조를 참조하십시오.

변경 내역

업데이트된 내용

손쉽게 쿼리 예제를 검토할 수 있도록 항목 간 링크를 추가했습니다.

회귀 노드 예제를 내용 쿼리의 적합한 섹션으로 옮겼습니다.