// Практическое руководство

Машинное обучение —
это не магия,
а инструмент

Честное объяснение того, как ML работает на самом деле и что нужно знать заказчику, чтобы проект не превратился в дорогой эксперимент без результата.

87%
ML-проектов не доходят до прода
Корреляция не равна причинности
Важна не точность, а метрики

Когда правила перестают работать

ML не нужен там, где задача формализуема. Он появляется там, где правила писать невозможно — потому что факторов слишком много, они меняются, или часть из них скрыта.

Правила работают

Расчёт налоговой ставки

ЕСЛИ доход > 5M руб
ТО ставка = 15%
ИНАЧЕ ставка = 13%

→ Логика полная и стабильная. ML здесь избыточен.

Правила ломаются

Детектор мошеннических транзакций

ЕСЛИ сумма > 100к
ТО фрод?
...но богатые люди тратят больше
ЕСЛИ новая страна
ТО фрод?
...но люди ездят в командировки
ЕСЛИ ночь И сумма > 50к И...
...тысячи комбинаций, и всё равно мимо

→ Правил не хватит. Мошенники адаптируются быстрее.

Скрытые факторы

Прогноз оттока клиента

ЕСЛИ нет покупок 30 дней
ТО отток?
...но есть сезонные паузы
ЕСЛИ жалобы в поддержку
ТО отток?
...или наоборот — активный клиент
Реальная причина оттока
...вообще не в одном признаке

→ Нельзя описать правилами то, что само по себе нелинейно.

ML нужен не там, где задача сложная. А там, где она принципиально не формализуется — потому что факторы взаимодействуют нелинейно, скрыты или меняются со временем.

Два способа создавать логику

Вся разница между классическим программированием и ML — в том, откуда берутся правила. Нажмите на вкладки, чтобы сравнить два подхода.

ВХОДНЫЕ Данные НАПИСАННЫЕ Правила ВЫВОД Результат ↑ разработчик пишет правила вручную

Хорошо работает, когда логика понятна и полностью формализуема: налоги, транзакции, чёткие бизнес-условия.

ВХОДНЫЕ Данные ПРАВИЛЬНЫЕ Ответы ОБУЧЕНИЕ Модель НАЙДЕННЫЕ Правила ↑ правила извлекаются из данных автоматически

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

Что происходит внутри модели

Модель не «понимает» смысл и не ищет истину. Она работает с признаками — числовыми представлениями данных — и ищет устойчивые закономерности.

Признаки (features) — это «глаза» модели

Вместо абстрактных понятий модель видит только числа. Чем качественнее признаки — тем лучше предсказание.

features = аргументы функции

Для программиста это обычный payload запроса: x1, x2, x3. Модель не знает, что такое «клиент нервничает» или «транзакция странная»; она получает числа, нормализованные категории, эмбеддинги и временные признаки.

weights = найденные коэффициенты

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

model(input) = scoring function

После обучения модель ведёт себя как функция в коде: принимает вход, прогоняет вычисления и возвращает score. В продакшене она не «думает заново», а применяет уже найденные параметры к новому объекту.

threshold = бизнесовый if

Вероятность сама по себе не блокирует платёж и не увольняет кандидата. Решение появляется только после условия: if score > threshold. Этот порог выбирает бизнес, потому что цена ложной тревоги и пропуска разная.

👤

Пользователь

Возраст, частота покупок, география, время сессии, история кликов

🖼️

Изображение

Значения пикселей, яркость, контраст, векторы из CNN-слоёв

📝

Текст

Частоты слов, TF-IDF, эмбеддинги, тональность, длина предложений

📦

Транзакция

Сумма, время, устройство, геолокация, паттерн платежей

📡

Сенсор / IoT

Температура, вибрация, ток, давление — временные ряды

🔗

Прокси-признаки

Косвенные сигналы — когда нельзя измерить напрямую (интеллект, риск, лояльность)

ML почти всегда работает так: множество слабых и шумных сигналов агрегируются в одно полезное предсказание.

Почему ML почти никогда не работает с «настоящими» признаками

Это один из ключевых инсайтов, который отделяет поверхностное понимание ML от практического. В реальных бизнес-задачах то, что вы хотите предсказать, почти никогда нельзя измерить напрямую. Поэтому модель строится на прокси — косвенных признаках, которые с этим коррелируют.

Хотим предсказать
Кредитный риск
нельзя измерить прямо
Используем прокси-признаки
история платежей долговая нагрузка стаж на работе тип занятости район проживания возраст
Риск прокси

Район и возраст — сильные предикторы, но несправедливые. Модель воспроизведёт системную дискриминацию, если данные её содержат.

Хотим предсказать
Отток клиента
нельзя измерить прямо
Используем прокси-признаки
частота покупок последний визит обращения в поддержку NPS-оценки сезон канал привлечения
Риск прокси

Тишина клиента может означать лояльность, а не отток. Отсутствие обращений в поддержку — хороший знак. Интерпретация признаков неочевидна.

Хотим предсказать
Мошенничество
нельзя измерить прямо
Используем прокси-признаки
паттерн транзакций новое устройство время суток геолокация сумма категория магазина
Риск прокси

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

Прокси-признаки — это не слабость ML, это его природа. Задача команды — выбирать признаки, которые предсказывают нужное и не закрепляют нежелательные паттерны из исторических данных.

«Магия» ML — это не волшебство. Это математическая оптимизация с конкретным механизмом.

prediction

Модель делает пробный вызов функции: берёт признаки, текущие веса и выдаёт ответ. На первой итерации веса почти случайные, поэтому ответ обычно плохой.

loss

Функция ошибки измеряет, насколько ответ модели отличается от известного правильного ответа. Это как тест, который возвращает не pass/fail, а число: насколько сильно мы промахнулись.

gradient

Градиент показывает направление правки: какие веса увеличить или уменьшить, чтобы ошибка стала меньше. Физически это компас на поверхности ошибки.

update

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

ШАГ 1 Предсказание ШАГ 2 Ошибка ШАГ 3 Градиент ШАГ 4 Обновление весов повторяется тысячи раз, пока ошибка не станет минимальной ошибка = |предсказание — правильный ответ|

После обучения модель — это просто функция. Вход → вычисления → число. Никакого «ИИ» в процессе использования нет. Разница с обычным кодом только одна: эту функцию не писал человек — её нашёл алгоритм на данных.

Важно про «ключи». В криптографии ключ явно переключает смысл функции: encrypt(message, publicKey) шифрует, decrypt(cipher, privateKey) расшифровывает. В ML веса иногда похожи на ключ, потому что без них функция бесполезна, но они не дают обратного хода. Модель обычно не расшифровывает вход обратно — она сжимает признаки в оценку, класс или вероятность.

Результат — это всегда вероятность

ML-модель не говорит «это мошенничество». Она выдаёт число — вероятность. Но даже это не решение: нужен порог отсечения, и его выбирает бизнес, а не модель. Единого «правильного» порога не существует.

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

// симулятор: детектор мошеннических транзакций
Признаки (features)
подаются на вход при каждом запросе — меняются для каждой транзакции
Сумма аномально высокая 0.70
Новое устройство / локация 0.85
Нестандартное время суток 0.40
Совпадение с паттернами фрода 0.55
×
Веса (weights) 🔒 обучение
найдены моделью на 120 000 транзакциях — не задаются вручную
w₁ аномал.
0.32
w₂ устр-во
0.41
w₃ время
0.18
w₄ паттерн
0.27
z  =   0.32·0.70 + 0.41·0.85 + 0.18·0.40 + 0.27·0.55 − 0.65  =  0.14
P(мошенничество) = σ(z) = 1 / (1 + e−z)  =  54%
x текущие признаки транзакции: сумма, устройство, время, похожесть на фрод
w веса, найденные обучением; они определяют силу каждого признака
z сырой score до нормализации; его удобно считать, но неудобно читать бизнесу
σ(z) сигмоида переводит score в диапазон 0-100%, чтобы сравнить его с порогом
54%
ВЕРОЯТНОСТЬ МОШЕННИЧЕСТВА
0% Точно не фрод 50% 100% Точно фрод
Порог отсечения — выбирается под бизнес
Не существует универсального стандарта. Банк, медклиника и маркетплейс установят разные пороги — потому что цена ошибки у всех разная.
0% 99%
50%
порог
вероятность
0%25%50%75%100%
Поймаем мошенничеств
из реально существующих случаев
Ложных блокировок
легитимных транзакций будет отклонено
🚫
Заблокировать транзакцию
вероятность 54% ≥ порог 50%

Где ML учит «не то»

Самая опасная особенность ML — модель может идеально работать на обучающих данных и делать совершенно бессмысленные предсказания в реальном мире.

Корреляция ≠ причинность. ML не ищет истину. Он ищет устойчивые закономерности — и учится им, даже если реальной связи нет.

Классический пример: волк или хаски?

Исследователи обучили модель различать волков и ездовых собак. Точность была высокой. Но когда стали разбираться — оказалось, что модель выучила совершенно другое правило.

🐺
волк
vs
🐕
хаски
Модель учится различать:
форма морды форма ушей окрас шерсти

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

❄️
снег
=
🐺
волк?
Модель выучила:
снег в кадре → волк

В обучающих данных волки были сфотографированы на снегу, а хаски — на траве. Модель выучила фон, а не животных.

Это не ошибка алгоритма — это следствие данных. Проблема была в обучающей выборке. Модель сделала ровно то, что должна была.

Другие примеры опасных корреляций

Дорогие часы → премиум-покупки

Модель учит: «дорогие часы = покупатель премиума». Связь есть, но если убрать часы — сигнал исчезает. Это коррелят, а не причина.

🌞

Солнечная погода → рост продаж

В данных за лето продажи выше. Модель может «выучить» погоду как предиктор — хотя реальная причина — сезонность.

👔

Пол как прокси для профессии

Если в исторических данных определённые должности занимали преимущественно мужчины — модель закрепит этот паттерн.

📍

Район как прокси для риска

Кредитные модели могут отказывать людям из «неблагополучных» районов — даже если сам человек платёжеспособен.

Цена разных ошибок — у каждого бизнеса своя

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

False Positive — ложная тревога
Модель говорит «это угроза», но угрозы нет
Банк / антифрод
Легитимная транзакция заблокирована
Раздражённый клиент звонит в поддержку. Иногда уходит к конкуренту.
терпимо — выбирают строгий порог
Маркетинг / лидген
Лояльный клиент помечен как «уходящий»
Тратим ресурсы на удержание того, кто и так остался бы.
дёшево — лучше перебдеть
False Negative — пропущенная угроза
Модель говорит «всё в порядке», но это не так
Банк / антифрод
Мошенническая транзакция пропущена
Прямые финансовые потери. Претензии регулятора. Репутационный ущерб.
дорого — поэтому строгий порог
Маркетинг / лидген
Уходящий клиент не идентифицирован
Клиент ушёл — деньги потеряны. Стоимость привлечения нового выше.
дорого — поэтому мягкий порог

Банк и маркетолог настроят одну и ту же модель на разные пороги — потому что для банка критичен пропуск фрода, а для маркетолога — пропуск уходящего клиента. Одна модель, разные бизнес-решения.

Как устроен ML-проект

Реальный ML-проект — это не «обучить модель». Это итеративный инженерный процесс с семью этапами, каждый из которых может стать точкой отказа.

01

Формулировка задачи

Что именно предсказывается? Как измеряется успех? Как это связано с бизнес-метриками?

⚠ Самая частая точка провала
02

Сбор и аудит данных

Есть ли вообще сигнал в данных? Насколько они репрезентативны? Нет ли утечки будущего в прошлое?

03

Feature engineering

Что «видит» модель? Правильные признаки дают больше эффекта, чем сложные алгоритмы.

💡 Критичнее выбора алгоритма
04

Обучение модели

Подбор архитектуры, гиперпараметров, регуляризация. Итеративный процесс с экспериментами.

05

Оценка и валидация

Метрики на отложенной выборке. Анализ ошибок. Проверка на bias и fairness.

06

Интеграция в продукт

API, latency, fallback-логика, A/B тестирование. 70% усилий нередко уходит именно сюда.

⚠ Часто недооценивается на старте
07

Мониторинг и поддержка

Модели деградируют. Data drift, concept drift, изменения в поведении пользователей. ML — это процесс, а не продукт.

Где чаще всего ломаются ML-проекты

// % провальных проектов, где встречался этот фактор
Неправильная постановка задачи 67%
Плохие или недостаточные данные 58%
Отсутствие инфраструктуры внедрения 49%
Завышенные ожидания от заказчика 41%
Причины не исключают друг друга — один провальный проект обычно содержит несколько факторов одновременно. Поэтому сумма превышает 100%.

Что важно понимать заказчику

Семь вещей, которые определяют разницу между успешным ML-проектом и дорогим экспериментом.

01

ML не гарантирует результат

Это не детерминированная система. Это гипотеза, проверяемая данными. Всегда есть риск, что сигнала в данных нет.

02

Данные важнее модели

Плохие данные дают плохой результат — независимо от сложности алгоритма. Garbage in, garbage out.

03

Признаки важнее алгоритма

В большинстве задач правильный feature engineering даёт больше эффекта, чем переход на более сложную модель.

04

Результат — это вероятность

ML выдаёт «с вероятностью 83% это мошенничество», а не «это мошенничество». Нужно управлять порогами и рисками.

05

ML — не только нейросети

Градиентный бустинг, деревья решений, линейные модели — часто быстрее, дешевле, лучше объяснимы.

06

Мониторинг обязателен

Модели деградируют. Мир меняется. ML — это процесс, а не one-shot решение. Нужен контроль качества после внедрения.

07

Оптимизируйте правильно

Модель оптимизирует то, что вы попросили. Убедитесь, что метрика ML совпадает с бизнес-целью — это бывает не очевидно.

Признаки успешного проекта

Чёткая бизнес-метрика · качественные данные · итеративный подход · интеграция в процессы · контроль после внедрения

Как понять, нужен ли ML в вашем кейсе

Прежде чем говорить о моделях и алгоритмах — ответьте на четыре вопроса. Если хотя бы один ответ «нет», ML-проект, скорее всего, будет преждевременным.

Вопрос 01
Есть ли исторические данные с нужным сигналом?
Не «у нас есть база клиентов», а именно: есть ли размеченные примеры того, что мы хотим предсказать? Оттоки, мошенничество, конверсии — с известными ответами.
Вопрос 02
Задача повторяется достаточно часто?
ML оправдан, когда одно и то же решение нужно принимать тысячи или сотни тысяч раз. Разовая задача, сколько бы она ни стоила, — это не про ML.
Вопрос 03
Есть измеримая метрика успеха?
«Сделайте умнее» — не метрика. Нужно конкретное число: снизить отток на X%, поймать Y% фрода при Z% ложных блокировок. Без метрики невозможно ни обучить модель, ни оценить результат.
Вопрос 04
Допустима ли ошибка модели?
ML — вероятностный инструмент. Он всегда будет ошибаться в каком-то проценте случаев. Если ошибка недопустима и результат должен быть детерминированным — ML не подходит.
Ответьте на вопросы выше
Результат диагностики появится здесь