Промпт-гайд 📚 Гайды

7 промптов для прогнозирования и ML-моделирования

Готовые шаблоны для прогноза временных рядов, регрессии, классификации, кластеризации, выбора модели, валидации и деплоя в продакшен. Под ChatGPT, Claude, Gemini.

🎯 7 промптов

Различие между «аналитиком» и «data scientist» в одной фразе: первый объясняет, что было, второй предсказывает, что будет. ИИ-помощники в моделировании — не замена data science образования (статистика, теорвер, основы ML), но хороший ассистент: написать код для scikit-learn / Prophet, проверить корректность выбранной метрики, диагностировать overfit. Главное — критическое отношение к выводам.

Внутри — 7 шаблонов: прогнозирование временных рядов (продажи, метрики), регрессия для численного прогноза, классификация (бинарная и мультиклассовая), кластеризация для сегментации, выбор и сравнение моделей, валидация и контроль переобучения, деплой модели в продакшен.

Жёсткое предупреждение: ML-модель — не хрустальный шар. Любой прогноз имеет доверительный интервал, и хороший data scientist его всегда указывает. Бизнес-руководитель захочет «одну цифру», но честный ответ — «с вероятностью 80% значение будет в диапазоне X-Y». Соблазн дать «однозначный прогноз» ради удобства — путь к катастрофическим решениям, когда реальность выйдет за модель.

1

📈 Прогнозирование временных рядов

Помоги построить прогноз временного ряда.

Контекст:
Что прогнозируем: [продажи / трафик / загрузка серверов / спрос].
Гранулярность: [час / день / неделя / месяц].
Глубина истории: [сколько периодов есть данных].
Горизонт прогноза: [на сколько вперёд].
Сезонность (известная): [недельная / месячная / годовая / нет].
Внешние факторы (если есть): [промо-акции / праздники / погода / макроэкономика].

План работы:

1) EDA временного ряда:
Тренд (есть ли направленное движение).
Сезонность (декомпозиция STL).
Стационарность (ADF тест).
Аномалии и выбросы.

2) Выбор модели:
**Простые baseline:**
Naive (последнее значение / среднее).
Seasonal naive (значение год назад).
Moving average / Exponential smoothing.
**Классические:**
ARIMA / SARIMA — для стационарных рядов с сезонностью.
Prophet (Facebook) — robust, легко интерпретируется, держит holidays.
**ML:**
XGBoost / LightGBM на feature-engineered признаках (lags, rolling, calendar features).
**Deep Learning:**
LSTM / Transformer — для очень длинных рядов с нелинейностями. Для коротких рядов overkill.

3) Метрики качества:
MAE — средняя абсолютная ошибка (в единицах).
MAPE — средняя процентная ошибка (не работает на нулях).
RMSE — штрафует крупные ошибки.
Какую выбрать — зависит от бизнес-смысла.

4) Кросс-валидация для time series:
TimeSeriesSplit (НЕ random!).
Walk-forward validation.
Никогда не использовать будущие данные для тренировки прошлых (data leakage).

5) Доверительные интервалы — обязательно. Прогноз без них вводит в заблуждение.

6) Готовый код на Python (Prophet — самый простой старт):
```python
from prophet import Prophet
import pandas as pd

df = pd.read_csv('data.csv')
df.columns = ['ds', 'y']

model = Prophet(
    yearly_seasonality=True,
    weekly_seasonality=True,
    interval_width=0.95
)
model.fit(df)

future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)
```

Запрет: прогноз без доверительных интервалов, экстраполяция на горизонт длиннее 30% от истории данных, использование random train/test split на time series.
💡 Примечание

Random train/test split на time series — классическая ошибка новичков. Это data leakage: модель тренируется на данных из «будущего» (относительно тестовых) и показывает нереально хорошие метрики. В продакшене точно так же не сработает. TimeSeriesSplit — единственный правильный способ. Доверительные интервалы — для честности. Прогноз «продажи будут 1000» без CI лжёт. «Будут 850-1150 с 95%» — честная информация для решений.

2

📊 Регрессия для численного прогноза

Помоги построить регрессионную модель.

Контекст:
Что прогнозируем (numeric target): [цена квартиры / время выполнения / сумма следующего заказа / etc].
Признаки (features): [список или описание dataset'а].
Размер выборки: [N строк × M колонок].
Бизнес-цель прогноза: [что будем делать с предсказаниями].

План:

1) EDA + feature engineering:
Распределения признаков, корреляции, выбросы.
Категориальные → one-hot / target encoding.
Числовые → нормализация (если модель чувствительна).
Новые признаки (взаимодействия, log-преобразования, polynomial).
Обработка пропусков (mean / median / model-based imputation).

2) Выбор модели по сложности данных:
**Линейная регрессия** — baseline, интерпретируемая. Если зависимость линейная и признаков мало — лучший выбор.
**Ridge / Lasso / ElasticNet** — регуляризация для много признаков и мультиколлинеарности.
**Random Forest / Gradient Boosting (XGBoost, LightGBM, CatBoost)** — нелинейные зависимости, обработка категориальных. Default выбор для табличных данных в 2026.
**Нейросети** — для очень больших выборок (1M+) и сложных нелинейностей. Чаще всего overkill.

3) Метрики:
MAE — интерпретируемая, устойчива к выбросам.
RMSE — штрафует большие ошибки.
R² — доля объяснённой дисперсии (0..1, чем выше тем лучше).
MAPE — для процентной интерпретации.
**Бизнес-метрика** — обязательно перевести точность модели в деньги / ресурсы.

4) Кросс-валидация:
K-Fold (k=5 стандарт).
Stratified — если есть субпопуляции в данных.
GroupKFold — если в данных есть зависимости (например, несколько строк от одного пользователя).

5) Интерпретация:
Важность признаков (feature importance / SHAP values).
Partial dependence plots.
Конкретные примеры предсказаний с объяснением (особенно если будете оправдываться перед бизнесом).

6) Готовый код (LightGBM):
```python
import lightgbm as lgb
from sklearn.model_selection import KFold
from sklearn.metrics import mean_absolute_error

model = lgb.LGBMRegressor(
    n_estimators=500,
    learning_rate=0.05,
    early_stopping_rounds=50
)
kf = KFold(n_splits=5, shuffle=True, random_state=42)
scores = []
for train_idx, val_idx in kf.split(X):
    model.fit(
        X.iloc[train_idx], y.iloc[train_idx],
        eval_set=[(X.iloc[val_idx], y.iloc[val_idx])]
    )
    pred = model.predict(X.iloc[val_idx])
    scores.append(mean_absolute_error(y.iloc[val_idx], pred))
```

Запрет: финальная модель без кросс-валидации (одной train/test split недостаточно), сложная модель без сравнения с простым baseline (часто Linear Regression не уступает XGBoost), отсутствие feature importance.
💡 Примечание

Сравнение с baseline (Linear Regression) — обязательный шаг. Часто оказывается, что XGBoost даёт +2% метрики при +50× сложности интерпретации. Если разница маленькая, берите линейную: проще объяснить бизнесу, легче дебажить, быстрее в продакшене. SHAP values — lifesaver для интерпретации сложных моделей: показывают, какой признак какое влияние оказал на конкретное предсказание.

3

🎯 Классификация (бинарная и мультикласс)

Помоги построить классификационную модель.

Контекст:
Что классифицируем: [уйдёт ли клиент / одобрить кредит / тип обращения / спам vs не-спам].
Тип задачи: [binary / multiclass / multilabel].
Распределение классов (балансировка): [сбалансированные / дисбаланс какой степени].
Цена ошибок:
False Positive (предсказали +, на самом деле −): [последствие].
False Negative (предсказали −, на самом деле +): [последствие].

План:

1) EDA + balancing:
Распределение классов.
Если дисбаланс >1:10 — обработать (SMOTE / undersampling / class weights).
Признаки vs target — корреляции.

2) Выбор модели:
Logistic Regression — baseline, интерпретируемая.
Random Forest / Gradient Boosting — нелинейные.
SVM — для маленьких выборок с чёткой границей.
Neural Networks — для очень больших / сложных задач (NLP, computer vision).

3) Метрики (для дисбаланса Accuracy НЕ подходит):
**Confusion matrix** — основа всего.
Precision = TP / (TP + FP) — какая доля предсказанных «+» реально «+».
Recall = TP / (TP + FN) — какую долю реальных «+» поймали.
F1 = 2 × P × R / (P + R) — балансир.
ROC-AUC — для ранжирования (порядок важнее порога).
PR-AUC — для дисбалансных задач.

**Какая метрика бизнес-критична?**
Спам-фильтр: важнее Precision (не блокировать настоящие письма).
Скрининг рака: важнее Recall (не пропустить больного).
Кредит: бизнес сам решает (баланс лимита риска).

4) Threshold tuning:
Default 0.5 — почти никогда не оптимален.
Найти threshold по PR-curve / F1-curve / бизнес-функции.

5) Probability calibration:
Если используете predict_proba — проверьте калибровку (Brier score, calibration plot).
Деревья и SVM часто плохо откалиброваны — нужен CalibratedClassifierCV.

6) Код (Logistic + class weights):
```python
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, roc_auc_score

model = LogisticRegression(
    class_weight='balanced',
    max_iter=1000
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]
print(classification_report(y_test, y_pred))
print(f'ROC-AUC: {roc_auc_score(y_test, y_proba):.3f}')
```

Запрет: использование Accuracy на дисбалансных данных (даёт иллюзию качества), single threshold 0.5 без оптимизации, отсутствие анализа ошибок (какие именно примеры модель путает).
💡 Примечание

Accuracy на дисбалансных данных — источник самообмана. Если у вас 1% позитивов и модель всегда предсказывает «−», Accuracy = 99%. Прекрасно, но модель бесполезна. Precision/Recall/F1 и confusion matrix — обязательный минимум. Threshold tuning часто даёт +20-40% к F1: default 0.5 — компромисс, оптимум зависит от бизнес-функции потерь.

4

🧩 Кластеризация для сегментации

Помоги провести кластеризацию для сегментации (клиентов / товаров / транзакций).

Контекст:
Что кластеризуем: [конкретно].
Объекты: [N штук с M признаками].
Бизнес-цель: [таргетинг кампаний / персонализация / выявление аномальных групп].
Известные категории (если есть): [или unsupervised полностью].

План:

1) Feature engineering:
Все признаки — численные (категориальные → one-hot или embeddings).
Нормализация (StandardScaler / MinMaxScaler) — обязательно для distance-based методов.
PCA / UMAP для уменьшения размерности (если M > 20).

2) Выбор алгоритма:
**K-Means** — быстрый, простой, требует знания K. Хорош для сферических кластеров одинакового размера.
**Hierarchical (Ward)** — даёт дендрограмму, удобно интерпретировать.
**DBSCAN** — находит кластеры произвольной формы, выявляет outliers. Не требует K.
**Gaussian Mixture Models** — soft clustering (вероятности принадлежности).
**HDBSCAN** — улучшенный DBSCAN, часто лучший дефолт.

3) Определение оптимального K (для K-Means):
Elbow method — изгиб на графике WCSS.
Silhouette score — выше = лучше разделение.
Gap statistic.
**Бизнес-логика > математика** — если K=7 даёт лучший silhouette, но бизнес может работать с 4 сегментами — берите 4.

4) Профилирование кластеров — **самый важный шаг!**:
Средние значения каждого признака по кластеру.
Размеры кластеров.
Названия (по доминирующим характеристикам — например: «Премиум-молодые», «Бюджетные-лояльные»).
Если кластер не интерпретируется — он бесполезен для бизнеса.

5) Валидация:
A/B тест на разных сегментах (одинаково ли реагируют на стимулы).
Стабильность во времени (кластеризация на свежих данных даёт похожие сегменты?).

6) Код:
```python
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Поиск оптимального K
for k in range(2, 11):
    model = KMeans(n_clusters=k, random_state=42, n_init=10)
    labels = model.fit_predict(X_scaled)
    score = silhouette_score(X_scaled, labels)
    print(f'K={k}: silhouette={score:.3f}')
```

Запрет: кластеры без интерпретации (если не можете назвать — бесполезно), K-Means без нормализации (доминируют признаки с большими значениями), использование на категориальных без преобразования.
💡 Примечание

Профилирование кластеров — этап, который начинающие пропускают и получают «5 групп клиентов» без понимания, чем они отличаются. Без интерпретации кластеризация бесполезна для бизнеса. Маркетолог не может работать с «Кластером 3» — он работает с «Молодыми премиум-покупателями». Принцип «бизнес-логика > математика» критичен: иногда меньшее K с худшим silhouette практически удобнее, чем теоретически оптимальное.

5

⚖️ Выбор и сравнение моделей

Помоги системно сравнить несколько моделей для выбора лучшей.

Контекст:
Тип задачи: [регрессия / классификация].
Главная метрика: [конкретная].
Бизнес-ограничения: [скорость inference / интерпретируемость / размер модели].
Кандидаты на сравнение: [список — например: Linear, Random Forest, XGBoost, LightGBM, CatBoost, Neural Net].

Структура сравнения:

1) Унифицированный pipeline:
Одинаковая предобработка для всех моделей.
Одинаковое разбиение train/val/test.
Одинаковые метрики.
Random seed зафиксирован.

2) Hyperparameter tuning для каждой:
GridSearchCV / RandomizedSearch / Optuna.
**Одинаковый бюджет времени** — иначе нечестно (XGBoost будет выглядеть лучше Linear, потому что больше тюнили).
Стандартные сетки гиперпараметров из best practices, не ad-hoc.

3) Метрики для сравнения (минимум 4):
Главная бизнес-метрика (F1 / MAE / etc).
Скорость inference (мс на предсказание) — критично для real-time.
Скорость training (для переобучения).
Размер модели (МБ) — для edge deployment.
Интерпретируемость (subjective scoring 1-5).
Робастность (как падает качество на «слегка изменённых» данных).

4) Cross-validation на k=5 минимум:
Среднее ± стандартное отклонение по фолдам.
Если разница между моделями меньше std — статистически не значимая, простую модель брать.

5) Сводная таблица:
Модель | F1 | Inference (мс) | Train (мин) | Размер (МБ) | Interpretability | Recommendation

6) Финальное решение:
Бизнес-обоснование выбора, не только «у этой выше F1».
Если модель А лучше А-Б на 1%, но в 100 раз медленнее — берём Б.

Принципы:
Простая модель с meaningful результатом > сложная с marginal улучшением.
Время на feature engineering > время на выбор модели в 90% случаев.
Ensemble нескольких моделей часто > single best, но сложнее в продакшене.

Запрет: сравнение без одинакового tuning budget (нечестно), сравнение только по одной метрике (упрощение), выбор сложной модели без бизнес-оправдания (перфекционизм без ROI).
💡 Примечание

Принцип «одинаковый бюджет на tuning» — критичен для честного сравнения. Если на XGBoost потратили 1000 trials в Optuna, а на Linear — defaults, XGBoost «выиграет» автоматически. Реальное сравнение требует равных шансов. Время inference часто игнорируется на research-стадии и становится блокером в продакшене: модель, которая считает 500мс на предсказание, не пригодна для real-time scoring.

6

🔍 Валидация модели и контроль переобучения

Помоги проверить модель на переобучение (overfitting) и корректность.

Контекст:
Модель: [какая].
Метрика на train: [значение].
Метрика на test: [значение].
Размер выборки: [N].

Чек-лист на overfitting:

1) **Train vs Test gap:**
Если train F1 = 0.95, test F1 = 0.65 — overfit очевиден.
Если разница <5% — обычно ок.
Если train F1 = test F1 = низкий — underfit (модель слишком слабая).

2) **Learning curves:**
Plot train/val метрики как функция размера выборки.
Если train flat высокий, val flat низкий — overfit.
Если оба растут — нужно больше данных.

3) **Validation curves:**
Plot train/val метрик как функция гиперпараметра (complexity).
Найти оптимум (где val максимум).

4) **Cross-validation consistency:**
Стандартное отклонение по фолдам.
Если std большая — модель нестабильна, чувствительна к выборке.

5) **Shuffle test:**
Перемешайте target случайно.
Заново обучите модель.
Метрика должна упасть до random baseline. Если нет — data leakage.

6) **Holdout test set:**
Должен быть **никогда не виданный** моделью set.
Не использовать для tuning.
Финальная оценка только на нём.

Стратегии борьбы с overfit:
**Больше данных** — лучшее лекарство.
**Регуляризация** (L1/L2/dropout/early stopping).
**Упрощение модели** (меньше deep, меньше features).
**Feature selection** (только важные признаки).
**Ensemble** (bagging/boosting).
**Data augmentation** (для изображений / NLP).

Стратегии борьбы с underfit:
Более сложная модель.
Больше features (feature engineering).
Снизить регуляризацию.
Дольше тренировать.

Запрет: использование test set для tuning (test уходит в train неявно), отсутствие holdout для финальной оценки, игнорирование стандартного отклонения по фолдам.
💡 Примечание

Shuffle test — недооценённая техника обнаружения data leakage. Если перемешать target случайно и модель всё равно даёт хорошую метрику, значит, в данных есть leakage (target информация просочилась в признаки). Самые катастрофические ошибки в production — именно от пропущенного leakage: модель показывает 99% accuracy в test и 50% в проде.

7

🚀 Деплой модели в продакшен

Помоги задеплоить ML-модель в продакшен.

Контекст:
Модель: [тип, размер, framework].
Сценарий использования: [batch / real-time / edge].
Ожидаемая нагрузка: [requests/sec].
SLA на latency: [мс].
Инфраструктура: [AWS / GCP / VPS / on-premise].

Чек-лист деплоя:

**1. Сериализация модели:**
pickle / joblib (Python native, простое).
ONNX (cross-platform, быстрее).
TorchScript / TensorFlow SavedModel.
Версионирование (MLflow / DVC / Weights & Biases).

**2. API endpoint:**
FastAPI / Flask — простой REST.
Triton / TorchServe — оптимизированы для ML.
gRPC — низкая latency.
Контракт: input schema, output schema, версионирование API.

**3. Препроцессинг consistency:**
Тот же scaler, encoders, imputers, что были в training.
Сериализуйте preprocessor вместе с моделью.
Тестируйте: production preprocessing должен дать те же признаки, что и в training (byte-identical).

**4. Performance:**
Latency p50, p95, p99 (не только среднее).
Throughput (RPS).
Memory usage.
Batching для эффективности.

**5. Monitoring:**
**Data drift** — статистика входных признаков в проде vs training.
**Model drift** — снижение метрик качества на production-данных.
**Prediction distribution** — распределение outputs.
**Latency tracking.**
**Error rate.**
Алерты на отклонения.

**6. Логирование:**
Каждое предсказание (privacy-aware).
Inputs (анонимизированные).
Outputs.
Confidence / probabilities.
Время.
Для аудита и переобучения.

**7. Retraining стратегия:**
Триггеры (drift detected / по расписанию / новые labeled данные).
A/B тест новой модели vs старой.
Shadow deployment (параллельный запуск без влияния на пользователей) — для сравнения.
Canary deployment (на 5% трафика → 100%).
Rollback план.

**8. Безопасность:**
Authentication / authorization.
Rate limiting.
Input validation (защита от adversarial examples и DoS).
PII handling.

Принципы:
**Модель в продакшене — это только 10% работы**. 90% — MLOps инфраструктура.
Никогда не деплойте без monitoring — модель будет деградировать, и вы узнаете слишком поздно.
A/B тест перед заменой production-модели — обязательно. «Лучше в offline» ≠ «лучше в production».

Запрет: деплой без monitoring (медленная деградация = катастрофа), обновление модели без A/B теста (не знаете, улучшение или регресс), preprocessing inline в коде вместо сериализованного артефакта (training/serving skew гарантирован).
💡 Примечание

Training/serving skew — главная боль ML в продакшене. В training scaler нормализовал по train mean=10. В проде пишут новый scaler, получается mean=12. Модель видит другое распределение признаков, качество падает. Решение — сериализуйте preprocessor вместе с моделью, используйте идентичный артефакт. Monitoring обязателен потому что мир меняется: данные drift, поведение пользователей drift, и модель потеряет качество тихо. Без alerts вы узнаете об этом из жалоб.

Обсуждение

Будьте первым, кто оставит комментарий.

Оставить комментарий

Ответ для

Email нужен только для подтверждения. После проверки комментарий появится на сайте.

Или войдите — тогда комментарий появится сразу, без подтверждения email и модерации:

Google VK