Online learning на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

Online learning важен для real-time ML. На собесе DS: «отличие от batch», «когда применять».

Что такое online learning

Модель обновляется по одному (или нескольким) sample за раз, не на full dataset.

Batch learning: train на full dataset → freeze model → use for predictions.

Online learning: continuous learning — каждый new sample обновляет model.

# online style
for x, y in stream:
    pred = model.predict(x)
    model.update(x, y)  # learn from this sample

Алгоритмы

SGD (Stochastic Gradient Descent). На каждом sample — gradient step.

from sklearn.linear_model import SGDClassifier
clf = SGDClassifier()
for x_batch, y_batch in stream:
    clf.partial_fit(x_batch, y_batch, classes=[0, 1])

Vowpal Wabbit. Specialized для online learning. Очень быстрый.

FTRL (Follow The Regularized Leader). Sparse online learning. Used at Google.

Online k-means. Streaming clustering.

Bandits / contextual bandits. Уже online by design.

Применения

Click-through rate. Continuous обучение на user clicks.

Recsys. Update preferences на каждое событие.

Anomaly detection. Update normal distribution on new data.

Fraud detection. Patterns меняются — model тоже.

IoT. Sensor data — не помещается в memory целиком.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Concept drift adaptation

Online learning natively справляется с дрейфом — постоянно учится.

Forgetting. Если pattern меняется — старые данные не должны dominate. Решения:

  • Sliding window. Тренируем на последних N samples.
  • Exponential decay. Старые samples imeют меньший вес.
  • Ensemble of online learners. Разные «возрасты» — combine.

Drift detection. Monitor accuracy / loss на recent. Если падает — reset / retrain.

Tools

River (бывший Creme). Python библиотека для online ML.

from river import linear_model
model = linear_model.LogisticRegression()
for x, y in stream:
    model = model.learn_one(x, y)
    pred = model.predict_one(x)

Vowpal Wabbit. CLI tool / Python wrapper.

Spark Streaming + MLlib. Streaming context.

TensorFlow / PyTorch. Frameworks support online updates через partial training.

Связанные темы

FAQ

Online vs incremental?

Часто синонимы. Иногда incremental — periodic mini-batch updates, online — per-sample.

Это официальная информация?

Нет. Статья основана на документации river / Vowpal Wabbit.


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.