데이터 마이닝 모델 쿼리(Analysis Services - 데이터 마이닝)
데이터 마이닝 모델을 학습한 후에는 SQL Server Management Studio 또는 Business Intelligence Development Studio에서 제공하는 사용자 지정 뷰어를 사용하여 모델을 탐색할 수 있습니다. 그러나 모델을 통해 예측을 만들거나 보다 구체적인 정보나 고급 정보를 얻으려는 경우 데이터 마이닝 모델에 대한 쿼리를 만들어야 합니다. 쿼리를 사용하면 다음과 같은 방식으로 모델 정보를 보다 잘 이해하고 처리할 수 있습니다.
단일 예측 및 일괄 처리 예측 만들기
모델에서 발견된 패턴에 대한 자세한 정보 얻기
모델의 특정 패턴 또는 하위 집합에 대한 세부 정보 또는 학습 사례 확인
마이닝 모델 사례의 세부 정보로 드릴스루
모델 및 데이터의 전체 또는 일부에 대한 수식, 규칙 또는 통계 추출
SQL Server Analysis Services는 쿼리를 만들 수 있는 그래픽 디자인 인터페이스를 제공하며 사용자 지정 예측과 복잡한 쿼리를 만드는 데 유용한 DMX(Data Mining Extensions)라는 쿼리 언어를 제공합니다. DMX 예측 쿼리를 만들려면 SQL Server Management Studio 및 Business Intelligence Development Studio에서 사용할 수 있는 쿼리 작성기를 시작합니다. SQL Server Management Studio에는 DMX 쿼리 템플릿 집합도 제공됩니다.
쿼리 작성기 사용법은 예측 쿼리 작성기를 사용하여 DMX 예측 쿼리 만들기를 참조하십시오.
DMX 쿼리 템플릿 사용법은 SQL Server Management Studio에서 DMX 쿼리 만들기 또는 방법: SQL Server Management Studio에서 템플릿 사용을 참조하십시오.
이 섹션에서는 사용자가 만들 수 있는 쿼리의 유형과 각 쿼리 유형에서 제공하는 정보에 대해 설명하며, 특정 유형의 데이터 마이닝 모델 쿼리에 대한 예도 제공합니다.
예측 쿼리
단일 예측 쿼리
일괄 처리 예측 쿼리
시계열 예측
내용 쿼리
데이터 정의 쿼리
예측 쿼리
대부분의 데이터 마이닝 프로젝트는 마이닝 모델을 사용하여 예측을 만드는 것을 주목적으로 합니다. 예를 들어 12월 중 다음 해에 판매하게 될 제품의 개수를 예측하거나 잠재 고객이 광고를 보고 제품을 구매할 것인지 여부를 예측하고자 할 수 있습니다.
예측을 만들 때 사용자는 일반적으로 몇 가지 새로운 데이터를 제공한 다음 이 새로운 데이터를 기반으로 모델이 예측을 생성하도록 요청합니다. 예측 조인의 외부 데이터 원본에 모델을 매핑하여 예측을 일괄 처리로 수행할 수도 있고, 단일 쿼리를 만들어 한 번에 한 개의 값을 제공할 수도 있습니다.
단일 쿼리와 일괄 처리 예측 쿼리는 모두 PREDICTION JOIN 구문을 사용하여 새 데이터를 정의하며 예측 조인의 입력 쪽을 지정하는 방식만 다릅니다. 단일 쿼리에서 데이터는 쿼리에 포함되어 인라인으로 제공됩니다. 일괄 처리 쿼리에서 데이터는 OPENQUERY 구문을 사용하여 지정한 외부 데이터 원본에서 가져옵니다. 자세한 내용은 OPENQUERY(DMX)를 참조하십시오.
또한 시계열 모델을 사용하면 모델만을 기반으로 하여 예측을 만들 수 있으므로 새로운 데이터를 제공할 필요 없이 기존 계열을 기반으로 하는 예측을 요청하기만 하면 됩니다.
다음 섹션에서는 이러한 각각의 쿼리 유형을 만드는 방법에 대해 설명합니다.
쿼리 유형 |
쿼리 옵션 |
---|---|
단일 예측 쿼리 |
쿼리에 입력한 새로운 단일 사례 또는 복수 사례에 대한 예측을 만듭니다. |
일괄 처리 예측 |
외부 데이터 원본에 있는 새 사례를 모델에 매핑하고 예측을 만듭니다. |
시계열 예측 |
기존 모델을 기반으로 지정된 수의 예측 단계를 예측합니다. 새 데이터를 추가하여 기존 모델을 확장하고 복합 계열을 기반으로 예측을 만듭니다. REPLACE_MODEL_CASES 옵션을 사용하여 새 데이터 계열에 기존 모델을 적용합니다. |
다음 달 판매 금액, 고객에게 추천할 제품과 같은 특정 값을 예측하는 것 외에도 예측 쿼리를 사용자 지정하여 예측과 관련된 여러 종류의 정보를 반환할 수 있습니다. 예를 들어 사용자에게 권장 사항을 표시할지 여부를 결정할 수 있도록 예측의 정확성에 대한 확률을 아는 것도 유용할 수 있습니다.
예측 쿼리를 통해 반환되는 정보를 사용자 지정하려면 예측 함수를 쿼리에 추가하십시오. 지원되는 함수는 모델 또는 쿼리 유형마다 다릅니다. 예를 들어 클러스터링 모델은 모델에서 만든 그룹화에 대한 추가 세부 정보를 제공하는 특수한 예측 함수를 지원하고, 시계열 모델은 시간 경과에 따른 차이를 계산하는 예측 함수를 지원합니다. 또한 모든 모델 유형에서 작동하는 일반 예측 함수도 있습니다. 다양한 유형의 쿼리에서 지원하는 예측 함수 목록은 쿼리 유형에 대한 함수 매핑(DMX)을 참조하십시오. 예측 함수에 대한 전체 목록은 DMX(Data Mining Extensions) 함수 참조를 참조하십시오.
맨 위로 이동
단일 쿼리
단일 쿼리는 단순한 예측을 실시간으로 만들려는 경우에 유용합니다. 예를 들어 웹 사이트를 통해 고객으로부터 정보를 얻은 다음 이 데이터를 이용하여 해당 고객에 대한 권장 사항으로 표시되는 예측을 반환할 수 있습니다. 또는 전자 메일의 내용을 분석한 다음 기존 분류 모델을 사용하여 전자 메일에 범주를 할당하고 그에 맞게 메시지를 라우팅할 수 있습니다.
단일 쿼리에는 입력을 포함하는 별도의 테이블이 필요하지 않습니다. 대신 단일 데이터 행을 모델에 전달하면 단일 예측이 실시간으로 반환됩니다. 단일 사례를 포함하는 SELECT 문을 입력하고 UNION 연산자를 추가한 다음 다른 SELECT 문을 입력하여 다른 사례를 지정하는 방식으로 단일 쿼리를 확장하여 여러 예측을 만들 수도 있습니다.
기존 모델에 대한 단일 쿼리는 다음과 같은 방법으로 만들 수 있습니다.
데이터 마이닝 디자이너 사용
단일 쿼리 템플릿 사용
프로그래밍 방식으로 또는 다른 Analysis Services 클라이언트에서 DMX 문 만들기
단일 쿼리를 만들 때 PREDICTION JOIN의 형태로 모델에 새 데이터를 제공해야 합니다. 즉, 실제 테이블에 매핑하는 것은 아니지만 새 데이터가 마이닝 모델의 기존 열과 일치하도록 해야 합니다. 새 데이터 열과 새 데이터가 정확하게 일치할 경우 Analysis Services에서 자동으로 열을 매핑하는데 이를 NATURAL PREDICTION JOIN이라고 합니다. 그러나 열이 일치하지 않거나 새 데이터의 종류와 양이 모델에 있는 데이터와 동일하지 않을 경우 새 데이터에 매핑할 모델 열을 지정하거나 누락 값을 지정해야 합니다.
데이터 마이닝 디자이너에서 단일 쿼리를 만드는 방법은 방법: 데이터 마이닝 디자이너에서 단일 쿼리 작성 및 예측 쿼리 작성기를 사용하여 DMX 예측 쿼리 만들기를 참조하십시오.
DMX를 사용하여 단일 쿼리를 만드는 방법은 예측 쿼리(DMX)를 참조하십시오.
SQL Server Management Studio에서 DMX 쿼리 템플릿을 사용하는 방법의 예는 방법: 템플릿에서 단일 예측 쿼리 작성을 참조하십시오.
맨 위로 이동
일괄 처리 예측 쿼리
예측 조인을 수행할 때 사용자가 모델을 새 데이터 원본에 매핑하면 Analysis Services에서 모델의 패턴을 기반으로 새 데이터의 각 행에 대해 예측을 만듭니다. 예측 조인은 테이블이나 다른 외부 데이터 원본에 많은 양의 정보가 있고 학습된 모델을 사용하여 예측을 만들고자 할 경우에 유용합니다.
기존 모델에 대한 일괄 처리 예측 쿼리는 다음과 같은 방법으로 만들 수 있습니다.
데이터 마이닝 디자이너 사용
템플릿 사용
프로그래밍 방식으로 또는 다른 Analysis Services 클라이언트에서 DMX 문 만들기
데이터 마이닝 디자이너를 사용하여 일괄 처리 예측 쿼리를 만드는 경우 먼저 외부 데이터 원본을 데이터 원본 뷰로 정의해야 합니다.
DMX를 사용하여 예측 조인을 만드는 경우 OPENQUERY, OPENROWSET 또는 SHAPE 명령을 사용하여 외부 데이터 원본을 지정할 수 있습니다. DMX 템플릿의 기본 데이터 액세스 메서드는 OPENQUERY입니다. 이러한 방법에 대한 자세한 내용은 <source data query>를 참조하십시오.
외부 데이터를 정의하는 방식에 관계없이 사용자가 지정하는 데이터 원본에는 모델에 포함된 데이터와 유사한 데이터가 있는 열이 포함되야 합니다. 그러나 새로운 정보가 완전하지 않을 수 있습니다. 예를 들어 고객 목록에 나이 열이 있지만 수입에 대한 정보는 없을 수 있습니다. 모델을 학습할 때 수입 데이터가 사용되었더라도 새 데이터를 모델에 매핑하고 예측을 만들 수 있지만 일부 경우에는 완전한 정보가 부족하여 예측 품질이 영향을 받을 수 있습니다.
최상의 결과를 얻기 위해서는 새 데이터와 모델 간에 일치하는 열을 가능한 많이 조인해야 합니다. 그러나 일치하는 열이 없더라도 쿼리는 성공합니다. 즉, 조인된 열이 없는 경우 쿼리가 한계 예측을 반환하는데 이는 PREDICTION JOIN 절이 없는 SELECT <predictable-column> FROM <model> 문과 같습니다.
예측 쿼리 결과 처리
예측 쿼리는 관계형 데이터베이스에 대한 쿼리와는 다릅니다. 쿼리에 추가된 각 예측 함수는 고유한 행 집합을 반환합니다. 그러므로 단일 사례에 대한 예측을 만들면 그 결과는 추가 세부 정보를 포함하는 중첩 테이블의 여러 열이 함께 표시되는 예측 값일 수 있습니다.
여러 개의 함수를 한 개의 쿼리에 결합할 때마다 반환 결과는 계층적 행 집합으로 결합됩니다. 그러나 공급자가 계층적 행 집합을 처리할 수 없는 경우 예측 쿼리에 FLATTEN 키워드를 사용하여 결과를 평면화할 수 있습니다.
평면화된 행 집합의 예를 비롯한 자세한 내용은 SELECT(DMX)를 참조하십시오.
시계열 마이닝 모델의 예측
시계열 모델은 새 데이터를 사용하여 예측을 만들 수 있다는 점에서 유연성이 뛰어납니다. 모델을 있는 그대로 사용하여 예측을 만들 수도 있고, 모델에 새 데이터를 제공하여 최신 추세를 기반으로 예측을 업데이트할 수도 있습니다. 새 데이터를 추가할 경우 새 데이터를 사용하는 방식 즉, 모델 사례를 확장할지 아니면 모델 사례를 대체할지를 지정할 수 있습니다.
모델 사례를 확장하는 경우 새 팩트 데이터를 시계열 모델에 추가하면 결합된 새 계열을 기반으로 추가 예측이 수행됩니다. 모델 사례를 대체하는 경우 학습된 모델은 그대로 유지되지만 기본 사례는 새로운 사례 데이터 집합으로 대체됩니다.
사용하는 방법에 관계없이 예측은 항상 원래 계열의 끝에서 시작됩니다.
예를 들어 전년도 판매 데이터에 대해 학습된 기존 시계열 모델이 있다고 가정합니다. 수개월 동안 새로운 판매 데이터를 수집한 후 현재 연도에 대한 예측 판매량을 업데이트하려고 합니다. 이 경우 새 데이터를 추가하여 모델을 업데이트하고 새로운 예측을 만들도록 모델을 확장하는 예측 조인을 만들 수 있습니다.
또는 기존 데이터를 기반으로 모델을 작성한 다음 사례 데이터를 새 데이터로 대체하는 예측 조인을 만들 수 있습니다. 이 방법은 예를 들어 한 상점에서 많은 양의 데이터가 손실되어 다른 상점에 생성된 모델로 예측을 만들려는 경우에 유용합니다. 시계열 모델에 대한 예측 조인을 만드는 방법은 시계열 모델 쿼리 또는 PredictTimeSeries(DMX)를 참조하십시오.
맨 위로 이동
내용 쿼리
내용 쿼리는 마이닝 모델의 내부 통계와 구조에 대한 정보를 추출하는 한 방법입니다. 내용 쿼리는 때때로 뷰어에서 쉽게 사용할 수 없는 세부 정보를 제공할 수 있습니다. 내용 쿼리의 결과를 사용하여 다른 용도로 사용할 정보를 프로그래밍 방식으로 추출할 수도 있습니다. 예를 들어 사용자 고유의 계산을 만들기 위해 수식 또는 확률을 추출하거나 모델의 사례에 대한 동작 가능한 정보를 검색할 수 있습니다.
이 섹션에서는 내용 쿼리를 사용하여 검색할 수 있는 정보의 유형에 대한 일반적인 정보를 제공합니다. 내용 쿼리는 다음 표에 표시된 DMX 구문을 사용합니다.
쿼리 유형 |
쿼리 옵션 |
---|---|
SELECT FROM <model>.CASES |
모델 학습 또는 테스트에 사용된 사례를 찾습니다. 기본 마이닝 구조의 열을 비롯한 데이터로 드릴스루합니다. |
SELECT FROM <structure>.CASES |
특정 마이닝 모델에 포함되지 않은 열을 포함하여 구조에 포함된 모든 데이터를 확인합니다. |
SELECT FROM <model>.CONTENT |
규칙 및 수식, 지지도 및 분산 통계 등을 포함하여 모델의 특정 노드에 대한 세부 정보를 검색합니다. |
SELECT FROM <model>.DIMENSIONCONTENT |
데이터 마이닝 차원에 대한 쿼리를 지원합니다. 이 쿼리 유형은 주로 내부용입니다. 사용자 고유의 플러그 인 알고리즘을 개발할 경우 이 구문을 사용하여 모델을 테스트할 수 있습니다. 이 기능을 지원하지 않는 알고리즘도 있습니다. 지원 여부는 MINING_SERVICES 스키마 행 집합에 플래그로 표시됩니다. |
일부 모델 콘텐츠는 모든 알고리즘에 적용되는 표준입니다. 그러나 일반적으로 각 모델의 콘텐츠는 모델을 작성하는 데 사용된 알고리즘에 따라 달라집니다. 그러므로 내용 쿼리를 만들 때 모델에 가장 유용한 정보의 유형을 알고 있어야 합니다.
예를 들어 SELECT FROM <model>.CONTENT 구문을 사용하는 쿼리를 만드는 경우 모델이 시퀀스 클러스터링 모델인지, 의사 결정 트리 모델인지, 시계열 모델인지에 따라 쿼리에서 반환되는 정보가 매우 달라집니다. 연결 모델의 경우 사용자 지정 응용 프로그램에서 규칙을 사용할 수 있도록 특정 규칙에 대한 설명을 검색할 수 있지만, 시계열 또는 시퀀스 클러스터링 모델의 경우 모델에서 발견된 시간 패턴에 대한 세부 정보를 찾을 수 있습니다.
내용 쿼리를 통해 얻을 수 있는 정보의 폭과 깊이를 보여 주는 몇 가지 예는 다음 섹션에 나와 있습니다. 그러나 마이닝 모델 콘텐츠 및 각 모델 유형에만 해당하는 내용에 대한 정보는 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)를 참조하십시오.
예 1: 연결 모델에 대한 내용 쿼리
SELECT FROM <model>.CONTENT 문을 사용하면 쿼리하는 모델의 유형에 따라 서로 다른 종류의 콘텐츠를 반환할 수 있습니다. 연결 모델에서 규칙을 나타내는 노드에는 NODE_TYPE 값 8이 있지만 항목 집합에는 NODE_TYPE 값 7이 있습니다. 그러므로 다음 쿼리는 지지도 순으로 순위가 지정된(기본 순서) 상위 10개 항목 집합을 반환합니다.
SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7
다음 예에서는 노드 ID, 전체 규칙, 항목 집합의 오른쪽에 있는 제품 즉, 항목 집합의 일부로서 일부 다른 제품과 관련이 있는 것으로 예측되는 제품이 반환됩니다.
FLATTENED 키워드는 중첩 행 집합을 플랫 테이블로 변환해야 함을 나타냅니다. 규칙의 오른쪽에 있는 제품을 나타내는 특성은 NODE_DISTRIBUTION 테이블에 포함되어 있습니다. 따라서 길이가 2보다 커야 한다는 요구 사항을 추가하여 특성 이름을 포함하는 행만 검색합니다. 단순 문자열 함수는 세 번째 열에서 모델 이름을 제거하는 데 사용됩니다. 일반적으로 모델 이름은 항상 중첩 열 값의 앞에는 옵니다. WHERE 절은 규칙만 검색하기 위해 NODE_TYPE 값을 8로 지정합니다.
SELECT FLATTENED NODE_UNIQUE_NAME , NODE_DESCRIPTION,
(SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))
FROM NODE_DISTRIBUTION
WHERE LEN(ATTRIBUTE_NAME)>2
)
AS RightSideProduct
FROM [<Association model name>].CONTENT
WHERE NODE_TYPE = 8
ORDER BY NODE_SUPPORT DESC
자세한 내용은 연결 모델 쿼리(Analysis Services - 데이터 마이닝)를 참조하십시오.
예 2: 의사 결정 트리 모델에 대한 내용 쿼리
해당 상태가 예측된 이유에 대해 설명하는 규칙을 반환하여 예측 쿼리를 수행하고자 하는 경우 모델 콘텐츠를 쿼리하는 것이 좋습니다. 예를 들어 다음 구문과 같이 예측 함수 PredictNodeId(DMX)를 쿼리에 추가하여 규칙을 포함하는 노드의 ID를 가져올 수 있습니다.
SELECT Predict([Bike Buyer]), PredictNodeID([Bike Buyer])
FROM [<decision tree model name>]
PREDICTION JOIN
<input rowset>
의사 결정 트리 모델의 경우 캡션에 결과 경로에 대한 설명이 포함되어 있습니다. 그러므로 결과가 포함된 노드의 ID를 알고 있으면 다음과 같은 내용 쿼리를 만들어 예측에 대해 설명하는 규칙이나 경로를 검색할 수 있습니다.
SELECT NODE_CAPTION
FROM [<decision tree model name>]
WHERE NODE_UNIQUE_NAME= '<node id>'
자세한 내용은 의사 결정 트리 모델 쿼리(Analysis Services - 데이터 마이닝)를 참조하십시오.
맨 위로 이동
데이터 정의 쿼리
Analysis Services는 마이닝 구조와 모델을 만들고 관리하기 위한 다양한 데이터 정의 문을 제공합니다. 자세한 내용은 마이닝 구조 및 마이닝 모델 관리를 참조하십시오.