PredictTimeSeries(DMX)
시계열 데이터에 대한 예측 미래 값을 반환합니다. 시계열 데이터는 연속적이며 중첩 테이블이나 사례 테이블에 저장할 수 있습니다. PredictTimeSeries 함수는 항상 중첩 테이블을 반환합니다.
구문
PredictTimeSeries(<table column reference>)
PredictTimeSeries(<table column reference>, n)
PredictTimeSeries(<table column reference>, n-start, n-end)
PredictTimeSeries(<scalar column reference>)
PredictTimeSeries(<scalar column reference>, n)
PredictTimeSeries(<scalar column reference>, n-start, n-end)
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
인수
<table column reference>, <scalar column referenc>
예측할 열의 이름을 지정합니다. 열에는 스칼라 또는 테이블 형식 데이터가 포함될 수 있습니다.n
예측할 다음 단계의 수를 지정합니다. n에 값을 지정하지 않으면 기본값 1이 사용됩니다.n은 0일 수 없습니다. 하나 이상의 예측을 만들지 않으면 함수에서 오류가 반환됩니다.
n-start, n-end
시계열 단계의 범위를 지정합니다.n-start는 0이 아닌 정수여야 합니다.
n-end는 n-start보다 큰 정수여야 합니다.
<source query>
예측을 수행하는 데 사용되는 외부 데이터를 정의합니다.REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
새 데이터를 처리하는 방법을 나타냅니다.REPLACE_MODEL_CASES는 모델의 데이터 요소가 새 데이터로 바뀌도록 지정합니다. 그러나 예측은 기존 마이닝 모델의 패턴을 기반으로 합니다.
EXTEND_MODEL_CASES는 새 데이터가 원래의 학습 데이터 집합에 추가되도록 지정합니다. 이후의 예측은 새 데이터가 모두 사용된 후에만 복합 데이터 집합에 대해 생성됩니다.
이러한 인수는 PREDICTION JOIN 문을 사용하여 새 데이터가 추가되는 경우에만 사용할 수 있습니다. PREDICTION JOIN 쿼리를 사용하고 인수를 지정하지 않을 경우 기본값은 EXTEND_MODEL_CASES입니다.
반환 형식
<table expression>입니다.
주의
Microsoft 시계열 알고리즘은 PREDICTION JOIN 문을 사용하여 새 데이터를 추가하는 경우 기록 예측을 지원하지 않습니다.
PREDICTION JOIN에서 예측 프로세스는 항상 원래 학습 계열이 끝난 직후의 시간 단계에서 시작됩니다. 이는 새 데이터를 추가하는 경우에도 마찬가지입니다. 따라서 n 매개 변수와 n-start 매개 변수 값은 0보다 큰 정수여야 합니다.
[!참고]
새 데이터의 길이는 예측의 시작 지점에 영향을 미치지 않습니다. 따라서 새 데이터를 추가하고 새 예측도 수행하려면 예측 시작 지점을 새 데이터의 길이보다 큰 값으로 설정하거나 예측 종료 지점을 새 데이터 길이만큼 늘려야 합니다.
예
다음 예에서는 기존 시계열 모델에 대해 예측을 수행하는 방법을 보여 줍니다.
첫 번째 예는 현재 모델을 기반으로 지정된 수만큼의 예측을 수행하는 방법을 보여 줍니다.
두 번째 예는 REPLACE_MODEL_CASES 매개 변수를 사용하여 지정 모델의 패턴을 새 데이터 집합에 적용하는 방법을 보여 줍니다.
세 번째 예는 EXTEND_MODEL_CASES 매개 변수를 사용하여 마이닝 모델을 새 데이터로 업데이트하는 방법을 보여 줍니다.
시계열 모델 작업에 대한 자세한 내용은 데이터 마이닝 자습서 2단원: 예측 시나리오 구축(중급 데이터 마이닝 자습서) 및 시계열 예측 DMX 자습서를 참조하십시오.
[!참고]
사용자 모델의 결과는 다를 수 있습니다. 아래 예의 결과는 결과 형식을 보여 주기 위한 것입니다.
예 1: 시간 조각의 수 예측
다음 예에서는 PredictTimeSeries 함수를 사용하여 다음 세 시간 단계에 대한 예측을 반환하고 결과를 Europe 및 Pacific 지역의 M200 계열로 제한합니다. 이 모델에서 예측 가능한 특성은 Quantity이므로 PredictTimeSeries 함수에 대한 첫 번째 인수로 [Quantity]를 사용해야 합니다.
SELECT FLATTENED
[Forecasting].[Model Region],
PredictTimeSeries([Forecasting].[Quantity],3)AS t
FROM
[Forecasting]
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 Pacific'
예상 결과:
Model Region |
t.$TIME |
t.Quantity |
---|---|---|
M200 Europe |
7/25/2008 12:00:00 AM |
121 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
M200 Pacific |
7/25/2008 12:00:00 AM |
46 |
M200 Pacific |
8/25/2008 12:00:00 AM |
44 |
M200 Pacific |
9/25/2008 12:00:00 AM |
42 |
이 예에서는 결과를 읽기 쉽도록 FLATTENED 키워드가 사용되었습니다. FLATTENED 키워드를 사용하지 않고 계층적 행 집합을 반환하면 이 쿼리에서 두 열을 반환합니다. 첫 번째 열에는 [ModelRegion]에 대한 값이 포함되고 두 번째 열에는 두 개의 열(예측되는 시간 조각을 보여 주는 $TIME 및 예측되는 값을 포함하는 Quantity)이 있는 중첩 테이블이 포함됩니다.
예 2: 새 데이터 추가 및 REPLACE_MODEL_CASES 사용
특정 지역에 대한 데이터가 잘못된 것을 발견하고 모델의 패턴을 사용하여 새 데이터와 일치하도록 예측을 조정하려 한다고 가정합니다. 다른 지역의 추세가 더 안정적이라는 것을 발견하고 가장 안정적인 모델을 여러 지역의 데이터에 적용하려고 할 수도 있습니다.
이러한 시나리오에서는 REPLACE_MODEL_CASES 매개 변수를 사용하고 기록 데이터로 사용할 새 데이터 집합을 지정할 수 있습니다. 이렇게 하면 프로젝션이 지정된 모델의 패턴을 기반으로 하지만 새 데이터 요소의 끝에서 부드럽게 이어집니다. 이 시나리오의 전체 연습은 집계 예측 모델 추가(중급 데이터 마이닝 자습서)를 참조하십시오.
다음 PREDICTION JOIN 쿼리에서는 데이터를 바꾸고 새 예측을 만드는 구문을 보여 줍니다. 데이터를 바꾸기 위해 이 예에서는 Amount 및 Quantity 열의 값을 검색하여 각 값에 2를 곱합니다.
SELECT [Forecasting].[Model Region],
PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES)
FROM
[Forecasting]
PREDICTION JOIN
OPENQUERY([Adventure Works DW2008R2],
'SELECT [ModelRegion],
([Quantity] * 2) as Quantity,
([Amount] * 2) as Amount,
[ReportingDate]
FROM [dbo].vTimeSeries
WHERE ModelRegion = N''M200 Pacific''
') AS t
ON
[Forecasting].[Model Region] = t.[ Model Region] AND
[Forecasting].[Reporting Date] = t.[ReportingDate] AND
[Forecasting].[Quantity] = t.[Quantity] AND
[Forecasting].[Amount] = t.[Amount]
다음 표에서는 예측 결과를 비교합니다.
원래 예측 |
업데이트된 예측 |
---|---|
M200 Pacific7/25/2008 12:00:00 AM46
M200 Pacific8/25/2008 12:00:00 AM44
M200 Pacific9/25/2008 12:00:00 AM42
|
M200 Pacific7/25/2008 12:00:00 AM91
M200 Pacific8/25/2008 12:00:00 AM89
M200 Pacific9/25/2008 12:00:00 AM84
|
예 3: 새 데이터 추가 및 EXTEND_MODEL_CASES 사용
예 3에서는 EXTEND_MODEL_CASES 옵션을 사용하여 새 데이터를 제공하는 작업을 보여 줍니다. 이 데이터는 기존 데이터 계열의 끝에 추가됩니다. 기존 데이터 요소를 바꾸는 대신 새 데이터가 모델에 추가됩니다.
다음 예에서는 NATURAL PREDICTION JOIN 뒤에 오는 SELECT 문에 새 데이터가 제공됩니다. 이 구문을 사용하여 새로운 여러 입력 행을 제공할 수 있지만 새로운 각 입력 행에는 고유한 타임스탬프가 있어야 합니다.
SELECT [Model Region],
PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES)
FROM
[Forecasting]
NATURAL PREDICTION JOIN
(SELECT
1 as [Reporting Date],
10 as [Quantity],
'M200 Europe' AS [Model Region]
UNION SELECT
2 as [Reporting Date],
15 as [Quantity],
'M200 Europe' AS [Model Region]
) AS T
WHERE ([Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 Pacific')
이 쿼리는 EXTEND_MODEL_CASES 옵션을 사용하므로 Analysis Services에서 예측을 위해 다음 동작을 수행합니다.
2개월에 상당하는 새 데이터를 모델에 추가하여 학습 사례의 전체 크기를 늘립니다.
이전 사례 데이터의 끝에서 예측을 시작합니다. 이에 따라 첫 두 예측은 모델에 방금 추가한 새로운 실제 판매 데이터를 나타냅니다.
새로 확장된 모델을 기반으로 나머지 세 개의 시간 조각에 대한 새 예측을 반환합니다.
다음 표에서는 예 2 쿼리의 결과를 보여 줍니다. M200 Europe에 대해 반환된 첫 두 값은 사용자가 제공한 새 값과 동일합니다. 이 동작은 의도적인 것으로, 새 데이터의 끝 이후부터 예측을 시작하려면 시작 및 종료 시간 단계를 지정해야 합니다. 이 작업을 수행하는 방법에 대한 예는 5단원: 시계열 모델 확장을 참조하십시오.
Pacific 지역에 대한 새 데이터도 제공하지 않았습니다. 따라서 Analysis Services는 5개의 시간 조각 모두에 대해 새 예측을 반환합니다.
Quantity |
EXTEND_MODEL_CASES |
---|---|
M200 Europe |
$TIMEQuantity
7/25/2008 0:0010
8/25/2008 0:0015
9/25/2008 0:0072
10/25/2008 0:0069
11/25/2008 0:0068
|
M200 Pacific |
$TIMEQuantity
7/25/2008 0:0046
8/25/2008 0:0044
9/25/2008 0:0042
10/25/2008 0:0042
11/25/2008 0:0038
|
예 4: 시계열 예측의 통계 반환
PredictTimeSeries 함수는 INCLUDE_STATISTICS를 매개 변수로 지원하지 않습니다. 그러나 다음 쿼리를 사용하면 시계열 쿼리에 대한 예측 통계를 반환할 수 있습니다. 이 방법은 중첩 테이블 열이 있는 모델에도 사용할 수 있습니다.
이 모델에서 예측 가능한 특성은 Quantity이므로 PredictTimeSeries 함수에 대한 첫 번째 인수로 [Quantity]를 사용해야 합니다. 모델에서 다른 예측 가능한 특성을 사용하는 경우 다른 열 이름으로 대체할 수 있습니다.
SELECT FLATTENED [Model Region],
(SELECT
$Time,
[Quantity] as [PREDICTION],
PredictVariance([Quantity]) AS [VARIANCE],
PredictStdev([Quantity]) AS [STDEV]
FROM
PredictTimeSeries([Quantity], 3) AS t
) AS t
FROM Forecasting
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 North America'
예 결과:
Model Region |
t.$TIME |
t.PREDICTION |
t.VARIANCE |
t.STDEV |
---|---|---|---|---|
M200 Europe |
7/25/2008 12:00:00 AM |
121 |
11.6050581415597 |
3.40661975300439 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
10.678201866621 |
3.26775180615374 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
9.86897842568614 |
3.14149302493037 |
M200 North America |
7/25/2008 12:00:00 AM |
163 |
1.20434529288162 |
1.20434529288162 |
M200 North America |
8/25/2008 12:00:00 AM |
178 |
1.65031343900634 |
1.65031343900634 |
M200 North America |
9/25/2008 12:00:00 AM |
156 |
1.68969399185442 |
1.68969399185442 |
[!참고]
이 예에서는 결과를 보다 쉽게 표 형식으로 나타낼 수 있도록 FLATTENED 키워드가 사용되었지만, 공급자에서 계층적 행 집합을 지원하는 경우 FLATTENED 키워드를 생략할 수 있습니다. FLATTENED 키워드를 생략하면 쿼리에서 두 개의 열이 반환됩니다. 첫 번째 열에는 [Model Region] 데이터 계열을 식별하는 값이 포함되고 두 번째 열에는 통계 중첩 테이블이 포함됩니다.