Nixtla
Tweet
Slack
<div align="center">
<img src="https://raw.githubusercontent.com/Nixtla/neuralforecast/main/nbs/imgs_indx/logo_new.png" />
<h1 align="center">Neural 🧠 Forecast</h1>
<h3 align="center">사용자 친화적인 최신 신경망 예측 모델</h3>
pytest
Python
PyPi
conda-nixtla
License
docs
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
All Contributors
<!-- ALL-CONTRIBUTORS-BADGE:END -->
NeuralForecast는 성능, 사용 용이성 및 견고성에 중점을 둔 대규모 신경망 예측 모델 컬렉션을 제공합니다. 이 모델들은 MLP, LSTM, GRU, RNN, TCN, TimesNet, BiTCN, DeepAR, NBEATS, NBEATSx, NHITS, TiDE, DeepNPTS, TSMixer, TSMixerx, MLPMultivariate, DLinear, NLinear, TFT, Informer, AutoFormer, FedFormer, PatchTST, iTransformer, StemGNN, 그리고 TimeLLM과 같은 고전적인 네트워크부터 최신 트랜스포머까지 다양합니다.
</div
설치
다음 명령어로 NeuralForecast를 설치할 수 있습니다:
pip install neuralforecast
또는
conda install -c conda-forge neuralforecast
자세한 내용은 설치 가이드를 참조하십시오.
빠른 시작
최소 예제
from neuralforecast import NeuralForecast
from neuralforecast.models import NBEATS
from neuralforecast.utils import AirPassengersDF
...
이 빠른 가이드로 시작해 보세요.
왜 필요한가요?
신경망 예측(Neural forecasting) 방법론이 예측 파이프라인의 정확도와 효율성을 개선할 수 있다는 공통된 믿음이 있습니다.
하지만 현재 사용 가능한 구현체나 발표된 연구들은 신경망의 잠재력을 아직 완전히 실현하지 못했습니다. 이들은 사용하기 어렵고, 계산 비용이 많이 들면서 통계적 방법론을 능가하는 성능 향상을 지속적으로 보여주지 못하고 있습니다. 이러한 이유로 저희는 사용 편의성에 중점을 두고 검증된 정확하고 효율적인 모델에 초점을 맞춘 라이브러리인 NeuralForecast를 만들었습니다.
주요 기능 (Features)
- 30가지 이상의 최신(state-of-the-art) 모델을 빠르고 정확하게 구현했습니다. 전체 컬렉션은 여기에서 확인하세요.
- 외생 변수(exogenous variables) 및 정적 공변량(static covariates) 지원.
- 추세(trend), 계절성(seasonality), 외생 성분(exogenous components)에 대한 해석 가능성 방법론 제공.
- 분위수 손실(quantile losses)과 매개변수 분포(parametric distributions)를 위한 어댑터를 사용한 확률적 예측(Probabilistic Forecasting).
- 스케일 의존적, 비율 및 스케일 독립적 오류와 매개변수 우도(parametric likelihoods)를 이용한 학습 및 평가 손실.
- 분산 자동 하이퍼파라미터 튜닝을 통한 자동 모델 선택(Automatic Model Selection).
- 익숙한 sklearn 문법:
.fit과 .predict.
주요 특징 (Highlights)
- AAAI 2023에서 발표된 공식
NHITS 구현체입니다. 논문 및 실험 결과를 참조하세요.
- 국제 예측 저널(International Journal of Forecasting)에 발표된 공식
NBEATSx 구현체입니다. 논문을 참조하세요.
StatsForecast, MLForecast, 그리고 HierarchicalForecast 인터페이스와 통합되어 NeuralForecast().fit(Y_df).predict()를 통해 입력 및 출력을 처리합니다.
- 시각화 및 데이터 조작에 효율적인 방법을 위해
utilsforecast 및 coreforecast와 내장 통합 기능을 제공합니다.
- 자동 하이퍼파라미터 최적화를 위해
Ray 및 Optuna와 통합됩니다.
- 전이 학습(Transfer learning)을 사용하여 기록(history)이 거의 없거나 전혀 없는 상태에서도 예측할 수 있습니다. 실험 결과는 여기를 확인하세요.
무엇인가 빠진 것이 있나요? 이슈를 열거나 Slack로 문의해 주세요.
예시 및 가이드
문서 페이지에 모든 예제와 튜토리얼이 포함되어 있습니다.
📈 자동 하이퍼파라미터 최적화: Ray 또는 Optuna에서 Auto 모델을 사용한 쉽고 확장 가능한 자동 하이퍼파라미터 최적화.
🌡️ 외생 변수(Exogenous Regressors): 날씨나 가격과 같은 정적 또는 시간적 외생 공변량(exogenous covariates)을 통합하는 방법.
🔌 트랜스포머 모델(Transformer Models): 수많은 최첨단 트랜스포머 모델로 예측하는 방법을 배우세요.
👑 계층적 예측 (Hierarchical Forecasting): 관측치가 거의 없는 시계열을 예측합니다.
👩🔬 사용자 모델 추가하기 (Add Your Own Model): 라이브러리에 새로운 모델을 추가하는 방법을 알아봅니다.
모델 저장 및 로드하기
버전 3.3.0부터는 저장된 디렉터리가 safetensors 가중치와 JSON 메타데이터를 포함하며, 이 안에 포함된 코드를 실행하지 않고도 로드됩니다. 이전 버전에서는 pickle을 사용했는데, 이는 아티팩트에서 임의의 코드를 로드할 때 실행했기 때문에 레거시 형식은 이제 선택적(opt-in)입니다:
nf.save('./checkpoints/')
nf2 = NeuralForecast.load('./checkpoints/')
만약 이전 버전의 아티팩트나 코드가 있다면 변경된 사항은 다음과 같습니다:
- 오래된 디렉터리는 동의 또는 변환이 필요합니다.
allow_pickle=True를 전달하여 해당 디렉터리를 제자리에 읽을 수 있지만, 이는 포함된 코드를 실행하게 합니다. 또는 python -m neuralforecast.migrate ./old_checkpoints/로 한 번 변환해야 합니다. save_dataset=True로 저장된 디렉터리는 반드시 변환해야 합니다. 왜냐하면 해당 데이터셋에는 안전한 리더가 없기 때문입니다.
- 원격 경로는 선택적(opt-in)입니다. 누가 그 위치에 쓸 수 있느냐에 따라 로드하는 기계에서 무엇이 실행될지 결정할 수 있기 때문에
NeuralForecast.load('s3://bucket/models/', trust_remote=True)를 사용해야 합니다.
- 사용자 정의 손실 함수(Custom losses), 최적화 도구(optimizers) 및 스케줄러(schedulers)는 로드하는 과정과 저장하는 과정 모두에서
register_loss, register_optimizer 또는 register_lr_scheduler를 사용하여 등록해야 합니다.
TimeLLM은 더 이상 저장하거나 로드할 수 없습니다. 이는 구성될 때 from_pretrained를 통해 llm 인수를 해결하기 때문에, 아티팩트가 해당 가져오기(fetch)를 지시할 수 있습니다. 따라서 학습 및 예측을 같은 프로세스 내에서 수행해야 합니다.
저장 및 로드 가이드에서 이 내용을 자세히 다루고 있습니다.
모델
전체 컬렉션은 여기에서 확인하세요.
모델이 누락되었나요? 이슈를 열거나 Slack로 문의해 주세요.
기여 방법 (How to contribute)
프로젝트에 기여하고 싶다면, 기여 가이드라인을 참고하세요.
참고 문헌 (References)
본 작업은 여기에 제시된 신경망 예측 방법(neural forecasting methods)에 대한 이전 기여자들과 다른 학자들의 훌륭한 연구에 큰 영향을 받았습니다. 우리는 Boris Oreshkin, Slawek Smyl, Bryan Lim, 그리고 David Salinas의 연구를 강조하고 싶습니다. 신경망 예측 방법론에 대한 포괄적인 조사(survey)는 Benidis et al.을 참고하세요.
🙏 인용 방법 (How to cite)
이 Python 구현체를 사용하고 즐거움을 느끼거나 이점을 얻었다면, 해당 저장소에 대한 인용(citation)은 큰 도움이 될 것입니다.
@misc{olivares2022library_neuralforecast,
author={Kin G. Olivares and
Cristian Challú and
...
기여자들 ✨