series_decompose()
계열에 분해 변환을 적용합니다.
계열(동적 숫자 배열)이 포함된 식을 입력으로 사용하고 계절, 추세 및 잔류 구성 요소로 분해합니다.
Syntax
series_decompose(
시리즈,
[ 계절성,
,
추세Test_points,
Seasonality_threshold ])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | 형식 | 필수 | Description |
---|---|---|---|
계열 | dynamic |
✔️ | 숫자 값의 배열로, 일반적으로 메이크 계열 또는 make_list 연산자의 결과 출력입니다. |
계절성 | int |
계절 분석을 제어합니다. 가능한 값은 다음과 같습니다. - -1 : series_periods_detect 사용하여 계절성을 자동 검색합니다. 이것은 기본값입니다.- 기간: 예상되는 기간(bin 수)을 지정하는 양의 정수입니다. 예를 들어 계열이 bin에 있는 1 - h 경우 주별 기간은 168개의 bin입니다.- 0 : 계절성이 없으므로 이 구성 요소 추출을 건너뜁니다. |
|
추세 | string |
추세 분석을 제어합니다. 가능한 값은 다음과 같습니다. - avg : 추세 구성 요소를 로 average(x) 정의합니다. 이것이 기본값입니다.- linefit : 선형 회귀를 사용하여 추세 구성 요소를 추출합니다.- none : 추세가 없으므로 이 구성 요소 추출을 건너뜁니다. |
|
Test_points | int |
학습 또는 회귀 프로세스에서 제외할 계열의 끝에 있는 점 수를 지정하는 양의 정수입니다. 이 매개 변수는 예측 목적으로 설정해야 합니다. 기본값은 0입니다. | |
Seasonality_threshold | real |
계절성이 자동 검색으로 설정된 계절성 점수에 대한 임계값입니다. 기본 점수 임계값은 0.6입니다. 자세한 내용은 series_periods_detect 참조하세요. |
반환
함수는 다음 각 계열을 반환합니다.
baseline
: 계열의 예측 값(계절 및 추세 구성 요소의 합계, 아래 참조)입니다.seasonal
: 계절 구성 요소의 시리즈:- 마침표가 검색되지 않거나 명시적으로 0으로 설정된 경우 상수 0입니다.
- 감지되거나 양수 정수로 설정된 경우: 같은 단계에서 계열 점의 중앙값
trend
: 추세 구성 요소의 시리즈입니다.residual
: 잔차 구성 요소의 시리즈(즉, x - 기준)입니다.
참고
- 구성 요소 실행 순서:
- 계절 계열 추출
- x에서 빼서 비계절 계열 생성
- deseasonal 계열에서 추세 구성 요소 추출
- 기준 = 계절별 + 추세 만들기
- 잔류 = x - 기준 만들기
- 계절성 및 또는 추세를 사용하도록 설정해야 합니다. 그렇지 않으면 함수는 중복되며 기준 = 0 및 잔류 = x만 반환합니다.
계열 분해에 대한 자세한 정보
이 메서드는 일반적으로 주기적 및/또는 추세 동작을 매니페스트할 것으로 예상되는 메트릭의 시계열에 적용됩니다. 메서드를 사용하여 향후 메트릭 값을 예측하거나 비정상적인 값을 검색할 수 있습니다. 이 회귀 프로세스의 암시적 가정은 계절 및 추세 동작과는 별도로 시계열이 확률적이고 임의로 분산된다는 것입니다. 잔차 부분을 무시하면서 계절 및 추세 구성 요소에서 향후 메트릭 값을 예측합니다. 잔여 부분만 이상값 검색을 기반으로 비정상적인 값을 검색합니다. 자세한 내용은 시계열 분해 챕터에서 확인할 수 있습니다.
예제
주간 계절성
다음 예제에서는 주간 계절성과 추세가 없는 계열을 생성한 다음, 몇 가지 이상값을 추가합니다. series_decompose
는 계절성을 찾아 자동으로 검색하고 계절 구성 요소와 거의 동일한 기준을 생성합니다. 추가한 이상값은 잔차 구성 요소에서 명확하게 볼 수 있습니다.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 10.0, 15.0) - (((t%24)/10)*((t%24)/10)) // generate a series with weekly seasonality
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y)
| render timechart
추세가 있는 주간 계절성
이 예제에서는 이전 예제의 계열에 추세를 추가합니다. 먼저 기본 매개 변수를 사용하여 를 실행 series_decompose
합니다. 추세 avg
기본값은 평균만 사용하고 추세를 계산하지 않습니다. 생성된 기준은 추세를 포함하지 않습니다. 잔류의 추세를 관찰할 때 이 예제가 이전 예제보다 덜 정확하다는 것이 분명해집니다.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y)
| render timechart
다음으로, 동일한 예제를 다시 실행합니다. 계열에서 추세가 예상되므로 추세 매개 변수에 를 지정 linefit
합니다. 긍정적인 추세가 감지되고 기준선이 입력 계열에 훨씬 더 가깝다는 것을 알 수 있습니다. 잔류는 0에 가깝고 이상값만 눈에 띄습니다. 차트에서 계열의 모든 구성 요소를 볼 수 있습니다.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y, -1, 'linefit')
| render timechart
관련 콘텐츠
- 변칙을 사용하여 결과 시각화
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기