TGViewer
.ml .ml @mltochka · 4.23K subscribers
Post #110 3.24K
В предыдущем посте мы рассказали, что такое conformal prediction и зачем он нужен. Но наверняка у вас появились вопросы:

1. А как именно модель понимает, насколько конкретный объект «странный» или «рискованный»?
2. Как обучается конформный предиктор?

Ответ на первый вопрос: через меру некомфортности.
Мера некомфортности — это функция, которая показывает, насколько плохо конкретная пара (x, y) согласуется с моделью и уже известными данными.


Мерами некомфортности могут быть как простые функции, например, MAE или hinge_loss:

nonconformity_mae = |y_true - y_pred|
nonconformity_hinge = 1 - P(true_class)

так и более сложные, например, оценка Брайера.

Интуитивный пример

Допустим, модель классифицирует изображения. Для обычной картинки модель говорит:
Barbie: 0.02
Ken: 0.97
Oppenheimer: 0.01

А для размытой картинки животного в лесу:
Barbie: 0.2
Ken: 0.42
Oppenheimer: 0.38

Обычный классификатор во всех случаях выберет класс Ken. Conformal prediction во втором случае может сказать:
{Ken, Oppenheimer}

Потому что мера некомфортности для этих классов будет недостаточно велика, чтобы их явно отвергнуть.

Далее поговорим про то, как это обучать.

TCP: Transductive Conformal Prediction

TCP в строгом смысле не «обучается» как обычная модель. Лучше сформулировать это так:

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


Давайте рассмотрим пошагово алгоритм TCP.

Допустим, есть выборка:
D = {(x1, y1), ..., (xn, yn)}

и новый объект
x_new.

• Шаг 1. Берём один из классов, например, Barbie. Делаем предположение:
y_new = Barbie

• Шаг 2. Добавляем его в существующий датасет:
D_Barbie = D ∪ {(x_new, Barbie)}

• Шаг 3. Обучим модель на новом наборе данных.
• Шаг 4. Считаем меру некомфортности, например, hinge_loss, для всех объектов, включая новый.
• Шаг 5. Сравниваем новый объект с остальными. Смотрим, насколько некомфортность нового объекта велика относительно остальных объектов в D_Barbie. Упрощённо:
p_value(Barbie) = доля объектов, у которых score ≥ score_x_new


Шаги с первого по пятый повторяются для каждого класса. Финальный prediction set формируется из классов, у которых p_value > α, где α — желаемый уровень значимости.

ICP: Inductive Conformal Prediction

Опытные ML-инженеры, прочитав предыдущую часть, наверняка ужаснулись. Для предсказания на 1000 объектов в 10 классов нам понадобится 10 000 переобучений модели!

Эту проблему решает метод ICP за счёт выделения отдельной калибровочной выборки:

• Шаг 1. Делим данные на train и calibration:
D_train  
D_calibration

• Шаг 2. Обучаем модель на D_train. После этого модель больше не переобучается для каждого нового объекта.
• Шаг 3. Считаем меры некомфортности на D_calibration. Для каждого объекта из D_calibration считаем, насколько плохо модель предсказала правильный ответ. Получаем набор calibration scores:
scores = [α1, α2, ..., αm]

• Шаг 4. Задаём уровень значимости α и выбираем порог q. Теперь выбираем такой порог скора q, чтобы нужная доля calibration scores была не больше него. Упрощённо:
q = 90-й процентиль calibration scores

• Шаг 5. Применяем к новому объекту. Для нового объекта считаем score для каждого возможного класса:
score(Barbie) = 1 - P(Barbie)  
score(Ken) = 1 - P(Ken)
score(Oppenheimer) = 1 - P(Oppenheimer)


В prediction set попадут те классы, у которых score ≤ q.

Главное отличие от TCP:
ICP один раз обучает модель и один раз калибрует порог. После этого для новых объектов он использует уже готовую модель и готовую калибровку, поэтому работает намного быстрее.


💜 Этот пост написал Виталий Прахов, дата-сайентист в Точка Банк
  • ❤ 19
  • 🔥 16
  • 😍 7
  • 👍 3
  • 🌭 1
  • 🍌 1
  • 🏆 1
  • 💅 1
More from @mltochka
  1. Sep 4, 2026Post #126
  2. Sep 4, 2026Друзья, переголосуйте, пожалуйста, в вопросе про контент — сделали множественный выбор
  3. Sep 3, 2026Post #123
  4. Sep 3, 2026Post #122
  5. Sep 3, 2026Опрос о вас 💜 Канал существует уже два года, и нам хочется лучше понимать, кто именно нас…
  6. Aug 28, 2026Почему бизнес в роли заказчика, а ИИ-команда в роли исполнителя — это плохо? Если работает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →