Об этом проекте

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 и подключается опционально через extra river[pandas]. Версию для разработки можно установить с GitHub, для чего требуются Cython и Rust. Среди охватываемых семейств алгоритмов — линейные модели с рядом оптимизаторов, решающие деревья и случайные леса, приближённые методы ближайших соседей, обнаружение аномалий, обнаружение дрейфа, рекомендательные системы, прогнозирование временных рядов, бандиты, факторизационные машины, обучение на несбалансированных данных, кластеризация, bagging/boosting/stacking и активное обучение. Дополнительные онлайн-утилиты включают извлечение и отбор признаков, онлайн-статистику и метрики, предобработку, встроенные наборы данных, прогрессивную валидацию моделей и пайплайны моделей. В README явно описано, когда онлайн-обучение уместно: когда модель должна учиться на новых данных, не возвращаясь к прошлому, когда важна устойчивость к дрейфу концепции или когда разработка должна напоминать событийные производственные сценарии. Там также отмечается, что River делает акцент на ясности и пользовательском опыте, а не на производительности, быстро обрабатывает по одному образцу за раз и интегрируется с остальной экосистемой Python. Документация размещена на riverml.xyz, со ссылками на релизы пакета, список awesome-online-machine-learning, презентацию GAIA 2022 года и статью KDD'22 по онлайн-кластеризации. Проект распространяется по лицензии BSD 3-clause, имеет публичную дорожную карту и приветствует обсуждения, issues и вклад. Для цитирования доступна статья в JMLR.