forecasts
개요
주어진 데이터의 미래 시점 데이터를 예측합니다.
타입
설명
input dataframe의 데이터를 선택한 알고리즘을 이용하여 미래 시점 데이터를 예측합니다. 이 때 예측하는 데이터의 기간은 변경 가능합니다.
예를 들어 데이터가 다음과 같이 존재합니다.
DATETIME_10M |
CNT |
---|---|
2018-11-04 05:20:00 |
300 |
2018-11-04 05:30:00 |
301 |
2018-11-04 05:40:00 |
302 |
… |
… |
2018-11-04 11:30:00 |
900 |
2018-11-04 11:40:00 |
901 |
2018-11-04 11:50:00 |
902 |
forecasts 명령어를 수행하면 기존 dataframe 에 예측 결과를 합쳐서 보여줍니다.
DATETIME_10M |
CNT |
Forecasts |
---|---|---|
2018-11-04 05:20:00 |
300 |
false |
2018-11-04 05:30:00 |
301 |
false |
2018-11-04 05:40:00 |
302 |
false |
… |
… |
… |
2018-11-05 05:20:00 |
1000 |
true |
2018-11-05 05:30:00 |
1001 |
true |
2018-11-05 05:40:00 |
1002 |
True |
seasonal 알고리즘의 경우 예측 신뢰구간( lower / upper ) 도 함께 반환됩니다.
DATETIME_10M |
CNT |
lower CNT |
upper CNT |
Forecasts |
---|---|---|---|---|
2018-11-04 05:20:00 |
300 |
0.0 |
0.0 |
false |
2018-11-04 05:30:00 |
301 |
0.0 |
0.0 |
false |
2018-11-04 05:40:00 |
302 |
0.0 |
0.0 |
false |
… |
… |
… |
… |
… |
2018-11-05 05:40:00 |
1000.02 |
989.11 |
1021.22 |
true |
Parameters
Alg = linear
... | forecasts index target [alg=linear] [f_coeff=0] [index_type=timestamp|date]
linear regression 으로 예측을 수행 합니다. 디폴트 알고리즘입니다.
이름 |
설명 |
필수/옵션 |
---|---|---|
index |
시계열 데이터를 가진 필드 |
필수 |
target |
예측하고자 하는 target 필드 |
필수 |
alg |
시계열 데이터 예측에 사용되는 알고리즘. default 로 linear 알고리즘 |
옵션 |
f_coeff |
예측값이 계산되어 결과로 나오는 기간을 구하는 데 사용되는 계수(1 이상의 정수값). default: 입력 데이터의 기간의 1/2 를 예측합니다. |
옵션 |
index_type |
index 로 지정되는 시계열 데이터가 시간데이터가 포함된 것인지(timestamp), day 단위 데이터인지 (date) 구분을 하여 입력, default = timestamp |
옵션 |
Alg = seasonal
... | forecasts index target alg=seasonal [f_coeff=10] [index_type=timestamp|date]
계절성과 시간적 변화에 따라 예측을 수행 합니다. 내부적으로 ARIMA 알고리즘이 적용되며, AIC 를 최소화 하는 order 를 구해서 모델링합니다.
이름 |
설명 |
필수/옵션 |
---|---|---|
index |
시계열 데이터의 time 필드 |
필수 |
target |
예측하고자 하는 target 필드 |
필수 |
alg |
시계열 데이터 예측에 사용되는 알고리즘. default 로 linear 알고리즘 |
옵션 |
f_coeff |
예측값이 계산되어 결과로 나오는 기간을 구하는 데 사용되는 계수(1 이상의 정수값). default: 입력 데이터의 기간의 1/2 를 예측합니다. |
옵션 |
index_type |
index 로 지정되는 시계열 데이터가 시간데이터가 포함된 것인지(timestamp), day 단위 데이터인지 (date) 구분을 하여 입력, default = timestamp |
옵션 |
검색어 사용예시
## alg=linear ##
# 디폴트옵션 : forecasts INDEX TARGET alg=linear f_coeff=0 index_type=timestamp
... | forecasts DATETIME CNT
# forecasts INDEX TARGET alg=linear f_coeff=3 index_type=timestamp
... | forecasts DATETIME CNT f_coeff=3 index_type=timestamp
# forecasts INDEX TARGET alg=linear f_coeff=3 index_type=date
... | forecasts YYYYMMDD CNT f_coeff=7 index_type=date
## alg=seasonal ##
# forecasts INDEX TARGET alg=seasonal f_coeff=0 index_type=timestamp
... | forecasts DATETIME CNT alg=seasonal
# forecasts INDEX TARGET alg=seasonal f_coeff=3 index_type=timestamp
... | forecasts DATETIME CNT alg=seasonal f_coeff=3 index_type=timestamp
# forecasts INDEX TARGET alg=seasonal f_coeff=3 index_type=date
... | forecasts YYYYMMDD CNT alg=seasonal f_coeff=7 index_type=date
Example
예제 데이터
DATETIME |
HOST |
CNT |
---|---|---|
20200910144000 |
gcs1 |
917 |
20200910152000 |
gcs1 |
909 |
20200910121000 |
gcs1 |
923 |
20200910142000 |
gcs1 |
920 |
20200910140000 |
gcs1 |
944 |
20200910124000 |
gcs1 |
920 |
20200910141000 |
gcs1 |
917 |
20200910155000 |
gcs1 |
909 |
20200910125000 |
gcs1 |
920 |
20200910132000 |
gcs1 |
915 |
20200910154000 |
gcs1 |
925 |
20200910122000 |
gcs1 |
917 |
20200910120000 |
gcs1 |
813 |
20200910145000 |
gcs1 |
933 |
20200910143000 |
gcs1 |
912 |
20200910153000 |
gcs1 |
923 |
20200910150000 |
gcs1 |
942 |
20200910131000 |
gcs1 |
917 |
20200910130000 |
gcs1 |
936 |
20200910123000 |
gcs1 |
909 |
20200910134000 |
gcs1 |
917 |
20200910151000 |
gcs1 |
917 |
20200910133000 |
gcs1 |
917 |
20200910135000 |
gcs1 |
923 |
linear(선형회귀) 알고리즘을 이용하여 데이터 예측
* | forecasts DATETIME CNT alg=linear
DATETIME |
CNT |
forecasts |
---|---|---|
2020-09-10 12:00:00 |
813.0 |
False |
2020-09-10 12:10:00 |
923.0 |
False |
2020-09-10 12:20:00 |
917.0 |
False |
2020-09-10 12:30:00 |
909.0 |
False |
2020-09-10 12:40:00 |
920.0 |
False |
2020-09-10 12:50:00 |
920.0 |
False |
2020-09-10 13:00:00 |
936.0 |
False |
2020-09-10 13:10:00 |
917.0 |
False |
2020-09-10 13:20:00 |
915.0 |
False |
2020-09-10 13:30:00 |
917.0 |
False |
2020-09-10 13:40:00 |
917.0 |
False |
2020-09-10 13:50:00 |
923.0 |
False |
2020-09-10 14:00:00 |
944.0 |
False |
2020-09-10 14:10:00 |
917.0 |
False |
2020-09-10 14:20:00 |
920.0 |
False |
2020-09-10 14:30:00 |
912.0 |
False |
2020-09-10 14:40:00 |
917.0 |
False |
2020-09-10 14:50:00 |
933.0 |
False |
2020-09-10 15:00:00 |
942.0 |
False |
2020-09-10 15:10:00 |
917.0 |
False |
2020-09-10 15:20:00 |
909.0 |
False |
2020-09-10 15:30:00 |
923.0 |
False |
2020-09-10 15:40:00 |
925.0 |
False |
2020-09-10 15:50:00 |
909.0 |
False |
2020-09-10 16:00:00 |
930.46 |
True |
2020-09-10 16:10:00 |
931.58 |
True |
2020-09-10 16:20:00 |
932.7 |
True |
2020-09-10 16:30:00 |
933.82 |
True |
2020-09-10 16:40:00 |
934.94 |
True |
2020-09-10 16:50:00 |
936.06 |
True |
2020-09-10 17:00:00 |
937.18 |
True |
2020-09-10 17:10:00 |
938.3 |
True |
2020-09-10 17:20:00 |
939.42 |
True |
2020-09-10 17:30:00 |
940.54 |
True |
2020-09-10 17:40:00 |
941.66 |
True |
2020-09-10 17:50:00 |
942.78 |
True |
seasonal(ARIMA) 알고리즘을 이용하여 데이터 예측
* | forecasts DATETIME CNT alg=seasonal
DATETIME |
CNT |
lower CNT |
upper CNT |
forecasts |
---|---|---|---|---|
2020-09-10 12:00:00 |
813.0 |
0.0 |
0.0 |
False |
2020-09-10 12:10:00 |
923.0 |
0.0 |
0.0 |
False |
2020-09-10 12:20:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 12:30:00 |
909.0 |
0.0 |
0.0 |
False |
2020-09-10 12:40:00 |
920.0 |
0.0 |
0.0 |
False |
2020-09-10 12:50:00 |
920.0 |
0.0 |
0.0 |
False |
2020-09-10 13:00:00 |
936.0 |
0.0 |
0.0 |
False |
2020-09-10 13:10:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 13:20:00 |
915.0 |
0.0 |
0.0 |
False |
2020-09-10 13:30:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 13:40:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 13:50:00 |
923.0 |
0.0 |
0.0 |
False |
2020-09-10 14:00:00 |
944.0 |
0.0 |
0.0 |
False |
2020-09-10 14:10:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 14:20:00 |
920.0 |
0.0 |
0.0 |
False |
2020-09-10 14:30:00 |
912.0 |
0.0 |
0.0 |
False |
2020-09-10 14:40:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 14:50:00 |
933.0 |
0.0 |
0.0 |
False |
2020-09-10 15:00:00 |
942.0 |
0.0 |
0.0 |
False |
2020-09-10 15:10:00 |
917.0 |
0.0 |
0.0 |
False |
2020-09-10 15:20:00 |
909.0 |
0.0 |
0.0 |
False |
2020-09-10 15:30:00 |
923.0 |
0.0 |
0.0 |
False |
2020-09-10 15:40:00 |
925.0 |
0.0 |
0.0 |
False |
2020-09-10 15:50:00 |
909.0 |
0.0 |
0.0 |
False |
2020-09-10 16:00:00 |
930.15 |
885.73 |
974.56 |
True |
2020-09-10 16:10:00 |
932.95 |
888.39 |
977.51 |
True |
2020-09-10 16:20:00 |
934.27 |
889.71 |
978.83 |
True |
2020-09-10 16:30:00 |
935.47 |
890.91 |
980.03 |
True |
2020-09-10 16:40:00 |
936.66 |
892.1 |
981.23 |
True |
2020-09-10 16:50:00 |
937.86 |
893.29 |
982.42 |
True |
2020-09-10 17:00:00 |
939.05 |
894.48 |
983.61 |
True |
2020-09-10 17:10:00 |
940.24 |
895.67 |
984.8 |
True |
2020-09-10 17:20:00 |
941.43 |
896.87 |
985.99 |
True |
2020-09-10 17:30:00 |
942.62 |
898.06 |
987.18 |
True |
2020-09-10 17:40:00 |
943.81 |
899.25 |
988.37 |
True |
2020-09-10 17:50:00 |
945.0 |
900.44 |
989.56 |
True |
현재 시계열 컬럼의 시간 간격의 정도가 고려되지 않기 때문에, 소스데이터를 일정한 시간간격으로 그룹핑하여 전처리 한다.