Типы задач ML 🎯
Прежде чем взяться за инструмент, мастер сначала решает, что именно нужно сделать: отпилить, просверлить, склеить. От ответа зависит, какой инструмент взять со стены — и уже потом, как именно им пользоваться. В машинном обучении есть свой аналог этого первого вопроса, и он куда важнее, чем кажется новичку, который сразу бросается выбирать между XGBoost и нейросетью. Прежде чем выбирать модель, нужно ответить: что конкретно мы хотим получить на выходе? Число, категорию, группу похожих объектов, порядок или совершенно новый контент?
Представь, что к тебе как к специалисту по данным приходит менеджер и формулирует задачу словами вроде «нам нужно понять наших клиентов лучше» или «хотим предсказывать, что будет происходить с продажами» или «сделайте, чтобы система сама рекомендовала товары». Ни одна из этих формулировок не является ML-задачей в строгом смысле — это бизнес-язык, и твоя первая профессиональная обязанность заключается в том, чтобы перевести его в точный технический вопрос: что именно является целевой переменной, в каком виде она измеряется, и, следовательно, к какому типу ML-задачи относится вся история. Неправильный перевод на этом самом первом шаге стоит дороже, чем неправильно подобранный алгоритм внутри уже выбранного типа задачи: если задачу определить неверно, вся последующая работа — выбор модели, метрики, способа разметки данных, даже архитектуры пайплайна — окажется выстроена вокруг неверного фундамента.
В этом уроке ты разберёшь классификацию ML-задач по одному конкретному признаку — по форме целевой переменной, то есть по тому, что именно модель должна выдать на выходе. Это регрессия (предсказание непрерывного числа), классификация — бинарная и многоклассовая (предсказание категории), кластеризация (группировка похожих объектов без заранее заданных меток), ранжирование (упорядочивание объектов по релевантности) и генерация (создание нового контента). Обрати внимание: это не то же самое разделение, что «обучение с учителем против обучения без учителя» — тот разрез ты подробно разберёшь в следующем уроке 303, и он смотрит на задачу под другим углом, через наличие или отсутствие размеченных примеров. Разрез этого урока — про форму ответа, который должна выдать модель, и именно эта форма определяет, какую функцию потерь оптимизировать, какой метрикой измерять качество и как вообще нужно устроить данные для обучения.
Дальше по уроку ты увидишь, как эта классификация сложилась исторически — из разрозненных статистических и инженерных традиций, которые долгое время развивались независимо друг от друга, — разберёшь каждый тип задачи с формальным определением и минимум тремя разобранными бизнес-примерами, потренируешься определять тип задачи по тридцати описаниям реальных бизнес-проблем и, наконец, получишь практический алгоритм-чеклист, который поможет тебе быстро и уверенно классифицировать любую новую задачу, с которой ты столкнёшься в работе.
История
Классификация ML-задач по форме целевой переменной не была придумана одним человеком и не появилась сразу в готовом виде — она сложилась из нескольких независимых статистических и инженерных традиций, которые долгое время развивались параллельно и лишь постепенно были осознаны как частные случаи одной общей картины. Регрессия — старейшая из них: сам термин восходит к работам Фрэнсиса Гальтона, который в 1886 году, изучая рост родителей и детей, обнаружил, что рост детей высоких родителей в среднем «регрессирует» (возвращается) к среднему значению по популяции — отсюда и название «регрессия к среднему» (regression toward the mean), которое затем закрепилось за целым классом статистических методов предсказания непрерывной величины по другим переменным. Классификация как отдельная статистическая задача оформилась чуть позже: в 1936 году Рональд Фишер опубликовал метод линейного дискриминантного анализа для различения видов ирисов по измерениям цветков — тот самый знаменитый датасет Iris, который до сих пор встречается почти в каждом вводном курсе по ML.
Кластеризация развивалась совершенно отдельной, независимой линией — со стороны численной таксономии и распознавания образов, а не классической статистики предсказания. Алгоритм k-means в его современном виде независимо предлагался несколькими исследователями в 1950–60-х годах — в частности, Гуго Штайнхаусом в 1956 году и Джеймсом МакКуином в 1967-м, который и закрепил за методом название «k-means». Важно, что задача кластеризации с самого начала формулировалась принципиально иначе, чем регрессия и классификация: здесь нет «правильного ответа», на котором можно проверить модель, — только сходство объектов между собой. Когда в середине XX века формировалась общая теория машинного обучения — во многом благодаря работам Владимира Вапника и Алексея Червоненкиса по статистической теории обучения в 1960–70-х годах, — регрессия и классификация были формально объединены в одну рамку «обучения с учителем» как два частных случая минимизации функции потерь по размеченным примерам, тогда как кластеризация закрепилась в качестве архетипа «обучения без учителя» именно потому, что в ней такой размеченной цели никогда не было.
Ранжирование и генерация оформились в отдельные признанные типы задач заметно позже и по вполне прагматичным, инженерным причинам. С расцветом веб-поиска в 1990–2000-х годах стало ясно, что задача «упорядочить страницы по релевантности запросу» плохо ложится ни в классификацию (нет фиксированного числа классов, важен именно относительный порядок), ни в обычную регрессию (абсолютное значение релевантности почти никогда никого не интересует — важно, что выше, а что ниже) — так в середине 2000-х годов, во многом благодаря исследовательским группам Microsoft и Yahoo, оформилось отдельное направление обучения ранжированию (learning to rank) со своими специализированными функциями потерь и метриками качества, такими как NDCG. Генерация как отдельный, полноценно самостоятельный тип задачи стала общепризнанной ещё позже — с появлением генеративно-состязательных сетей (GAN) Яна Гудфеллоу в 2014 году, а затем диффузионных моделей и больших языковых моделей: здесь целевой переменной впервые стал не скаляр, не метка, не группа и не порядок, а целый новый содержательный объект — связный текст, реалистичное изображение, работающий код. Сегодняшняя пятичастная классификация — итог этого полувекового процесса, в котором разные инженерные и статистические сообщества, решая свои конкретные практические задачи, постепенно пришли к общему языку описания того, какую форму вообще может принимать ответ модели.
Регрессия
Интуиция
Регрессия отвечает на вопрос «сколько». Не «к какой категории относится», не «на какую группу похоже», а именно сколько — какое конкретное число. Представь себе термометр: он не говорит тебе «сегодня тепло» или «сегодня холодно» (это была бы классификация), он выдаёт конкретное значение — 23,4 градуса. Ровно тот же принцип лежит в основе любой регрессионной ML-задачи: на выходе модели должно быть одно число (или несколько чисел, если целевых переменных больше одной) из непрерывного диапазона, а не выбор из заранее заданного конечного списка вариантов.
Формальное определение
Задача регрессии. Дано множество объектов с признаками $x$ и известными числовыми целевыми значениями $y \in \mathbb{R}$. Нужно построить функцию $f(x) \approx y$, минимизирующую некоторую функцию потерь — чаще всего среднеквадратичную ошибку $\text{MSE} = \dfrac{1}{n}\sum_{i=1}^{n}(f(x_i) - y_i)^2$ — и способную предсказывать значение $y$ для новых, ранее не встречавшихся объектов $x$.
Примеры
Пример 1: предсказание стоимости квартиры. Сервисы вроде Zillow (или отечественные аналоги — «Домклик», ЦИАН) предсказывают рыночную цену квартиры по её площади, району, этажу, году постройки дома и десяткам других признаков. Целевая переменная — цена в рублях или долларах, число из практически непрерывного диапазона: квартира может стоить и 3 миллиона рублей, и 3 015 470 рублей — никакой заранее заданной сетки категорий здесь нет, и любое сужение до дискретных «ценовых категорий» потеряло бы именно ту точность, ради которой сервис существует.
Пример 2: прогноз спроса на складе. Ритейлер хочет предсказать, сколько единиц конкретного товара будет продано на конкретном складе за следующую неделю, чтобы вовремя пополнить запасы и не допустить ни дефицита, ни затоваривания. Целевая переменная — число проданных единиц, скажем, от 0 до нескольких тысяч. Ошибка предсказания здесь напрямую переводится в деньги: недооценка спроса означает упущенные продажи, переоценка — замороженные в излишках запасов деньги, поэтому качество модели измеряется именно тем, насколько предсказанное число близко к фактическому (например, метрикой MAE — средней абсолютной ошибкой в штуках товара).
Пример 3: предсказание пожизненной ценности клиента (Customer Lifetime Value). Подписочный сервис — стриминговая платформа, SaaS-продукт, мобильное приложение — хочет заранее оценить, сколько денег принесёт конкретный новый пользователь за всё время взаимодействия с продуктом, чтобы решить, сколько разумно тратить на его привлечение через рекламу. Целевая переменная — сумма в рублях за прогнозный период, непрерывное число, которое может варьироваться от нуля (пользователь ничего не заплатит и уйдёт) до очень больших значений для лояльных клиентов.
Пример 4: прогноз времени прибытия такси. Сервисы вроде Яндекс.Такси или Uber предсказывают ETA (estimated time of arrival, ожидаемое время прибытия) — сколько минут займёт поездка или сколько осталось ждать машину. Целевая переменная — число минут, и здесь также нет смысла заранее дробить его на категории «быстро/долго»: пользователю показывают именно число, и от точности этого числа напрямую зависит доверие к сервису.
Почему это важно
От того, что задача опознана как регрессия, а не как что-то ещё, зависит буквально весь дальнейший выбор: модели вроде линейной регрессии, случайного леса-регрессора или градиентного бустинга с регрессионной функцией потерь, метрики качества вроде MAE, RMSE и $R^2$ вместо точности (accuracy) или F1-меры, и даже сам способ подготовки данных — например, необходимость проверять целевую переменную на выбросы и, возможно, логарифмировать её при сильно скошенном распределении (что типично для цен и денежных сумм). Если по ошибке принять регрессионную задачу за классификацию — скажем, искусственно разбить непрерывную цену квартиры на «дешёвые», «средние» и «дорогие» без реальной бизнес-необходимости в таком делении, — ты не просто усложнишь себе жизнь: ты заранее откажешься от точности, которую могла бы дать модель, предсказывающая конкретное число, в пользу куда более грубого результата.
Классификация: бинарная и многоклассовая
Интуиция
Классификация отвечает на другой вопрос — «какая категория». Не сколько, а что именно: одно из заранее известного, конечного набора значений. Если этих значений ровно два — задача называется бинарной классификацией (спам или не спам, мошенничество или нет, уйдёт клиент или останется). Если возможных категорий больше двух и они взаимно исключают друг друга — задача называется многоклассовой классификацией (порода собаки на фото — одна из 120 пород, тема новости — одна из восьми рубрик, язык текста — один из полусотни языков).
Формальное определение
Задача классификации. Дано множество объектов с признаками $x$ и известными категориальными метками $y \in \{c_1, c_2, \dots, c_K\}$ — конечным дискретным множеством классов. При $K=2$ задача называется бинарной классификацией (например, $y \in \{\text{спам}, \text{не спам}\}$); при $K>2$ — многоклассовой (например, $y \in \{\text{спорт}, \text{политика}, \text{наука}, \dots\}$). Модель строит функцию $f(x)$, возвращающую вероятности принадлежности объекта к каждому из классов, а итоговое решение обычно принимается как класс с максимальной вероятностью — либо с учётом порога и различной «стоимости» разных типов ошибок.
Примеры
Пример 1: детекция спама (бинарная классификация). Почтовый сервис вроде Gmail на каждое входящее письмо должен ответить ровно на один вопрос — спам это или нет. Признаки — текст письма, отправитель, наличие ссылок, время отправки; целевая переменная — одна из двух меток. Обучающая выборка формируется из миллионов писем, размеченных вручную или на основе действий пользователей (жалоба «это спам»).
Пример 2: прогноз оттока клиентов (бинарная классификация). Телеком-оператор или банк хочет заранее знать, какие клиенты с высокой вероятностью откажутся от услуг в ближайший месяц, чтобы успеть предложить им удержание — скидку, бонус, звонок от менеджера. Целевая переменная — бинарная метка «ушёл / не ушёл», построенная по историческим данным о фактическом оттоке клиентов за прошлые периоды.
Пример 3: классификация тикетов техподдержки (многоклассовая классификация). Крупная компания получает тысячи обращений в техподдержку ежедневно и хочет автоматически направлять каждое обращение в нужный отдел — биллинг, техническая проблема, вопрос по продажам, юридический запрос и так далее. Здесь классов больше двух, они взаимно исключают друг друга (обращение относится к ровно одной категории), и задача — многоклассовая классификация.
Пример 4: распознавание рукописных цифр (многоклассовая классификация). Классический датасет MNIST — изображения рукописных цифр от 0 до 9, ровно десять взаимно исключающих классов. Это один из первых массовых бенчмарков глубокого обучения именно потому, что задача идеально иллюстрирует чистую многоклассовую классификацию: один объект (изображение) — ровно одна метка из фиксированного набора.
Пример 5: медицинская диагностика. Система, определяющая по снимку, есть ли у пациента конкретное заболевание, — это бинарная классификация («болен» / «здоров»). Если же система должна определить, какое именно из нескольких возможных заболеваний присутствует на снимке, задача становится многоклассовой — и это принципиально меняет и архитектуру выходного слоя модели, и то, какие ошибки считаются наиболее критичными.
Почему это важно
Выбор между бинарной и многоклассовой постановкой напрямую определяет архитектуру выходного слоя модели (сигмоида для одного вероятностного значения против softmax для распределения вероятностей по $K$ классам), способ построения матрицы ошибок (confusion matrix $2\times 2$ против матрицы $K\times K$) и набор доступных метрик. Для бинарной классификации особенно важен учёт дисбаланса классов — если мошеннических транзакций 0,1% от всех, модель, всегда предсказывающая «не мошенничество», получит точность (accuracy) 99,9%, оставаясь при этом абсолютно бесполезной, и понадобятся метрики вроде точности срабатывания (precision), полноты (recall) и F1-меры, чтобы это увидеть. Кроме того, реальная бизнес-стоимость ошибок первого и второго рода (ложное срабатывание против пропуска) в задачах вроде обнаружения мошенничества или медицинской диагностики почти никогда не симметрична, и это напрямую влияет на выбор порога классификации — ещё один параметр, который просто не существует, если задачу с самого начала спутать с регрессией.
Кластеризация
Интуиция
Кластеризация отвечает на принципиально другой вопрос — не «сколько» и не «какая категория из заранее известных», а «что на что похоже». Здесь у алгоритма нет никакого готового «правильного ответа», на котором его можно было бы обучать: только объекты и их признаки, между которыми нужно нащупать структуру самостоятельно. Представь ритейлера, у которого есть данные о покупках миллионов клиентов, но нет заранее готового списка «сегментов покупателей» — эти сегменты как раз и нужно обнаружить, глядя на реальные данные, а не подгонять данные под уже придуманные заранее ярлыки.
Формальное определение
Задача кластеризации. Дано множество объектов с признаками $x_1, x_2, \dots, x_n$ без каких-либо целевых меток $y$. Нужно разбить объекты на группы (кластеры) так, чтобы объекты внутри одной группы были похожи друг на друга согласно некоторой метрике сходства или расстояния, а объекты из разных групп — заметно различались. Число кластеров $K$ может быть задано заранее (как в классическом k-means) либо определяться алгоритмом по структуре самих данных.
Примеры
Пример 1: сегментация клиентов без заранее заданных категорий. Маркетинговая команда розничной сети хочет разбить покупателей на группы для персонализированных кампаний, но заранее не знает, сколько именно сегментов есть и по какому принципу их лучше выделять. Алгоритм кластеризации, применённый к данным о частоте, сумме и составе покупок (классический RFM-анализ — recency, frequency, monetary, то есть давность, частота и сумма покупок), может обнаружить, скажем, группу «покупают редко, но дорого», группу «постоянные небольшие покупки» и группу «активные в период распродаж» — причём эти группы не были заданы человеком заранее, а найдены моделью на основе фактического сходства поведения.
Пример 2: группировка новостных статей по темам без готового рубрикатора. В отличие от классификации тикетов техподдержки из предыдущего раздела, где категории отделов заданы заранее и известны, здесь агрегатор новостей хочет автоматически сгруппировать тысячи входящих статей по темам, при этом сами темы заранее не определены и могут меняться день ото дня (сегодня доминирует одна повестка, завтра — совсем другая). Это классический пример того, почему одна и та же на первый взгляд задача — «разложить тексты по темам» — оказывается классификацией, если категории заданы заранее, и кластеризацией, если их предстоит обнаружить.
Пример 3: обнаружение подозрительных паттернов в страховых заявках. Страховая компания хочет найти необычные, потенциально мошеннические группы заявок среди сотен тысяч обращений, при этом заранее неизвестно, какие именно схемы мошенничества встречаются и сколько их вообще существует — размеченных примеров «это мошенничество, а это нет» либо очень мало, либо нет совсем. Кластеризация здесь позволяет найти плотные, но при этом заметно отличающиеся от общей массы группы заявок, которые дальше уже вручную анализирует эксперт — в отличие от классификации мошенничества, для которой нужны исторически подтверждённые размеченные случаи.
Пример 4: сжатие изображения через квантование цвета. Менее «бизнесовый», но показательный технический пример: алгоритм k-means применяется напрямую к цветам пикселей изображения, чтобы найти, скажем, 16 или 256 «типичных» цветов, которыми можно приближённо заменить миллионы оттенков исходного изображения, — классическая задача кластеризации без каких-либо меток, только с попиксельным сходством цвета.
Почему это важно
Ключевое, принципиальное отличие кластеризации от классификации — в наличии или отсутствии «истинного ответа» для сравнения. В классификации на этапе обучения у каждого объекта уже есть правильная метка, и качество модели можно напрямую измерить, сравнив предсказания с этими метками — построить матрицу ошибок (confusion matrix), посчитать точность (accuracy) или F1-меру. В кластеризации такого сравнения попросту не с чем делать: нет никакой заранее известной «истинной» разбивки на группы, поэтому оценка качества опирается на внутренние метрики вроде силуэтного коэффициента (насколько объекты внутри кластера ближе друг к другу, чем к объектам других кластеров) либо, что бывает не реже, на итоговую содержательную интерпретацию результата человеком-экспертом. Путать эти две задачи — значит рисковать построить пайплайн, который либо ищет несуществующие «истинные метки» там, где их нет, либо, наоборот, отказывается от точной, проверяемой оценки качества там, где размеченные данные на самом деле доступны.
Ранжирование и генерация: задачи с другой структурой ответа
Интуиция
Ранжирование отвечает на вопрос «в каком порядке», а не «сколько» и не «какая категория». Представь поисковую систему: она не должна классифицировать каждую отдельную страницу как «релевантную» или «нерелевантную» — почти любая найденная страница в каком-то смысле релевантна запросу. Важно другое — правильно расставить страницы по порядку, чтобы самая полезная оказалась первой. Генерация отвечает на ещё один, отдельный вопрос — «что создать»: здесь на выходе модели вообще не одно число, не одна метка и не порядок среди уже существующих объектов, а целиком новый содержательный объект — текст, изображение, звук, программный код, — которого раньше не существовало.
Формальное определение
Задача ранжирования (learning to rank). Дано множество объектов (например, документов или товаров) для конкретного запроса или пользователя, а также информация об их относительной релевантности — на основе кликов, покупок, явных оценок. Нужно построить функцию, упорядочивающую объекты по релевантности так, чтобы наиболее подходящие оказывались выше в списке. Качество измеряется метриками порядка, такими как NDCG (Normalized Discounted Cumulative Gain) или MRR (Mean Reciprocal Rank), а не точностью предсказания абсолютного значения релевантности каждого отдельного объекта.
Задача генерации. Модель строит не единственное число, метку, группу или порядок, а целый новый объект — текст, изображение, аудио, программный код, — правдоподобный в рамках распределения тех данных, на которых модель обучалась. Целевой переменной здесь фактически выступает сама структура выходного объекта целиком, а не одно скалярное значение.
Примеры
Пример 1: поисковая выдача. Когда ты вводишь запрос в Google или Яндекс, система не просто отфильтровывает нерелевантные страницы — среди сотен потенциально подходящих документов она должна расставить их по порядку так, чтобы самый полезный ответ оказался первой строчкой. Обучение здесь опирается на историю кликов миллионов пользователей: если пользователи систематически кликают на документ, стоящий третьим, чаще, чем на документ, стоящий первым, это сигнал, что порядок нужно менять, — и это принципиально задача про относительный порядок, а не про абсолютную «правильность» каждого отдельного документа.
Пример 2: лента рекомендаций товаров или видео. Сервисы вроде YouTube или маркетплейсов должны решить не просто «понравится ли пользователю этот товар» (это была бы отдельная задача бинарной классификации для каждого товара по отдельности), а в каком порядке показать десятки кандидатов, чтобы максимизировать вероятность вовлечения именно с первых позиций ленты — это ключевая причина, почему промышленные рекомендательные системы обычно строятся как двухэтапный пайплайн: сначала кандидатная модель отбирает несколько сотен потенциально интересных объектов (часто с элементами классификации или даже кластеризации), а затем отдельная модель ранжирования расставляет эти кандидаты в окончательном порядке.
Пример 3: генерация текстовых ответов чат-ботом службы поддержки. Компания хочет, чтобы бот не просто выбирал из заранее заготовленного списка шаблонных ответов (это была бы классификация — выбор одного варианта из конечного набора), а формулировал связный, контекстно-уместный ответ на нестандартный вопрос клиента. Здесь целевой переменной выступает не метка и не число, а вся последовательность слов ответа целиком — классическая генеративная задача.
Пример 4: генерация изображений по текстовому описанию. Сервисы вроде DALL-E или Midjourney по короткому текстовому запросу создают полностью новое изображение, которого не существовало ни в каком виде в обучающей выборке. Это ещё один пример генеративной задачи, где на выходе — не выбор из готового набора картинок (что было бы похоже на классификацию по огромному числу классов), а совершенно новый визуальный объект.
Подробный разбор внутреннего устройства генеративных моделей и алгоритмов ранжирования — материал отдельных, более поздних блоков курса; здесь важно зафиксировать главное: и ранжирование, и генерация требуют собственных, специфических функций потерь и метрик качества, принципиально отличных от тех, что используются в регрессии, классификации или кластеризации.
Почему это важно
И ранжирование, и генерация легко ошибочно сводят к уже знакомой классификации или регрессии — просто потому, что внутри они нередко всё равно используют похожие строительные блоки (модель ранжирования может внутри опираться на классификатор-скорер, а языковая модель формально предсказывает следующий токен как категорию из десятков тысяч возможных). Но бизнес-цель и правильная метрика качества здесь совершенно другие: для ранжирования важен относительный порядок, а не абсолютная точность каждого отдельного предсказания, а для генерации важно правдоподобие и полезность целого связного объекта на выходе, а не точность одного числа или метки. Оптимизировать не ту метрику, которая реально нужна бизнесу, — одна из самых дорогостоящих ошибок в ML-проекте, и правильная классификация типа задачи с самого начала — прямая защита от неё.
Практика: 30 заданий
Базовые задания (1–10)
Задание 1: Банк хочет предсказать точную сумму, которую клиент потратит по кредитной карте в следующем месяце. Определи тип задачи.
Задание 2: Почтовый сервис должен определить: письмо спам или нет. Определи тип задачи.
Задание 3: Новостной портал хочет автоматически определять рубрику статьи из восьми заранее заданных категорий (спорт, политика, наука, культура и так далее). Определи тип задачи.
Задание 4: Ритейлер хочет разбить покупателей на группы по покупательскому поведению, не имея заранее заданных сегментов. Определи тип задачи.
Задание 5: Поисковая система должна упорядочить 50 найденных страниц по релевантности запросу пользователя. Определи тип задачи.
Задание 6: Стартап хочет создать сервис, который по текстовому описанию рисует новую картинку. Определи тип задачи.
Задание 7: Банк хочет предсказать, вернёт клиент кредит или нет (да/нет). Определи тип задачи.
Задание 8: Нужно предсказать курс акции компании через неделю в рублях. Определи тип задачи.
Задание 9: Интернет-магазин хочет сгруппировать похожие товары по внешнему виду для блока «похожие товары», не имея заранее заданных товарных категорий. Определи тип задачи.
Задание 10: Нужно определить породу собаки на фотографии из 120 возможных пород. Определи тип задачи.
Продвинутые задания (11–20)
Задание 11: Интернет-магазин хочет показывать товары в ленте рекомендаций в порядке убывания вероятности покупки. Это регрессия (предсказать вероятность покупки для каждого товара) или ранжирование? Объясни разницу в подходе.
Задание 12: Сервис такси хочет предсказать время прибытия (ETA) в минутах. Определи тип задачи.
Задание 13: Соцсеть хочет определить, является ли комментарий токсичным, нейтральным или доброжелательным (три категории). Определи тип задачи.
Задание 14: Маркетинговая команда без предварительных сегментов хочет понять, какие «типы» клиентов у неё вообще есть, чтобы придумать персонализированные кампании. Определи тип задачи.
Задание 15: Нужно разработать функцию автодополнения текста в поисковой строке, предлагающую следующее слово. Формально это часто реализуется как классификация над словарём из десятков тысяч слов — почему тогда правильнее относить такую задачу к генерации?
Задание 16: Нужно предсказать, сколько дней пациент проведёт в больнице. Обсуди, всегда ли это регрессия.
Задание 17: Интернет-магазин хочет для каждого пользователя выдать топ-10 товаров из каталога в 100 000 позиций. Почему такую задачу на практике почти никогда не решают одной моделью, а строят из двух этапов?
Задание 18: Чат-бот службы поддержки должен писать связные, содержательные ответы клиентам на произвольные вопросы, а не выбирать из заранее заготовленных шаблонов. Определи тип задачи.
Задание 19: Страховая компания хочет обнаружить необычные, подозрительные страховые случаи среди тысяч заявок, при этом заранее неизвестно, какие именно виды мошенничества встречаются и сколько их вообще. Сравни с ситуацией, когда у компании уже есть тысячи исторических заявок с подтверждённой меткой «мошенничество / не мошенничество».
Задание 20: Нужно предсказать точное число единиц товара, которое будет продано на складе за неделю, чтобы избежать дефицита. Определи тип задачи.
Задания-челленджи (21–30)
Задание 21: Netflix хочет решить, какие 20 фильмов показать пользователю на главном экране и в каком порядке. Опиши, какие минимум два типа ML-задач здесь смешаны, и почему нельзя обойтись только одним типом.
Задание 22: Даны две постановки задачи предсказания оттока клиентов: (а) предсказать вероятность оттока в ближайший месяц (число от 0 до 1), (б) предсказать, уйдёт клиент или нет (да/нет). Объясни, чем эти постановки отличаются по типу задачи и как порог (threshold) связывает их между собой.
Задание 23: Компания хочет а) сегментировать клиентов без заранее известных сегментов и б) впоследствии быстро относить каждого нового клиента к уже найденному сегменту. Опиши, какие два типа ML-задач здесь используются последовательно.
Задание 24: Коллега утверждает: «предсказание цены квартиры — это классификация, потому что мы классифицируем квартиру по ценовой категории». Разбери, в чём здесь логическая ошибка, и при каких условиях эта постановка всё-таки была бы корректной.
Задание 25: Поисковая система по изображениям должна и найти релевантные картинки по текстовому запросу, и сгенерировать подпись к найденному изображению. Определи два типа задач здесь.
Задание 26: GPT-подобная модель, отвечая на вопрос «сколько будет 25 умножить на 4», технически на каждом шаге предсказывает следующий токен как одну категорию из десятков тысяч токенов словаря — формально классификация. Но воспринимается это пользователем как «модель сгенерировала ответ». Объясни этот кажущийся парадокс.
Задание 27: Нужно предсказать, сколько звёзд (от 1 до 5) поставит пользователь товару. Обсуди два возможных подхода к типу задачи — регрессия и порядковая/многоклассовая классификация — и когда какой предпочтительнее.
Задание 28: Банк хочет одновременно а) кластеризовать клиентов по финансовому поведению и б) в рамках каждого найденного кластера предсказывать вероятность одобрения кредита. Опиши архитектуру такого пайплайна с точки зрения типов задач.
Задание 29: Компания хочет сервис, который сначала «понимает тональность отзыва» (позитивный/негативный/нейтральный), а затем составляет краткое авторезюме отзыва одним предложением. Раздели это на подзадачи и укажи тип каждой.
Задание 30: Финальный челлендж. Компания «АвтоПарк» — сеть автосервисов в нескольких городах — приходит с запросом: «Хотим оптимизировать работу с клиентами с помощью ИИ: понимать, кто наши клиенты, предсказывать, кто из них уйдёт к конкурентам, вовремя напоминать о плановом ТО и автоматически отвечать на типовые вопросы в чате поддержки». Разбей этот расплывчатый запрос минимум на три-четыре конкретные ML-подзадачи и укажи тип каждой.
Частые ошибки
Ошибка 1. Путают кластеризацию с многоклассовой классификацией, считая, что раз объекты в итоге раскладываются по группам — это одно и то же.
Как выглядит: «мы кластеризуем клиентов на пять сегментов» соседствует с «мы классифицируем клиентов на пять сегментов», как будто это два названия одного и того же процесса.
Почему возникает: и там, и там на выходе — присвоение объекту одной из нескольких групп, и внешне результат выглядит похоже.
Как правильно: ключевое различие — не в форме результата, а в наличии заранее известных, «истинных» меток на этапе обучения. Если категории заданы заранее и есть размеченные примеры — это классификация; если группы предстоит обнаружить по сходству объектов без каких-либо готовых меток — это кластеризация. Это разные задачи с разными метриками качества и разной проверяемостью результата.
Ошибка 2. Путают регрессию с классификацией, искусственно дискретизируя непрерывную величину без реальной бизнес-необходимости.
Как выглядит: превращение цены квартиры или суммы транзакции в категории «низкая/средняя/высокая» просто по привычке, а не потому, что бизнесу правда нужна именно категория.
Почему возникает: классификация субъективно кажется «понятнее» и привычнее — легче объяснить заказчику «вероятность 80%», чем регрессионное число с доверительным интервалом.
Как правильно: прежде чем дискретизировать переменную, честно спросить, нужна ли бизнесу именно категория или точное число; если точное число нужно и доступно в данных, дискретизация — это добровольный отказ от информации.
Ошибка 3. Считают, что задачу ранжирования всегда можно без потерь свести к классификации или регрессии по каждому объекту в отдельности.
Как выглядит: модель обучают предсказывать вероятность клика по каждому товару независимо, а потом просто сортируют товары по этой вероятности, полностью игнорируя относительный порядок как самостоятельную цель обучения.
Почему возникает: классификация и регрессия — более привычные, широко описанные задачи, и кажется естественным решить ранжирование их средствами.
Как правильно: такой подход часто работает как разумное первое приближение, но специализированные модели и функции потерь для ранжирования (оптимизирующие напрямую метрики порядка вроде NDCG) обычно дают заметно лучший итоговый порядок именно потому, что напрямую учитывают относительное расположение объектов, а не только их индивидуальные оценки.
Ошибка 4. Игнорируют дисбаланс классов в задачах бинарной классификации и выбирают метрику качества, которая маскирует реальную бесполезность модели.
Как выглядит: модель детекции мошенничества хвалят за точность (accuracy) 99,8%, не проверив, что мошеннических случаев в выборке всего 0,2% и модель могла бы получить почти такую же точность, вообще ничего не предсказывая, кроме «не мошенничество».
Почему возникает: точность (accuracy) — самая интуитивно понятная метрика, и при сильном дисбалансе классов она вводит в заблуждение, оставаясь формально высокой даже для бесполезной модели.
Как правильно: при выраженном дисбалансе классов ориентироваться на точность срабатывания (precision), полноту (recall), F1-меру или ROC-AUC, а не на общую точность (accuracy), и явно обсуждать с бизнесом, какая из двух ошибок (ложное срабатывание или пропуск) стоит дороже.
Ошибка 5. Считают, что генеративные задачи требуют принципиально иного, изолированного набора инструментов, никак не связанного с классификацией и регрессией.
Как выглядит: воспринимают генерацию текста как отдельную «магию», не имеющую отношения к базовым понятиям классификации, которые уже пройдены в курсе.
Почему возникает: итоговый результат генеративных моделей выглядит настолько непохоже на «предсказать число» или «выбрать метку», что связь с базовыми типами задач кажется неочевидной.
Как правильно: понимать, что современные генеративные модели, особенно языковые, нередко реализуют генерацию как последовательность шагов многоклассовой классификации над словарём возможных следующих элементов — базовые понятия классификации из этого урока пригодятся и здесь, просто на другом уровне описания.
Ошибка 6. Считают, что если целевая переменная числовая, то это автоматически регрессия, не учитывая случаи, когда небольшой набор упорядоченных числовых значений лучше обрабатывать как порядковую или многоклассовую классификацию.
Как выглядит: оценку «от 1 до 5 звёзд» или «уровень риска от 1 до 3» автоматически отправляют в обычную регрессионную модель без дальнейших раздумий.
Почему возникает: формальный признак «переменная числовая» воспринимается как достаточный, хотя на самом деле важна ещё и природа шкалы — является ли она по-настоящему непрерывной или представляет собой небольшое количество дискретных, пусть и упорядоченных, уровней.
Как правильно: для небольшого числа дискретных упорядоченных уровней стоит явно сравнить постановки — обычную регрессию, порядковую классификацию и наивную многоклассовую классификацию — и выбрать ту, что лучше отражает и структуру данных, и реальную бизнес-потребность.
Главное запомнить
-
Тип ML-задачи по форме целевой переменной определяется тем, что именно нужно получить на выходе: число, категорию, группу, порядок или новый контент.
-
Регрессия предсказывает непрерывное число (цена квартиры, спрос на товар, время прибытия) и оценивается метриками вроде MAE, RMSE, $R^2$.
-
Классификация предсказывает категорию из заранее известного конечного набора: бинарная — ровно два класса (спам/не спам), многоклассовая — больше двух взаимно исключающих классов (рубрика новости, порода животного).
-
Кластеризация группирует объекты по сходству без каких-либо заранее известных меток — в отличие от классификации, здесь нет «истинного ответа», на котором можно проверить модель напрямую.
-
Ранжирование упорядочивает объекты по относительной релевантности (поисковая выдача, лента рекомендаций) и оптимизирует метрики порядка вроде NDCG, а не точность абсолютных значений.
-
Генерация создаёт целиком новый содержательный объект — текст, изображение, код, — а не выбирает значение из заранее ограниченного набора.
-
Один и тот же на первый взгляд бизнес-запрос часто распадается на несколько ML-подзадач разных типов, которые решаются последовательно или параллельно в одном пайплайне.
-
Неправильное определение типа задачи на старте проекта обходится дороже, чем неудачный выбор конкретного алгоритма внутри уже верно определённого типа, — потому что затрагивает выбор модели, метрики и способа подготовки данных сразу.
-
Классификация по форме целевой переменной (этот урок) — не то же самое, что деление на обучение с учителем и без учителя (следующий урок 303): это два разных, ортогональных способа смотреть на одну и ту же задачу.
-
Практический способ определить тип задачи — спросить, что конкретно должна выдать модель, есть ли размеченные исторические примеры, и важен ли реальному бизнесу абсолютный результат или только относительный порядок.
Связь с темами курса
Что нужно было знать до этого урока
Урок 301 познакомил тебя с самим понятием машинного обучения — идеей, что модель извлекает закономерности из данных вместо того, чтобы следовать явно запрограммированным правилам. Этот урок делает следующий логичный шаг: раз модель обучается предсказывать что-то, нужно предельно точно понимать, что именно она предсказывает — и как форма этого «что-то» определяет весь дальнейший инструментарий.
Что изучить дальше
Следующий урок 303 разберёт ещё один, совершенно другой способ классифицировать ML-задачи — по наличию или отсутствию размеченных примеров в обучающих данных: обучение с учителем (supervised learning, куда попадают регрессия и классификация из этого урока), обучение без учителя (unsupervised learning, куда попадает кластеризация) и обучение с подкреплением. Ты увидишь, что классификация по форме целевой переменной, разобранная сегодня, и классификация по наличию разметки, которую ты изучишь дальше, — это два ортогональных разреза одной и той же карты ML-задач, и настоящий практик умеет уверенно пользоваться обоими одновременно.
Где это нужно в жизни
💰 Финансы и банкинг. Кредитный скоринг (классификация), прогноз выручки (регрессия), сегментация клиентов по финансовому поведению (кластеризация) — три разных типа задач в одном банковском ML-отделе.
🛒 Электронная коммерция и рекомендательные системы. Прогноз спроса на склад (регрессия), детекция мошеннических платежей (классификация), группировка похожих товаров (кластеризация) и ранжирование товаров в ленте рекомендаций — почти полный набор типов задач из этого урока в одной отрасли.
🏥 Медицина. Диагностика заболевания по снимку (классификация), прогноз длительности госпитализации (регрессия), группировка пациентов по схожим клиническим показателям для исследований (кластеризация).
🤖 Продукты на основе языковых моделей. Классификация тональности отзывов, ранжирование результатов поиска по базе знаний и генерация связных текстовых ответов — три разных типа задачи внутри одного современного чат-бота или ассистента.
Интересные факты
-
Термин «регрессия» изначально вообще не имел отношения к предсказанию — Фрэнсис Гальтон в 1886 году описывал им статистическое явление «возврата к среднему» роста детей относительно роста их родителей, и лишь позже это слово закрепилось за целым классом методов предсказания непрерывной величины.
-
Знаменитый датасет Iris, на котором Рональд Фишер в 1936 году впервые формально описал метод классификации по линейному дискриминантному анализу, до сих пор остаётся одним из самых часто используемых учебных наборов данных в мире — спустя почти девяносто лет после публикации.
-
Конкурс Netflix Prize (2006–2009 годы), сыгравший важную роль в популяризации современных рекомендательных систем, изначально был сформулирован именно как задача регрессии — участники соревновались за наиболее точное предсказание оценки фильма от 1 до 5 звёзд, измеряемое метрикой RMSE, хотя в реальных продакшен-системах Netflix давно перешёл к более сложным ранжирующим постановкам.
-
Термин «learning to rank» (обучение ранжированию) как отдельное, самостоятельное направление машинного обучения закрепился именно в середине 2000-х годов во многом благодаря исследовательским командам поисковых систем Microsoft и Yahoo — до этого задачи упорядочивания результатов решались куда менее систематическими, во многом эвристическими способами.
Лайфхаки
-
Начинай с одного простого вопроса: «что конкретно должна выдать модель на выходе?» Число — вероятно, регрессия. Одна метка из заранее известного списка — классификация. Порядок среди набора объектов — ранжирование. Совершенно новый объект — генерация. Если ответа на этот вопрос у заказчика нет — задача ещё не готова к постановке, и стоит вернуться к обсуждению с бизнесом, прежде чем открывать блокнот с кодом.
-
Проверь, есть ли в данных «истинный ответ», на котором можно обучить и проверить модель. Если для каждого исторического объекта в данных уже есть подтверждённое значение целевой переменной — вероятно, это регрессия или классификация. Если таких значений в принципе не существует и не может существовать (нет «правильного» разбиения клиентов на сегменты, которое можно было бы сверить с реальностью) — это, скорее всего, кластеризация.
-
Если ответ — категория, сразу посчитай, сколько их и исключают ли они друг друга. Ровно две взаимоисключающие категории — бинарная классификация. Больше двух взаимоисключающих — многоклассовая. Если объект может относиться сразу к нескольким категориям одновременно — это уже отдельная, более сложная задача многометочной (multi-label) классификации, к которой стоит присмотреться отдельно.
-
Если ответ выглядит как число, но чисел на самом деле мало и они заранее упорядочены (например, оценка от 1 до 5), не спеши автоматически брать регрессию — сравни её с порядковой или многоклассовой классификацией и выбери постановку, которая лучше отражает и структуру данных, и реальные бизнес-издержки разных типов ошибок.
-
Прежде чем выбирать алгоритм, явно сформулируй метрику, которой бизнес будет измерять успех, — и посмотри, какому типу задачи она соответствует по своей природе. Метрика вроде «топ-N наиболее релевантных объектов в правильном порядке» почти всегда указывает на ранжирование, даже если исходная формулировка звучала как классификация или регрессия.
-
Когда задача кажется большой и расплывчатой («сделайте нам ИИ для работы с клиентами»), не пытайся впихнуть её в один тип — разложи на отдельные подзадачи, как в финальном задании этого урока, и определи тип для каждой по отдельности. Почти любой реальный, содержательный бизнес-запрос на поверку оказывается набором из нескольких разных по типу ML-задач, а не одной универсальной моделью на все случаи жизни.
Определение типа задачи — не формальность и не бюрократический первый пункт технического задания, а решение, от которого зависит вся последующая работа над ML-проектом: какую модель выбрать, какую метрику оптимизировать, как размечать и готовить данные, и в конечном счёте — принесёт ли построенная система бизнесу реальную пользу или окажется технически безупречным ответом на неправильно понятый вопрос. Чем увереннее ты научишься с первых минут разговора с заказчиком опознавать в его словах регрессию, классификацию, кластеризацию, ранжирование или генерацию, тем меньше времени и сил будет уходить на переделку уже проделанной работы — а это ровно то умение, которое отличает практика, готового к реальным проектам, от того, кто умеет обучать модели только на уже готовых, аккуратно оформленных учебных датасетах.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку