일반적인 데이터 마이닝 프로젝트의 목표는 마이닝 모델을 사용하여 예측을 만드는 것입니다. 예를 들어 특정 서버 클러스터의 예상 가동 중지 시간을 예측하거나 고객 세그먼트가 광고 캠페인에 응답할 가능성이 있는지 여부를 나타내는 점수를 생성할 수 있습니다. 이러한 모든 작업을 수행하려면 예측 쿼리를 만듭니다.
기능적으로 SQL Server에서 지원되는 예측 쿼리 유형은 쿼리에 대한 입력 유형에 따라 다릅니다.
| 쿼리 유형 | 쿼리 옵션 |
|---|---|
| 단일 예측 쿼리 | 단일 새 사례 또는 여러 개의 새 사례에 대한 결과를 예측하려는 경우 싱글톤 쿼리를 사용합니다. 쿼리에서 직접 입력 값을 제공하면 쿼리가 단일 세션으로 실행됩니다. |
| 일괄 처리 예측 | 모델에 피드할 외부 데이터가 있는 경우 일괄 처리 예측을 사용하여 예측의 기초로 사용합니다. 전체 데이터 집합을 예측하려면 외부 원본의 데이터를 모델의 열에 매핑한 다음 출력하려는 예측 데이터의 형식을 지정합니다. 전체 데이터 세트에 대한 쿼리는 단일 세션에서 실행되므로 이 옵션은 반복되는 여러 쿼리를 보내는 것보다 훨씬 효율적입니다. |
| 시계열 예측 | 몇 가지 이후 단계에 대한 값을 예측하려는 경우 시계열 쿼리를 사용합니다. 또한 SQL Server 데이터 마이닝은 시계열 쿼리에서 다음과 같은 기능을 제공합니다. 쿼리의 일부로 새 데이터를 추가하여 기존 모델을 확장하고 복합 계열을 기반으로 예측을 수행할 수 있습니다. REPLACE_MODEL_CASES 옵션을 사용하여 새 데이터 계열에 기존 모델을 적용할 수 있습니다. 교차 예측을 수행할 수 있습니다. |
다음 섹션에서는 예측 쿼리의 일반적인 구문, 다양한 유형의 예측 쿼리 및 예측 쿼리의 결과를 사용하는 방법에 대해 설명합니다.
기본 예측 쿼리 디자인
예측을 만들 때 일반적으로 일부 새 데이터를 제공하고 모델에 새 데이터를 기반으로 예측을 생성하도록 요청합니다.
일괄 처리 예측 쿼리에서는 예측 조인을 사용하여 모델을 외부 데이터 원본에 매핑합니다.
단일 예측 쿼리에서는 입력값으로 사용할 값을 하나 이상 입력합니다. 단일 예측 쿼리를 사용하여 여러 예측을 만들 수 있습니다. 그러나 많은 예측을 만들어야 하는 경우 일괄 처리 쿼리를 사용하는 경우 성능이 더 좋습니다.
싱글톤 및 일괄 처리 예측 쿼리는 모두 PREDICTION JOIN 구문을 사용하여 새 데이터를 정의합니다. 차이점은 예측 조인의 입력 측면을 지정하는 방식입니다.
일괄 처리 예측 쿼리에서 데이터는 OPENQUERY 구문을 사용하여 지정된 외부 데이터 원본에서 가져옵니다.
단일 예측 쿼리에서 데이터는 쿼리의 일부로 인라인으로 제공됩니다.
시계열 모델의 경우 입력 데이터가 항상 필요한 것은 아닙니다. 모델에 이미 있는 데이터만 사용하여 예측을 할 수 있습니다. 그러나 새 입력 데이터를 지정하는 경우 새 데이터를 사용하여 모델을 업데이트 및 확장할지 또는 모델에 사용된 원래 데이터 계열을 바꿀지 결정해야 합니다. 이러한 옵션에 대한 자세한 내용은 시계열 모델 쿼리 예제를 참조하세요.
예측 함수 추가
값을 예측하는 것 외에도 예측 쿼리를 사용자 지정하여 예측과 관련된 다양한 종류의 정보를 반환할 수 있습니다. 예를 들어 예측에서 고객에게 추천할 제품 목록을 만드는 경우 각 예측에 대한 확률을 반환하여 순위를 지정하고 사용자에게 상위 권장 사항만 표시할 수도 있습니다.
이렇게 하려면 쿼리에 예측 함수를 추가합니다 . 각 모델 또는 쿼리 형식은 특정 함수를 지원합니다. 예를 들어 클러스터링 모델은 모델에서 만든 클러스터에 대한 추가 세부 정보를 제공하는 특수 예측 함수를 지원하는 반면 시계열 모델에는 시간에 따른 차이를 계산하는 함수가 있습니다. 거의 모든 모델 형식에서 작동하는 일반적인 예측 함수도 있습니다. 다양한 유형의 쿼리에서 지원되는 예측 함수 목록은 DMX 참조: DMX (일반 예측 함수) 항목을 참조하세요.
단일 예측 쿼리 만들기
싱글톤 예측 쿼리는 실시간으로 빠른 예측을 만들려는 경우에 유용합니다. 일반적인 시나리오는 웹 사이트의 양식을 사용하여 고객으로부터 정보를 얻었으며 해당 데이터를 싱글톤 예측 쿼리에 대한 입력으로 제출하려는 경우일 수 있습니다. 예를 들어 고객이 목록에서 제품을 선택할 때 추천할 최상의 제품을 예측하는 쿼리에 대한 입력으로 해당 선택을 사용할 수 있습니다.
단일 예측 쿼리에는 입력이 포함된 별도의 테이블이 필요하지 않습니다. 대신 하나 이상의 값들이 있는 행을 모델에 입력으로 제공하여, 예측 결과가 실시간으로 반환됩니다.
경고
이름에도 불구하고 단일 예측 쿼리는 단일 예측을 수행하는 것이 아니라 각 입력 집합에 대해 여러 예측을 생성할 수 있습니다. 각 입력 사례에 대한 SELECT 문을 만들고 UNION 연산자와 결합하여 여러 입력 사례를 제공합니다.
단일항 예측 쿼리를 만들 때, PREDICTION JOIN 형식으로 모델에 새로운 데이터를 입력해야 합니다. 즉, 실제 테이블에 매핑하지 않더라도 새 데이터가 마이닝 모델의 기존 열과 일치하는지 확인해야 합니다. 새 데이터 열과 새 데이터가 정확히 일치하는 경우 Analysis Services는 열을 매핑합니다. 이를 NATURAL PREDICTION JOIN이라고합니다. 그러나 열이 일치하지 않거나 새 데이터에 모델에 있는 데이터의 종류와 양이 같지 않은 경우 모델에서 새 데이터에 매핑할 열을 지정하거나 누락된 값을 지정해야 합니다.
일괄 처리 예측 쿼리
일괄 처리 예측 쿼리는 예측을 만드는 데 사용하려는 외부 데이터가 있는 경우에 유용합니다. 예를 들어 온라인 활동 및 구매 내역별로 고객을 분류하는 모델을 빌드했을 수 있습니다. 이 모델을 새로 획득한 잠재 고객 목록에 적용하거나, 판매 예측을 만들거나, 제안된 캠페인의 대상을 식별할 수 있습니다.
예측 조인을 수행할 때 모델을 새 데이터 원본의 열에 매핑해야 합니다. 따라서 입력에 대해 선택하는 데이터 원본은 모델의 데이터와 다소 유사한 데이터여야 합니다. 새 정보는 정확히 일치할 필요가 없으며 불완전할 수 있습니다. 예를 들어 모델이 소득 및 연령에 대한 정보를 사용하여 학습되었지만 예측에 사용하는 고객 목록에는 연령이 있지만 소득에 대해서는 아무것도 없다고 가정해 보겠습니다. 이 시나리오에서는 새 데이터를 모델에 매핑하고 각 고객에 대한 예측을 만들 수 있습니다. 그러나 수입이 모델의 중요한 예측 변수인 경우 전체 정보가 부족하면 예측 품질에 영향을 줍니다.
최상의 결과를 얻으려면 새 데이터와 모델 간에 가능한 한 많은 일치하는 열을 조인해야 합니다. 그러나 일치하는 항목이 없더라도 쿼리가 성공합니다. 조인된 열이 없는 경우 쿼리는 PREDICTION JOIN 절이 없는 문 SELECT <predictable-column> FROM <model> 과 동일한 한계 예측을 반환합니다.
모든 관련 열을 성공적으로 매핑한 후에는 쿼리를 실행하고 Analysis Services는 모델의 패턴을 기반으로 새 데이터의 각 행을 예측합니다. 결과를 외부 데이터가 포함된 데이터 원본 뷰의 새 테이블에 다시 저장하거나 SSDT(SQL Server Data Tools) 또는 SQL Server Management Studio를 사용하는 경우 데이터를 복사하여 붙여넣을 수 있습니다.
경고
SSDT(SQL Server Data Tools)에서 디자이너를 사용하는 경우 외부 데이터 원본을 먼저 데이터 원본 뷰로 정의해야 합니다.
DMX를 사용하여 예측 조인을 만드는 경우 OPENQUERY, OPENROWSET 또는 SHAPE 명령을 사용하여 외부 데이터 원본을 지정할 수 있습니다. DMX 템플릿의 기본 데이터 액세스 방법은 OPENQUERY입니다. 이러한 메서드에 대한 자세한 내용은 원본 데이터 쿼리>를 참조<하세요.
시계열 마이닝 모델의 예측
시계열 모델은 다른 모델 유형과 다릅니다. 모델을 그대로 사용하여 예측을 만들거나 모델에 새 데이터를 제공하여 모델을 업데이트하고 최근 추세에 따라 예측을 만들 수 있습니다. 새 데이터를 추가하는 경우 새 데이터를 사용하는 방법을 지정할 수 있습니다.
모델 사례를 확장 하면 시계열 모델의 기존 데이터 계열에 새 데이터를 추가합니다. 이제부터 예측은 결합된 새로운 계열을 기반으로 합니다. 이 옵션은 기존 모델에 몇 가지 데이터 요소를 추가하려는 경우에 적합합니다.
예를 들어 이전 연도의 판매 데이터에 대해 학습된 기존 시계열 모델이 있다고 가정해 보겠습니다. 몇 달 동안의 새 판매 데이터를 수집한 후에는 현재 연도의 판매 예측을 업데이트하기로 결정합니다. 새 데이터를 추가하여 모델을 업데이트하고 모델을 확장하여 새 예측을 만드는 예측 조인을 만들 수 있습니다.
모델 사례를 바꾸 면 학습된 모델을 유지하지만 기본 사례를 새 사례 데이터 집합으로 바꿉니다. 이 옵션은 모델의 추세를 유지하지만 다른 데이터 집합에 적용하려는 경우에 유용합니다.
예를 들어 원래 모델은 판매량이 매우 많은 데이터 집합에 대해 학습되었을 수 있습니다. 기본 데이터를 새 계열(판매량이 낮은 저장소에서)으로 바꾸면 추세가 유지되지만 예측은 대체 계열의 값에서 시작됩니다.
어떤 방법을 사용하든 예측의 시작점은 항상 원래 계열의 끝입니다.
시계열 모델에서 예측 조인을 만드는 방법에 대한 자세한 내용은 시계열 모델 쿼리 예제 또는 PredictTimeSeries(DMX)를 참조하세요.
예측 쿼리 결과 처리 작업
데이터 마이닝 예측 쿼리의 결과를 저장하는 옵션은 쿼리를 만드는 방법에 따라 다릅니다.
SQL Server Management Studio 또는 SSDT(SQL Server Data Tools)에서 예측 쿼리 작성기를 사용하여 쿼리를 빌드하는 경우 예측 쿼리의 결과를 기존 Analysis Services 데이터 원본에 저장할 수 있습니다. 자세한 내용은 예측 쿼리의 결과 보기 및 저장을 참조하세요.
SQL Server Management Studio의 쿼리 창에서 DMX를 사용하여 예측 쿼리를 만들 때 쿼리 출력 옵션을 사용하여 결과를 파일 또는 쿼리 결과 창에 텍스트 또는 표로 저장할 수 있습니다. 자세한 내용은 쿼리 및 텍스트 편집기(SQL Server Management Studio)를 참조하세요.
Integration Services 구성 요소를 사용하여 예측 쿼리를 실행하는 경우 작업은 사용 가능한 ADO.NET 연결 관리자 또는 OLEDB 연결 관리자를 사용하여 데이터베이스에 결과를 쓰는 기능을 제공합니다. 자세한 내용은 데이터 마이닝 쿼리 태스크를 참조하세요.
예측 쿼리의 결과는 관계형 데이터베이스에 대한 쿼리의 결과와 같지 않으며 항상 관련 값의 단일 행을 반환한다는 것을 이해하는 것이 중요합니다. 쿼리에 추가하는 각 DMX 예측 함수는 자체 행 집합을 반환합니다. 따라서 단일 사례에 대해 예측하는 경우 결과는 추가 세부 정보가 포함된 중첩 테이블의 여러 열과 함께 예측 값이 될 수 있습니다.
한 쿼리에서 여러 함수를 결합하면 반환 결과가 계층적 행 집합으로 결합됩니다. 예를 들어 시계열 모델을 사용하여 이 DMX 문과 같은 쿼리를 사용하여 판매액 및 판매 수량에 대한 미래 값을 예측한다고 가정합니다.
SELECT
PredictTimeSeries([Forecasting].[Amount]) as [PredictedAmount]
, PredictTimeSeries([Forecasting].[Quantity]) as [PredictedQty]
FROM
[Forecasting]
이 쿼리의 결과는 각 예측 계열에 대해 하나씩 두 개의 열로, 각 행에는 예측 값이 있는 중첩 테이블이 포함됩니다.
PredictedAmount
| $TIME | 금액 |
|---|---|
| 201101 | 172067.11 |
| $TIME | 금액 |
|---|---|
| 201102 | 363390.68 |
PredictedQty
| $TIME | 수량 |
|---|---|
| 201101 | 77 |
| $TIME | 수량 |
|---|---|
| 201102 | 260 |
공급자가 계층적 행 집합을 처리할 수 없는 경우 예측 쿼리에서 FLATTEN 키워드를 사용하여 결과를 평면화할 수 있습니다. 평면화된 행 집합의 예제를 비롯한 자세한 내용은 SELECT(DMX)를 참조하세요.