unit8co/darts
A python library for user-friendly forecasting and anomaly detection on time series.
Darts – Python 시계열 예측 및 이상 감지
개요 – Darts는 시계열 데이터를 쉽게 다룰 수 있게 해주는 오픈소스 Python 라이브러리입니다. 고전적인 통계 기법(ARIMA, 지수 평활법)부터 최신 딥러닝 아키텍처(N-BEATS, TCN, Transformer 기반 모델)까지 다양한 모델을 위한 통합된 scikit-learn 스타일 API(fit, predict)를 제공합니다. 또한 이상 감지, 백테스팅, 확률적 예측, 데이터 전처리 도구도 함께 제공합니다.
중요성 – 시계열 분석은 많은 산업(금융, 에너지, 소매, IoT)에서 핵심적인 문제입니다. Darts는 다양한 모델 패밀리와 데이터 형식 간의 전환 불편함을 없애고, 프로토타이핑, 비교, 배포를 빠르게 할 수 있게 해줍니다. 또한 다중 시계열 학습, 공변량, 계층적 조정, 적합 예측과 같은 고급 기능도 지원합니다.
빠른 시작 (README에서)
import pandas as pd
from darts import TimeSeries
from darts.models import ExponentialSmoothing
# CSV를 pandas DataFrame으로 로드
df = pd.read_csv("AirPassengers.csv")
# Darts TimeSeries로 변환 (시간 및 값 열 지정)
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
# 학습/검증 분할
train, val = series[:-36], series[-36:]
# 단순 지수 평활 모델 적합
model = ExponentialSmoothing()
model.fit(train)
# 검증 기간에 대한 확률적 예측 (1000개 샘플)
forecast = model.predict(len(val), num_samples=1000)
# 결과 플롯
import matplotlib.pyplot as plt
series.plot()
forecast.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
plt.show()
핵심 기능 (README에 나열된 대로)
| 카테고리 | 하이라이트 |
|---|---|
| 예측 모델 | 고전적 (ARIMA, VARIMA, 지수 평활), 베이스라인 (Naïve, 이동 평균), 딥러닝 (N-BEATS, TCN, Transformer, RNN) |
| 다변량 지원 | TimeSeries는 여러 열을 보유할 수 있으며, 많은 모델이 다변량 입력을 지원합니다 |
| 글로벌 모델 학습 | 신경망 모델은 수십 개에서 수천 개의 시계열을 동시에 학습할 수 있습니다 |
| 확률적 출력 | 샘플 기반 예측 또는 모수적 분포; 신뢰 구간에 유용 |
| 공변량 | 과거 관측, 미래 알려진, 정적 외부 데이터를 모델에 공급 가능 |
| 이상 감지 | darts.ad 모듈은 PyOD 스코어러, K-평균, 분위수 감지기 및 모든 예측 모델을 래핑하여 이상 점수를 생성합니다 |
| 백테스팅 및 평가 | 롤링 윈도우 예측 유틸리티, 메트릭 세트 (R², MASE 등) |
| 설명 가능성 | 호환 모델에 대한 SHAP 기반 설명 |
| 계층적 조정 | 예측에 계층적 일관성을 강제하는 변환기 |
| 통합 | PyTorch Lightning 백엔드, 선택적 MLflow 추적, Docker 이미지, Conda 패키지, pandas, polars, numpy, pyarrow, xarray와의 호환성 |
| 데이터 유틸리티 | 내장 데이터셋, 스케일링, 결측치 처리, 차분, Box-Cox 등 |
일반적인 사용 사례
- 비즈니스 수요 예측 – 여러 제품 수준 시계열에 대한 글로벌 모델을 학습하고, 가격 또는 프로모션 공변량을 통합하고, 확률적 수요 구간을 얻습니다.
- 에너지 부하/가격 예측 – 과거 기상 데이터(과거 공변량)와 알려진 달력 효과(미래 공변량)를 사용하여 전력 소비를 예측합니다.
- 센서 스트림의 이상 감지 –
darts.ad로 예측 모델 또는 PyOD 감지기를 래핑하여 분포에서 벗어난 동작을 플래그합니다. - 계층적 계획 – SKU 수준에서 예측한 다음, 카테고리 또는 총 판매 수준으로 조정합니다.
- 연구 및 교육 – 통합 API 덕분에 새로운 시계열 아키텍처를 빠르게 프로토타이핑할 수 있습니다.
설치
# 권장: 새로운 Python 3.11+ 환경 (conda/venv/virtualenv)
pip install darts # 모든 핵심 종속성 가져오기
GPU/TPU 지원 또는 간소화된 설치를 위해서는 저장소의 전체 INSTALL.md를 참조하세요.
더 알아보기
- 빠른 시작 가이드 – https://unit8co.github.io/darts/quickstart/00-quickstart.html
- 사용자 가이드 및 API 참조 – https://unit8co.github.io/darts/userguide.html 및 https://unit8co.github.io/darts/generated_api/darts.html
- 예제 노트북 – https://unit8co.github.io/darts/examples.html (MLflow 데모 포함)
- 블로그 및 비디오 소개 – README에 링크된 Medium 게시물 및 25분 YouTube 개요.
TL;DR
Darts는 시계열 예측 및 이상 감지를 위한 프로덕션 준비된 Pythonic 툴박스입니다. 고전 통계 방법과 최신 딥러닝 모델을 단일 scikit-learn 유사 인터페이스로 통합하고, 다변량 및 다중 시계열 학습을 지원하며, 확률적 출력을 제공하고, 인기 있는 ML 도구(PyTorch Lightning, MLflow)와 통합됩니다. 여러 라이브러리를 전환하지 않고 시계열 데이터를 신뢰할 수 있는 예측으로 전환해야 하는 모든 사람에게 이상적입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트