Портфолио Data Scientist: как собрать и показать

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

Зачем DS портфолио

Резюме — это слова. Портфолио — это доказательства. Хорошее портфолио показывает: ты не просто прошёл курс, ты строишь работающие end-to-end ML-системы.

Для junior DS портфолио — обязательно. Без него — отказ на скрининге.

Для middle DS — желательно, особенно если меняешь домен или переходишь из смежной роли.

Для senior DS — опционально, заменяется реальным опытом + публикациями.

Структура портфолио

Стандартное портфолио DS включает:

  1. GitHub — основной репозиторий проектов
  2. Personal site или Notion (опционально) — описание + ссылки
  3. LinkedIn / hh.ru — синхронизированы с GitHub
  4. Kaggle профиль (опционально)
  5. Публикации / посты на Habr, Medium, LinkedIn (опционально)

Главное — 3-5 проектов в GitHub. Остальное — дополнения.

3-5 проектов: какие сделать

Желательно покрыть разные навыки:

Проект 1: Classical ML end-to-end

Классическая задача (классификация / регрессия) на open-source данных.

Пример: «Прогноз churn для подписочного сервиса»

  • Данные: открытый dataset (Telco Churn, Kaggle)
  • Pipeline: EDA → feature engineering → CatBoost / LightGBM → metrics
  • Deploy: FastAPI или Streamlit → Docker → Hugging Face Spaces
  • Метрики: AUC, recall@precision=0.8, calibration
  • README: бизнес-объяснение + technical detail

Проект 2: NLP или CV (если в эту область)

Демонстрирует знание deep learning.

Пример NLP: «Классификация отзывов на товары»

  • Данные: Amazon reviews / Авто.ру отзывы
  • Модель: fine-tune BERT-base или DistilBERT
  • Метрики: F1, accuracy, confusion matrix по классам
  • Deploy: API + Streamlit demo

Проект 3: Recommender system

Важно для большинства e-commerce / соцсетей.

Пример: «Рекомендации фильмов на MovieLens»

  • Данные: MovieLens
  • Модель: collaborative filtering (matrix factorization), two-tower
  • Метрики: NDCG, recall@10, coverage, diversity
  • A/B-симуляция: split offline → simulate online → compare

Проект 4: Time series forecasting

Часто полезно для DS в ритейле / финтехе.

Пример: «Прогноз продаж в магазине»

  • Данные: Kaggle store sales / открытые данные
  • Модели: Prophet, ARIMA, gradient boosting с lag features
  • Метрики: MAPE, WAPE по категориям
  • Анализ: декомпозиция тренда / сезонности

Проект 5: A/B-симуляция или causal inference

Для senior — обязательно.

Пример: «Симуляция A/B с CUPED»

  • Synthetic data с известным effect
  • Сравнить power обычного A/B vs CUPED
  • Показать size reduction на конкретных данных
  • Notebook + блог-пост с разбором

GitHub: как оформить

README главного профиля

# Иван Иванов · Data Scientist

ML-инженер с N годами опыта в [domain]. Pet-projects + open-source.

## Featured projects
- [Churn prediction](link) — classical ML end-to-end with deploy
- [BERT review classifier](link) — NLP fine-tuning + API
- [MovieLens recommender](link) — collaborative filtering + ranking

## Tech stack
Python · PyTorch · scikit-learn · CatBoost · Spark · SQL · FastAPI · Docker

README каждого проекта

Структура:

# Project name

Одна строка: что делает + результат.

## Problem
[Бизнес-объяснение проблемы]

## Data
[Источник, размер, основные характеристики]

## Approach
[Pipeline: EDA → features → model → eval]

## Results
| Metric | Value |
|---|---|
| AUC | 0.85 |
| Recall @ Precision=0.8 | 0.72 |

## Deploy
[Как развёрнут — link на demo]

## Tech
Python · PyTorch · ...

## How to run
[Docker / pip install / Makefile]

Code organisation

project/
├── README.md
├── notebooks/
│   ├── 01_eda.ipynb
│   ├── 02_modeling.ipynb
│   └── 03_eval.ipynb
├── src/
│   ├── data.py
│   ├── features.py
│   ├── model.py
│   └── train.py
├── tests/
├── data/  # gitignored
├── models/  # gitignored
├── requirements.txt
├── Dockerfile
└── Makefile

Notebook-only — слабо. Production-quality structure — сильно.

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

Что добавить кроме GitHub

Streamlit / Hugging Face Spaces demos

Запусти модель как web-app:

  • Streamlit Cloud (бесплатный hosting)
  • Hugging Face Spaces (бесплатно для ML demos)
  • Vercel + FastAPI

Demo — это «one click» доказательство того, что модель работает.

Блог-посты

Опиши процесс работы над проектом:

  • На Habr / Medium / dev.to / личный blog
  • Раскрой ход мысли: почему выбрал модель, какие были trade-off-ы

Это даёт сильный signal — ты не только написал код, но и понимаешь.

Kaggle

Не для top-1. Top-25% или silver medal на 1-2 соревнованиях — хороший signal.

Контрибуции в open-source

scikit-learn, PyTorch, MLflow, DVC, CatBoost — даже маленькие PR (fix bug, add example) — signal.

Частые ошибки

  • 5 проектов в Jupyter Notebook без deploy. Notebook — это эксперимент, не production. Хотя бы один проект должен быть с API / Docker.
  • «Заработанные» проекты с курсов. Titanic, Wine quality — это учебные. Каждый делал. Нужны оригинальные.
  • README одна строка. README — это лицо проекта. Должно быть как mini-paper: problem, data, approach, results, deploy.
  • Без метрик. «Обучил модель» — мало. AUC, recall, метрика бизнеса.
  • Pet-project без бизнес-объяснения. Только техника = слабо. Нужно: бизнес-контекст, выбор метрики, trade-off-ы.
  • Branches и WIP-код в main. Главная ветка должна быть clean и работающей.
  • Без CI. GitHub Actions с linting + tests = sign of maturity.

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

FAQ

Сколько времени нужно на хорошее портфолио?

3-6 месяцев активной работы. По 1-2 проекта в месяц + блог-посты.

Если проекты идут долго?

Лучше 2 проекта end-to-end (включая deploy), чем 10 в notebook. Качество важнее количества.

Нужен ли personal site?

Не обязательно. GitHub + README + блог-посты на Habr — достаточно. Personal site — для senior с длинной историей.

Стоит ли участвовать в Kaggle?

Полезно для practical-навыков. Не для медалей. Top-25% на 1-2 competitions — отличный signal для junior.

Что важнее — глубина или широта?

Глубина. 3 проекта с хорошим end-to-end execution лучше 10 быстрых notebook-ов.