Вопрос или проблема
Я прочитал эту интересную книгу о конформных предсказателях: https://arxiv.org/abs/2107.07511. Конформные предсказатели — это способ выбрать набор, который гарантированно включает истинные метки с некоторой заранее выбранной степенью надежности. Мне было интересно, есть ли способ получить от конформных предсказателей откалиброванные вероятности? Например, предположим, что у меня есть бинарная классификация (изображения собак или кошек). Конформные предсказатели могут использоваться для предсказания, что изображение — это собака или кошка в сложных примерах. Но что я ищу, так это что-то вроде откалиброванных p-значений для предсказания. Значения выходов сигмоидной функции (например, из моей нейронной сети) хорошо известны как не отражающие фактические p-значения. Могут ли конформные предсказатели это сделать (при условии, что у меня есть доступный набор данных для калибровки)? Если да, может кто-то указать мне на процедуру для этого? Я не могу это найти.
Я думаю, что вы ищете что-то похожее на crepes: https://github.com/henrikbostrom/crepes, который, кажется, делает то, что вы именно спрашиваете (предоставляя p-значения). Я наткнулся на это, когда искал методы калибровки моделей (то есть подгонка сплайна по выходным данным).
Приведенный ниже код предоставляет то, что вы запрашиваете для случайного леса sklearn:
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from crepes import WrapClassifier
from sklearn.ensemble import RandomForestClassifier
dataset = fetch_openml(name="qsar-biodeg", parser="auto")
X = dataset.data.values.astype(float)
y = dataset.target.values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
X_prop_train, X_cal, y_prop_train, y_cal = train_test_split(X_train, y_train, test_size=0.25)
rf = WrapClassifier(RandomForestClassifier(n_jobs=-1))
rf.fit(X_prop_train, y_prop_train)
rf.calibrate(X_cal, y_cal)
rf.predict_p(X_test)
Обратите внимание, что нам нужно разбить данные на три части, чтобы убедиться, что калибровка выполняется отдельно. Что касается других реализаций (tf/keras – pytorch), я не знаю, совместимы ли они — думаю, нет. Я также нашел реализацию venn-abers, которая, похоже, не требует доступа к модели.
То, что вы ищете, — это откалиброванные вероятности, метод конформного предсказания называется предсказателями Venn-ABERS.
На моем репозитории есть несколько учебников.
https://github.com/valeman/awesome-conformal-prediction
И я также написал статью на Medium “Как откалибровать ваш классификатор умным способом, используя машинное обучение и конформное предсказание.”
https://medium.com/@valeman/how-to-calibrate-your-classifier-in-an-intelligent-way-a996a2faf718
Ответ или решение
Конформные предсказатели представляют собой мощный инструмент для оценки неопределенности и получения калиброванных вероятностей в процессе классификации. Данная методология обеспечивает выбор множества, гарантированно охватывающего истинные метки с заранее установленной степенью уверенности. В этом ответе мы подробно рассмотрим, как можно использовать конформные предсказатели для получения калиброванных вероятностей, используя области применения, алгоритмы и примеры кода.
Основа по конформным предсказателям
Конформные предсказатели основываются на концепции, которая позволяет создавать доверительные интервалы для предсказаний модели. Они работают на основе метода, который в совокупности использует данные для оценки неопределенности и для формирования предсказаний, которые с заданной вероятностью включают истинные метки. Это особенно актуально в ситуациях, когда модели сталкиваются с трудными примерами (например, изображения кошек и собак).
Калиброванные вероятности
Стандартный выход из нейронных сетей, применяемых в задачах бинарной классификации, таких как сигмоидные функции, часто не отражает истинные вероятности предсказания. Это может привести к неправильной интерпретации результатов. При наличии калибровочного набора данных можно добиться более точных значений вероятностей, перенося их на выходы модели с помощью конформных предсказателей.
Использование Venn-ABERS
Метод, который вы ищете для получения калиброванных вероятностей, известен как Venn-ABERS. Этот метод позволяет получать вероятности, которые обеспечивают достоверные выводы о предсказаниях вашей модели. Ключевыми этапами этого метода являются:
-
Разделение данных: Создание трех наборов данных – для обучения, валидации и тестирования. Это обеспечивает независимое выполнение калибровки.
-
Обучение модели: Обучите вашу модель на тренировочном наборе данных с использованием выбранного алгоритма (например, Random Forest или нейронной сети).
-
Калибровка: Используйте валидационный набор для калибровки выходных значений модели. Вы можете использовать библиотеки, такие как
crepes
, которые предлагают функционал для калибровки. -
Предсказание вероятностей: На тестовом наборе данных примените калиброванную модель для получения вероятностей.
Пример реализации
Ниже приведен пример кода, который иллюстрирует, как использовать crepes
для калибровки модели Random Forest:
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from crepes import WrapClassifier
from sklearn.ensemble import RandomForestClassifier
# Загрузка данных
dataset = fetch_openml(name="qsar-biodeg", parser="auto")
X = dataset.data.values.astype(float)
y = dataset.target.values
# Разделение данных
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
X_prop_train, X_cal, y_prop_train, y_cal = train_test_split(X_train, y_train, test_size=0.25)
# Обучение и калибровка модели
rf = WrapClassifier(RandomForestClassifier(n_jobs=-1))
rf.fit(X_prop_train, y_prop_train)
rf.calibrate(X_cal, y_cal)
# Получение калиброванных вероятностей
predicted_probabilities = rf.predict_p(X_test)
Альтернативные методы
Существуют и другие реализации, такие как Venn-ABERS, которые не требуют доступа к модели. Это делает их гибкими и подходящими для различных задач.
Заключение
Ваша цель получения калиброванных вероятностей может быть успешно достигнута с помощью конформных предсказателей и методов, таких как Venn-ABERS. Интеграция этих подходов в вашу работу позволит значительно повысить точность и надежность ваших предсказаний, обеспечивая взвешенное понимание уровня уверенности в выходных результатах модели. Исходя из выбранной вами модели и доступных данных, вы можете адаптировать предложенные шаги для вашего конкретного случая.