Портфолио Data Scientist: как собрать и показать
Содержание:
Зачем DS портфолио
Резюме — это слова. Портфолио — это доказательства. Хорошее портфолио показывает: ты не просто прошёл курс, ты строишь работающие end-to-end ML-системы.
Для junior DS портфолио — обязательно. Без него — отказ на скрининге.
Для middle DS — желательно, особенно если меняешь домен или переходишь из смежной роли.
Для senior DS — опционально, заменяется реальным опытом + публикациями.
Структура портфолио
Стандартное портфолио DS включает:
- GitHub — основной репозиторий проектов
- Personal site или Notion (опционально) — описание + ссылки
- LinkedIn / hh.ru — синхронизированы с GitHub
- Kaggle профиль (опционально)
- Публикации / посты на 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 · DockerREADME каждого проекта
Структура:
# 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
└── MakefileNotebook-only — слабо. Production-quality structure — сильно.
Что добавить кроме 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.
Связанные темы
- Собеседование на Data Scientist
- Резюме Data Scientist
- Портфолио аналитика данных
- ML system design на собесе DS
- Из аналитика в Data Scientist
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-ов.