등각 예측 및 NeuralProphet을 사용한 확률적 예측.

Jan 21 2023
이전 기사에서 우리는 NeuralProphet을 살펴보고 Facebook Prophet(TLDR; yes)에 비해 성능 향상을 제공하는지 여부와 일반적으로 좋은 포인트 예측 성능(TLDR; yes)을 제공하는지 여부를 평가했습니다. NeuralProphet은 이전 Facebook Prophet의 주요 문제인 Facebook Prophet이 자동 회귀(AR) 용어를 사용하여 로컬 종속성을 모델링할 수 없다는 주요 문제를 해결했기 때문에 포인트 예측을 위한 훨씬 더 나은 모델입니다.

이전 기사에서 우리는 NeuralProphet을 살펴보고 Facebook Prophet(TLDR; yes)에 비해 성능 향상을 제공하는지 여부와 일반적으로 좋은 포인트 예측 성능(TLDR; yes)을 제공하는지 여부를 평가했습니다.

NeuralProphet은 이전 Facebook Prophet의 주요 문제인 Facebook Prophet이 자동 회귀(AR) 용어를 사용하여 로컬 종속성을 모델링할 수 없다는 주요 문제를 해결했기 때문에 포인트 예측을 위한 훨씬 더 나은 모델입니다. NeuralProphet은 가까운 미래를 예측하는 데 필수적인 로컬 패턴을 모델링하는 기능을 효과적으로 활용합니다.

NeuralProphet 핵심 개발 팀은 최근 흥미로운 패키지 업그레이드를 발표했습니다. NeuralProphet은 이제 등각 예측을 사용한 확률적 시계열 예측을 포함하여 확률적 예측의 최첨단 혁신을 포함합니다 .

NeuralPropher 핵심 개발 팀은 이 성명을 발표했습니다.

"우리의 [NeuralProphet 핵심 개발자] 목표는 NeuralProphet을 빠른 실험 및 프로토타이핑 도구로 사용하여 모든 도메인의 시계열 공간에 대한 등각 예측의 R&D를 가속화하는 것입니다. 현재 등각 예측 구현은 등각 예측으로의 여정의 시작일 뿐입니다. 예측. 등각 예측 커뮤니티의 친구를 초대하여 시계열 설정에서 사용자가 최신 등각 예측 기술에 더 쉽게 접근할 수 있도록 협력하고 공동 개발합니다.”

Conformal Prediction에 익숙하지 않은 경우 Awesome Conformal Prediction은 매우 인기 있고 빠르게 성장하는 이 분야를 매우 빠르게 시작하는 데 도움이 될 수 있습니다. Conformal Prediction은 불확실성 추정을 허용하고 모든 통계, 기계 또는 심층 학습 모델을 확률적 예측 모델로 변환하는 XXIst 세기를 위한 최고의 불확실성 정량화 프레임워크입니다.

등각 예측은 원래 IID 데이터용으로 명시적으로 설계되었지만 등각 예측의 최근 연구 및 혁신은 이를 시계열 및 예측으로 확장했습니다. 시계열 및 예측의 역사에서 처음으로 등각 예측은 선택한 신뢰 수준에서 지정된 예측 범위로 예측 간격을 생성할 수 있는 강력한 확률적 예측을 잠금 해제했습니다.

등각 예측이 시계열로 확장되기 전에는 대부분의 예측 모델이 올바른 예측 간격을 생성할 수 없었습니다. 대부분의 기존 예측 모델은 예측 구간을 생성할 수 없거나 지정된 신뢰 수준과 일치하는 필수 적용 범위 측면에서 잘못 지정된 예측 구간을 생성할 수 없습니다.

연구에 따르면 많은 예측 모델(모든 종류의 통계, 머신 및 딥 러닝 모델 포함)이 불확실성을 적절하게 추정하지 못하는 것으로 나타났습니다 .

Darden Business School Yael Grushka-Cockayne 교수의 논문 " The M4 Forecasting Competition Prediction Intervals" 에서 연구원들은 M4 예측 경쟁 제출물이 일반적으로 지정된 확률로 테스트 세트를 포함하지 않는 예측 구간으로 불확실성을 정확하게 추정하지 못했다는 것을 보여주었습니다. . 예측 모델에 의한 정확한 적용 범위의 부족은 재고 부족/과잉과 같은 잘못된 의사 결정으로 이어져 판매 누락, 고객 충성도 손상, 느리게 움직이고 쓸모 없는 재고로 인한 값비싼 상각으로 이어집니다.

Conformal Prediction은 이 문제를 해결하며, 이전 기사 중 하나인 " MAPIE를 사용한 Conformal Prediction forecasting "에서 EnbPI('앙상블 배치 예측 간격')라는 모델을 사용하여 Conformal Prediciton이 어떻게 신뢰할 수 있는 예측 간격을 생성할 수 있는지 보여주었습니다. MAPIE에 의해 구현된 친근한 Scikit-learn 호환 기능을 사용한 확률 예측.

NeuralProphet 핵심 개발 팀은 또한 최근 NeuralProphet에 통합된 등각 예측을 구현하기 위해 노력하고 있습니다. NeuralProphet의 최근 릴리스에는 가장 인기 있는 모델 중 하나인 CQR(Conformalized Quantile Regression) 구현을 포함하여 등각 예측을 사용한 확률적 예측을 위한 몇 가지 옵션이 포함되어 있습니다. CQR은 예측의 로컬 불확실성을 설명하기 위해 동적으로 예측 간격을 조정합니다.

등각 분위수 회귀(CQR)

CQR은 매번 작동하며 등각 예측의 모델을 사용하여 부여되는 내장된 수학적 유효성 보장으로 인해 기본적으로 작동합니다. CQR(또는 일반적으로 다른 모든 등각 예측 방법)이 95% 예측 간격을 생성할 때 데이터 분포, 샘플 크기에 관계없이 기본적으로 95%임을 확신할 수 있습니다(다른 방법에서 If 및 But 없음). 통계, 기계 학습 또는 심층 학습 모델인지 여부에 관계없이 기본 회귀자입니다.

이 기사에서는 필자의 기사인 'Benchmarking NeuralProphet'의 내용을 따릅니다 . 2부 — NeuralProphet의 선형 및 비선형(AR-Net) 기능을 모두 사용하여 전기 시계열에 대한 포인트 예측을 생성한 전기 데이터 세트 탐색' .

테스트 데이터에 대한 Point NeuralProphet 예측

포인트 예측을 생성하도록 NeuralProphet을 훈련하는 대신, 이제 대신 분위수를 예측하는 모델을 생성하도록 훈련합니다.

# specify quantiles 
quantile_lo, quantile_hi = 0.05, 0.95
quantiles = [quantile_lo, quantile_hi]
n_lags = 7

m_quantile_regression = NeuralProphet(
    growth='off',
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=n_lags,
    learning_rate=0.01,
    quantiles = quantiles
)

%%time
random_seed = 0

# Concatenate train_df and val_df as full training set
set_random_seed(random_seed)
metrics_quantile = m_quantile_regression.fit(pd.concat([train_df, val_df]),
   freq="D")

전기 데이터 세트에 대한 분위수 회귀 예측

아직 끝나지 않았나요? 정답은 아닙니다. 기존 분위수 회귀는 보정된 예측 간격을 생성하지 않는다는 점을 기억하세요. 위시리스트로 5% 및 95% 분위수를 지정했다고 해서 테스트 포인트의 90%가 이 예측 간격 내에 있다는 의미는 아닙니다.

이것이 등각 예측의 마법이 들어오는 곳입니다. 우리는 지금까지 NeuralProphet을 훈련하는 데 사용한 고전적인 분위수 회귀를 포함하여 모든 모델에서 생성된 예측 간격을 수정할 수 있습니다.

분위수 회귀를 사용하는 NeuralProphet

이제 마지막 단계인 확률적 예측 모델을 "적합화"하는 작업을 완료했습니다.

우리가 해야 할 일은 전화하는 것뿐입니다. 우리는 Quantile 회귀 모델에서 conformal_predict() 메서드를 사용할 때 별도로 설정한 보정 세트를 사용합니다. 이 단계의 목표는 선택한 90% 신뢰 수준에 따라 선언된 범위를 제공할 수 있도록 Quantile 회귀에 의해 생성된 예측 구간을 수정하는 것입니다.

method = "naive"
alpha = 0.1
plotting_backend = "matplotlib"  # "plotly", None

naive_forecast_conformal_test_df = m_quantile_regression.conformal_predict
  (test_df,calibration_df=cal_df,alpha=alpha,method=method,plotting_backend=plotting_backend,)

신뢰 수준에 따른 예측 구간의 반폭을 보여주는 도표

이제 '순진한' 방법을 사용하여 생성된 예측을 플롯할 수 있습니다(순진한 방법은 보정 세트에서 잔차를 계산한 다음 신뢰 수준을 사용하여 분위수 회귀에 의해 생성된 예측 간격을 수정하기 위해 적절한 분위수를 선택합니다.

순진한 방법을 사용하여 분위수 회귀 간격 수정

보시다시피 분위수 회귀에 의해 생성된 원래 예측 간격은 지나치게 낙관적이었고 순진한 등각 예측 방법이 이를 수정했습니다.

그런 다음 더 강력한 CQR 방법을 사용합니다.


method = "cqr"alpha = 0.1plotting_backend = "matplotlib"  # "plotly", None

cqr_forecast_conformal_test_df = m_quantile_regression.conformal_predict(
    test_df,
    calibration_df=cal_df,
    alpha=alpha,
    method=method,
    plotting_backend=plotting_backend,
)

CRQ 방법을 사용한 등각 예측

참조:

  1. “벤치마킹 신경 예언자. 1부 — 신경 예언자 vs Facebook 예언자.
  2. “벤치마킹 신경 예언자. 파트 II — 전기 데이터 세트 탐색
  3. "M4 예측 경쟁 예측 구간"
  4. 보다 지능적인 방식으로 분위수를 예측하는 방법(또는 '바이바이 분위수 회귀, 안녕 등각 분위수 회귀) .
  5. https://pypi.org/project/neuralprophet/
  6. Energy Hospital Load 튜토리얼을 사용한 등각 예측