Личные проекты

Несколько проектов, которыми я занимаюсь помимо исследований: прогнозы теннисных матчей, эксперименты с ценообразованием и небольшие интерактивные игры. Ниже — описания, код и демо.

Машинное обучение · Спортивная аналитика

CourtSense AI

Система прогнозирования теннисных матчей и симуляции турниров.

Интерфейс CourtSense AI с прогнозом теннисного матча и анализом контекста

CourtSense AI — проект по прогнозированию результатов матчей ATP с помощью машинного обучения. Он объединяет модель XGBoost, рейтинги Elo, поиск похожих матчей в истории и анализ контекста с помощью агентов.

Система оценивает вероятность победы, объясняет прогноз с учётом контекста и моделирует ход Roland-Garros на основе официальной турнирной сетки.

  • Модель XGBoost, обученная на истории матчей ATP
  • Общий рейтинг Elo и отдельные рейтинги по покрытиям
  • Поиск похожих матчей по косинусному сходству
  • Агенты для анализа личных встреч, усталости, особенностей соперников, новостей и неопределённости
  • Интерактивное приложение на Streamlit с прогнозами матчей и симуляцией турниров
Компьютерное зрение · Интерактивный ИИ

Guess What AI Thinks

Небольшая игра на основе модели классификации изображений.

Скриншот игры Guess What AI Thinks

В этой игре нужно угадать, какой ответ модель даст для показанного изображения. Мне хотелось превратить обычную задачу классификации изображений в интерактивную игру.

Игра использует SigLIP (google/siglip2-base-patch16-224). Вместо фиксированных классов я задаю собственный набор меток для каждого набора изображений. Модель оценивает, насколько каждая метка соответствует изображению, оценки преобразуются в вероятности, а игра показывает наиболее вероятные ответы.

  • Классификация изображений с помощью SigLIP
  • Собственные наборы меток вместо фиксированных классов
  • Преобразование оценок в вероятности для ранжирования
  • Интерактивное приложение на Streamlit
Обучение по примерам · Планирование

Tiny Robot Playground

Среда навигации робота для сравнения разных стратегий принятия решений.

Демонстрация Tiny Robot Playground

Идея простая: поместить робота на клетчатое поле и посмотреть, как разные алгоритмы приведут его к цели. Задача одна, но стратегии ведут себя совершенно по-разному.

Робот движется по двумерной сетке со случайными препятствиями, причём путь до цели всегда существует. Сложность можно менять через размер поля, плотность препятствий и расстояние до цели.

  • Smart Random: двигается случайно, но старается не возвращаться сразу на предыдущую клетку
  • Оптимальный путь (BFS): видит всё поле и следует по кратчайшему пути
  • Нейросетевая стратегия: видит только ближайшее окружение и обучается по примерам (PyTorch)

Все стратегии работают на одном поле, поэтому их удобно сравнивать по доле успешных попыток, числу шагов, столкновениям и награде. Разница особенно заметна, когда наблюдаешь за ними одновременно.

Обучение с подкреплением · Оптимизация

RL Dynamic Pricing

Проект по обучению с подкреплением для последовательного выбора цен при неопределённом спросе.

Визуализация проекта RL Dynamic Pricing

Проект моделирует простой интернет-магазин, в котором продавец меняет цены со временем. На каждом шаге случайным образом приходят покупатели и решают, покупать ли товар, в зависимости от цены. Цель — получить как можно большую выручку, пока не закончится запас товара.

В модели спрос меняется со временем: число покупателей задаётся процессом Пуассона, вероятность покупки зависит от цены через сигмоиду, а продажи случайны. Решения влияют на следующие шаги, поэтому здесь интересно попробовать обучение с подкреплением.

  • Собственный симулятор со случайным спросом и ограниченным запасом товара
  • Deep Q-Network (DQN) для обучения стратегии ценообразования
  • Дискретный набор действий — сетка цен
  • Сравнение с фиксированной ценой и эвристическими стратегиями

Средняя выручка примерно на 8,5% выше, чем при фиксированной цене.
За 50 тестовых эпизодов в симуляторе DQN получил среднюю выручку около 678 против 625 у стратегии с фиксированной ценой. Эти результаты относятся к данной моделируемой среде.