Классификация: предсказываем класс

Вторая большая задача с учителем — определить, к какому классу относится объект.

Классификация — задача обучения с учителем, в которой модель относит объект к одной из заранее заданных категорий (классов).

Когда это классификация

Если ответ — это ярлык из конечного набора, а не число на шкале, перед вами классификация. Примеры:

  • Письмо: спам или не спам.
  • Снимок: есть патология или нет.
  • Фото: кошка, собака или птица.
  • Транзакция: мошенническая или обычная.
  • Отзыв: позитивный, нейтральный или негативный.

Между классами нет отношения «больше-меньше»: «кошка» не больше «собаки». Этим классификация отличается от регрессии, где ответы можно упорядочить.

Бинарная и многоклассовая

ТипСколько классовПример
БинарнаяДваСпам / не спам
МногоклассоваяТри и большеКошка / собака / птица

Самый частый случай — бинарная классификация: «да/нет», «здоров/болен», «уйдёт/останется». Многие сложные задачи сводят к набору бинарных.

Классы и вероятности

Большинство классификаторов выдают не просто ярлык, а вероятность каждого класса. Например, «спам с вероятностью 0.92». Дальше применяют порог: если вероятность спама выше 0.5 — считаем письмо спамом. Порог можно двигать: для важной почты его поднимают, чтобы случайно не отправить в спам нужное письмо.

# Превращаем вероятность в класс по порогу
def classify(prob_spam, threshold=0.5):
    return "спам" if prob_spam >= threshold else "не спам"

for p in [0.1, 0.45, 0.5, 0.92]:
    print(f"вероятность={p} -> {classify(p)}")

# Поднимем порог: модель станет осторожнее
print("С порогом 0.8:", classify(0.7, threshold=0.8))

Вывод:

вероятность=0.1 -> не спам
вероятность=0.45 -> не спам
вероятность=0.5 -> спам
вероятность=0.92 -> спам
С порогом 0.8: не спам

Почему задача нетривиальна

Спамеры маскируют слова, болезни проявляются по-разному, кошки бывают в неожиданных позах. Жёсткими правилами всё это не покрыть — поэтому классификацию решают через обучение на размеченных примерах. Модель сама находит, какие сочетания признаков характерны для каждого класса. Как именно она проводит границу между классами — тема следующего урока.

Цена ошибки бывает разной

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

Именно поэтому порог классификации настраивают под задачу: где-то важнее ничего не пропустить, где-то — не поднимать ложных тревог. Этот компромисс мы измерим конкретными числами в разделе про метрики, а пока запомните саму мысль: «правильно классифицировать» не всегда значит «угадать побольше ответов» — иногда важнее не допустить определённого типа ошибки.

Итог

  • Классификация предсказывает категорию из конечного набора, между классами нет порядка.
  • Бинарная — два класса, многоклассовая — три и больше.
  • Классификаторы обычно выдают вероятности; ярлык получают, сравнивая вероятность с порогом.
  • Порог можно настраивать под цену ошибки в конкретной задаче.
Проверьте себя
1. Какая задача является классификацией, а не регрессией?
AПредсказать завтрашнюю температуру в градусах
BОценить время доставки заказа
CПредсказать выручку магазина за месяц
DОпределить, является ли транзакция мошеннической
2. Чем бинарная классификация отличается от многоклассовой?
AВ бинарной два класса, в многоклассовой — три и больше
BБинарная использует только числа
CМногоклассовая всегда без учителя
DОни ничем не отличаются
3. Что обычно выдаёт классификатор перед тем, как назвать конкретный класс?
AТочное число на непрерывной шкале
BВероятность каждого класса, которую сравнивают с порогом
CТолько текстовое описание объекта
DКоординаты на карте