series_decompose()
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
계열에 분해 변환을 적용합니다.
계열(동적 숫자 배열)이 포함된 식을 입력으로 사용하고 계절, 추세 및 잔차 구성 요소로 분해합니다.
구문
series_decompose(
계열 ,
[ 계절성,
추세,
Test_points ,
Seasonality_threshold ])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
Series | 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에서 빼서 비계절 계열 생성
- 비계절 계열에서 추세 구성 요소 추출
- 기준 = 계절별 + 추세 만들기
- 잔수 = 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
관련 콘텐츠
- 변칙을 사용하여 결과 시각화