> For the complete documentation index, see [llms.txt](https://rema.gitbook.io/it-business-system-analyst/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rema.gitbook.io/it-business-system-analyst/systems_analyst/data-science.md).

# Data Science

| Грейд     | Роль   |
| --------- | ------ |
| 🟠 Senior | 🅰️ SA |

> Data Science применяет машинное обучение и статистику для решения бизнес-задач. Аналитику важно понимать возможности и ограничения ML-моделей для корректной постановки задач.

## Что такое Data Science

**Data Science** — это дисциплина, которая объединяет статистику, программирование и бизнес-знания для извлечения ценной информации из данных.

Основные направления:

* **Машинное обучение (ML)** — предсказание и классификация
* **Статистический анализ** — проверка гипотез
* **Нейросетевые модели** — глубокое обучение
* **Обработка естественного языка (NLP)** — работа с текстом

## Когда аналитику нужны знания Data Science

### Сценарий 1: Прогнозирование

```
Задача: Предсказать, какие клиенты уйдут в конкурентов через месяц

Решение: ML модель классификации
1. Обучить модель на исторических данных (1000 клиентов ушли, 5000 остались)
2. Модель выучивает паттерны (например, если клиент не покупает > 2 месяцев, уходит)
3. Применить модель на текущих клиентах
4. Результат: список клиентов с риском ухода и вероятностью

Аналитик постановка задачи: какие признаки важны (последний заказ, сумма заказов, тип товара)?
```

### Сценарий 2: Персонализация

```
Задача: Рекомендовать товары каждому пользователю

Решение: ML модель рекомендаций
1. На основе истории покупок других пользователей
2. Найти пользователей с похожими вкусами
3. Рекомендовать товары, которые они покупали

Аналитик постановка задачи: как измерить качество рекомендаций? (click-through rate, conversion)
```

### Сценарий 3: Кластеризация

```
Задача: Разделить клиентов на сегменты

Решение: ML модель кластеризации (K-means, DBSCAN)
1. На основе признаков (возраст, доход, частота покупок)
2. Найти кластеры схожих клиентов
3. Назвать сегменты (VIP, Regular, At-risk, Dormant)

Аналитик постановка задачи: сколько сегментов нужно? На что они должны влиять?
```

## Типичные ML задачи

### Классификация

**Задача:** предсказать категорию

```
Примеры:
- Спам или не спам (email classification)
- Одобрить или отклонить кредит (credit scoring)
- Здоров или болен (medical diagnosis)

Метрики:
- Accuracy (правильные ответы)
- Precision (из предсказанных спам, сколько реально спам)
- Recall (из всех спам, сколько найдено)
- F1-score (балланс precision и recall)
```

### Регрессия

**Задача:** предсказать число

```
Примеры:
- Цена товара (house price prediction)
- Количество покупок (sales forecast)
- Время доставки (delivery time estimation)

Метрики:
- MAE (Mean Absolute Error) — среднее отклонение
- RMSE (Root Mean Squared Error) — штраф за большие ошибки
- R² (coefficient of determination) — % объясненной дисперсии
```

### Кластеризация

**Задача:** разделить данные на группы

```
Примеры:
- Сегментация клиентов
- Группировка товаров по категориям
- Аномалия-детекция (выявить необычные паттерны)

Метрики:
- Silhouette Score (насколько плотные кластеры)
- Davies-Bouldin Index (разделение кластеров)
```

## Жизненный цикл ML проекта

### Фаза 1: Постановка задачи

Аналитик определяет:

* Какую бизнес-задачу решаем?
* Какие данные есть?
* Какой успех выглядит? (метрики)

### Фаза 2: Подготовка данных

Data Scientist:

* Загружает исторические данные
* Очищает (удаляет дубли, пропуски)
* Инженерит признаки (creates features)

### Фаза 3: Обучение модели

Data Scientist:

* Выбирает алгоритм (Decision Tree, Random Forest, Neural Network)
* Обучает на 80% данных
* Валидирует на 20% данных
* Туниц гиперпараметры

### Фаза 4: Оценка

Аналитик проверяет:

* Метрики хорошие? (accuracy > 90%)
* Модель обобщается? (training accuracy ≈ validation accuracy)
* Bias-variance tradeoff? (не переобученная)

### Фаза 5: Развертывание

Data Engineer развертывает модель в production:

* Модель работает как микросервис (API)
* Принимает входные данные
* Возвращает предсказания в real-time

### Фаза 6: Мониторинг

Аналитик отслеживает:

* Performance metrics (accuracy со временем снижается?)
* Data drift (входные данные изменились?)
* Retrain когда качество упадет

## Общие проблемы ML моделей

### Переобучение (Overfitting)

Модель выучила шум в данных, на новых данных работает плохо.

```
Training accuracy: 99%
Test accuracy: 60%
← Проблема: модель переобучена
```

**Решение:** использовать регуляризацию, больше данных, simpler модель.

### Недообучение (Underfitting)

Модель слишком простая, не выучила паттерны.

```
Training accuracy: 65%
Test accuracy: 64%
← Проблема: модель недообучена
```

**Решение:** использовать более сложную модель, больше признаков.

### Data Leakage

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

```
НЕПРАВИЛЬНО:
1. Загрузить все данные (включая целевую переменную)
2. Нормализовать используя min/max по всем данным
3. Разделить на train/test

ПРАВИЛЬНО:
1. Разделить на train/test
2. Нормализовать train и test отдельно (используя только train статистику)
```

## Требования для ML моделей

### Требование: Модель предсказания churn

```
Модель: Customer Churn Prediction

Входные данные:
- История покупок за последние 12 месяцев
- Тип клиента (retail, wholesale)
- Регион

Выходные данные:
- Вероятность ухода (0-100%)
- Период: "Уходит в течение 30 дней с вероятностью X%"

Требования:
- Accuracy >= 85%
- Precision >= 90% (мало false positives)
- Recall >= 75% (ловим большинство уходящих)

Развертывание:
- Запуск каждую неделю
- Результаты в дашбордце с фильтрами по регионам

Мониторинг:
- Если accuracy упадет < 80% за месяц → retrain
- Отслеживать drift: если новые клиенты отличаются от обучающей выборки
```

## Проблемы при работе с ML

### Проблема: Где вы делаете прогноз?

```
Option A: Batch prediction (offline)
- Раз в неделю обработать всех клиентов
- Сохранить результаты в таблицу
- Приложение просто читает результаты
Pros: Дешево, простой обработка
Cons: Данные не свежие (до 7 дней старые)

Option B: Real-time prediction (online)
- При открытии страницы пользователя
- Запросить предсказание у модели
- Выбрать рекомендацию на основе предсказания
Pros: Данные всегда свежие
Cons: Требует быстрая модель (< 100ms), дорого
```

### Проблема: Bias в данных

```
Проблема: Модель предсказания получения кредита
Данные: 80% белые мужчины, 20% другие группы

Результат: Модель дискриминирует меньшинства
Причина: модель лучше обучена на большинстве

Решение:
1. Убедиться, что группы balanced
2. Использовать fairness метрики
3. Добавить constraint: model error <= 2% для каждой группы
```

## Рекомендации для аналитика

1. **Начните с простого** — не всегда нужны нейросети, иногда дерево решений лучше
2. **Определите метрики** — что такое "хорошая модель" для вашей задачи?
3. **Подготовьте данные** — качество данных критичнее выбора алгоритма
4. **Установите baseline** — простая модель (e.g., always predict average) перед сложной
5. **Тестируйте** — A/B test модель перед полным внедрением
6. **Мониторьте** — качество со временем деградирует, нужен retrain

## 📚 Ресурсы для изучения

* [ML Roadmap](https://roadmap.sh/ai-data-scientist) — карта развития в ML
* [Fast.ai](https://www.fast.ai/) — практический курс по ML
* [Google ML Crash Course](https://developers.google.com/machine-learning/crash-course) — курс от Google
* [StatQuest with Josh Starmer](https://www.youtube.com/c/joshstarmer) — видео про статистику и ML
* [Hands-On Machine Learning](https://www.oreilly.com/library/view/hands-on-machine-learning/9781098122485/) — книга про практический ML
