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

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

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

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

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

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

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

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

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

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

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

Большинство классификаторов выдают не просто ярлык, а вероятность каждого класса. Например, «спам с вероятностью 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Координаты на карте
Поддержать проект