TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
.ml

3 Jun, 10:02

Открыть в Telegram Поделиться Пожаловаться

В предыдущем посте мы рассказали, что такое 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 один раз обучает модель и один раз калибрует порог. После этого для новых объектов он использует уже готовую модель и готовую калибровку, поэтому работает намного быстрее.


💜 Этот пост написал Виталий Прахов, дата-сайентист в Точка Банк

2.6k 1 32 47
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot