프로젝트 소개

River는 온라인 머신러닝, 즉 데이터 스트림으로부터 한 번에 하나의 관측값씩 학습하는 데 전념하는 오픈 소스 Python 라이브러리입니다. 이는 creme과 scikit-multiflow 프로젝트가 병합된 결과로 제시되며, 스트리밍 데이터에 대한 머신러닝을 위한 사용자 친화적인 라이브러리를 목표로 한다고 밝히고 있습니다. 핵심 인터페이스는 증분적입니다. 모델은 learn_one과 predict_one을 노출하므로, 각 샘플이 도착할 때마다 예측과 업데이트를 교차 수행할 수 있으며 과거 데이터를 다시 볼 필요가 없습니다. 빠른 시작 예제는 내장 Phishing 데이터셋에서 StandardScaler와 LogisticRegression으로 구성된 파이프라인을 사용해 로지스틱 회귀를 훈련하며, Accuracy 지표가 모델과 함께 업데이트됩니다. 설치는 pip(pip install river)를 통해 이루어지며, Linux, macOS, Windows용 휠이 게시되어 있습니다. 이 프로젝트는 Python 3.11 이상을 대상으로 합니다. 핵심 온라인 인터페이스는 pandas 의존성이 없으며, 미니 배치 인터페이스(learn_many, predict_many, predict_proba_many, transform_many)는 pandas 위에 구축되어 있고 river[pandas] 추가 기능을 통해 선택적으로 사용할 수 있습니다. 개발 버전은 GitHub에서 설치할 수 있으며, 이 경우 Cython과 Rust가 필요합니다. 다루는 알고리즘 계열에는 다양한 옵티마이저를 갖춘 선형 모델, 결정 트리와 랜덤 포레스트, 근사 최근접 이웃, 이상 탐지, 드리프트 탐지, 추천 시스템, 시계열 예측, 밴딧, 팩터라이제이션 머신, 불균형 학습, 클러스터링, 배깅/부스팅/스태킹, 능동 학습이 포함됩니다. 추가적인 온라인 유틸리티로는 특징 추출과 선택, 온라인 통계와 지표, 전처리, 내장 데이터셋, 점진적 모델 검증, 모델 파이프라인이 있습니다. README는 온라인 학습이 적절한 경우를 명확히 설명합니다. 모델이 과거를 다시 보지 않고 새 데이터로부터 학습해야 할 때, 개념 드리프트에 대한 견고성이 중요할 때, 또는 개발이 이벤트 기반 프로덕션 환경과 유사해야 할 때입니다. 또한 River는 성능보다 명확성과 사용자 경험을 중시하며, 한 번에 하나의 샘플을 처리하는 데 빠르고, 나머지 Python 생태계와 통합된다는 점을 언급합니다. 문서는 riverml.xyz에 호스팅되어 있으며, 패키지 릴리스, awesome-online-machine-learning 목록, 2022년 GAIA 발표, 온라인 클러스터링에 관한 KDD'22 논문 링크가 있습니다. 이 프로젝트는 BSD 3-clause 라이선스를 따르며, 공개 로드맵이 있고, 토론, 이슈, 기여를 환영합니다. 인용을 위한 JMLR 논문도 제공됩니다.