1.16. Калибровка вероятности

При выполнении классификации часто требуется не только предсказать метку класса, но и получить вероятность соответствующей метки. Эта вероятность дает вам некоторую уверенность в предсказании. Некоторые модели могут дать вам плохие оценки вероятностей классов, а некоторые даже не поддерживают предсказание вероятности (например, некоторые экземпляры SGDClassifier). Модуль калибровки позволяет лучше откалибровать вероятности данной модели или добавить поддержку вероятностного прогнозирования.

Хорошо откалиброванные классификаторы — это вероятностные классификаторы, для которых выходные данные метода pred_proba могут быть напрямую интерпретированы как уровень достоверности. Например, хорошо откалиброванный (бинарный) классификатор должен классифицировать образцы таким образом, чтобы среди образцов, для которых он дал значение pred_proba, близкое к 0,8, примерно 80% фактически принадлежали к положительному классу.

1.16.1. Калибровочные кривые

На следующем графике сравнивается, насколько хорошо откалиброваны вероятностные прогнозы различных классификаторов с использованием calibration_curve. Ось x представляет собой среднюю прогнозируемую вероятность в каждом интервале. По оси ординат отложена доля положительных результатов , т. Е. Доля образцов, класс которых является положительным (в каждой ячейке).

LogisticRegression по умолчанию возвращает хорошо откалиброванные прогнозы, так как напрямую оптимизирует Лог Лосс. Напротив, другие методы возвращают предвзятые вероятности; с разными предубеждениями для каждого метода:

GaussianNB имеет тенденцию подталкивать вероятности к 0 или 1 (обратите внимание на счетчики на гистограммах). Это главным образом потому, что в нем предполагается, что функции условно независимы для данного класса, чего нет в этом наборе данных, который содержит 2 избыточных функции.

RandomForestClassifier показывает противоположное поведение: гистограммы показывают пики с вероятностью примерно 0,2 и 0,9, тогда как вероятности, близкие к 0 или 1, очень редки. Объяснение этому дают Никулеску-Мизил и Каруана 1.: «Такие методы, как упаковка в мешки и случайные леса, которые усредняют прогнозы из базового набора моделей, могут иметь трудности с получением прогнозов, близких к 0 и 1, потому что дисперсия в базовых моделях будет смещать прогнозы, которые должны быть близки к нулю или отклоняться от этих значений. Поскольку прогнозы ограничены интервалом [0,1], ошибки, вызванные дисперсией, имеют тенденцию быть односторонними около нуля и единицы. Например, если модель должна предсказывать p = 0 для случая, единственный способ добиться этого с помощью бэггинга — это если все упакованные деревья предсказывают ноль. Если мы добавим шум к деревьям, по которым происходит усреднение мешков, этот шум заставит некоторые деревья предсказывать значения больше 0 для этого случая, таким образом сдвигая среднее предсказание ансамбля с мешками от 0.Мы наблюдаем этот эффект наиболее сильно со случайными лесами, потому что деревья базового уровня, обученные со случайными лесами, имеют относительно высокую дисперсию из-за подмножества признаков ». В результате калибровочная кривая также называется диаграммой надежности (Wilks, 1995).2 ) показывает характерную сигмовидную форму, указывающую на то, что классификатор может больше доверять своей «интуиции» и обычно возвращает вероятности, близкие к 0 или 1.

Линейная классификация опорных векторов (LinearSVC) показывает еще более сигмовидную кривую, чем RandomForestClassifier это типично для методов с максимальным запасом (сравните Никулеску-Мизил и Каруана 1 ), которые сосредоточены на трудно классифицируемых выборках, близких к границе решения (опорные векторы ).

1.16.2. Калибровка классификатора

Калибровка классификатора состоит из подгонки регрессора (называемого калибратором ), который отображает выходные данные классификатора (как задано decision_function или predict_proba ) с откалиброванной вероятностью в [0, 1]. Обозначая результат работы классификатора для данной выборки как $f_i$, калибратор пытается предсказать $p(y_i = 1 | f_i)$.

Образцы, которые используются для соответствия калибратору, не должны быть теми же образцами, которые используются для соответствия классификатору, поскольку это приведет к смещению. Это связано с тем, что производительность классификатора на его обучающих данных будет лучше, чем на новых данных. Таким образом, использование выходных данных классификатора обучающих данных для соответствия калибратору приведет к смещению калибратора, который отображает вероятности ближе к 0 и 1, чем следовало бы.

1.16.3. Использование

Класс CalibratedClassifierCV используются для калибровки классификатора.

CalibratedClassifierCV использует подход перекрестной проверки, чтобы гарантировать, что объективные данные всегда используются для соответствия калибратору. Данные разбиты на k (train_set, test_set) пар (как определено cv). Когда ensemble=True (по умолчанию), следующая процедура повторяется независимо для каждого разделения перекрестной проверки: клон base_estimator сначала обучается на подмножестве поездов. Затем его прогнозы на тестовом подмножестве используются для подбора калибратора (сигмоидального или изотонического регрессора). Это приводит к ансамблю из k (classifier, calibrator) пар, где каждый калибратор отображает выходные данные своего соответствующего классификатора в [0, 1]. Каждая пара представлена ​​в атрибуте calibrated_classifiers_, где каждая запись представляет собой откалиброванный классификатор с методом pred_proba, который выводит откалиброванные вероятности. Вывод pred_proba для основного CalibratedClassifierCV экземпляра соответствует среднему значению предсказанных вероятностей k оценщиков в calibrated_classifiers_ списке. Результат прогнозирования — это класс с наибольшей вероятностью.

Когда ensemble=False перекрестная проверка используется для получения «объективных» прогнозов для всех данных, через cross_val_predict. Эти объективные прогнозы затем используются для обучения калибратора. Атрибут calibrated_classifiers_ состоит только из одной пары, в которой классификатор обучен на всех данных. В этом случае вывод pred_proba для — CalibratedClassifierCV это прогнозируемые вероятности, полученные от единственной пары (classifier, calibrator).

Основным преимуществом ensemble=True является использование традиционного эффекта ансамбля (аналогично метаоценке Bagging ). Полученный ансамбль должен быть хорошо откалиброван и немного более точен, чем с ensemble=False. Основное преимущество использования ensemble=False — вычислительное: оно сокращает общее время подгонки за счет обучения только одной пары базового классификатора и калибратора, уменьшает окончательный размер модели и увеличивает скорость прогнозирования.

В качестве альтернативы уже установленный классификатор можно откалибровать путем настройки cv="prefit". В этом случае данные не разделяются, и все они используются для соответствия регрессору. Пользователь должен убедиться, что данные, используемые для подбора классификатора, не пересекаются с данными, используемыми для подбора регрессора.

sklearn.metrics.brier_score_loss может использоваться для оценки того, насколько хорошо откалиброван классификатор. Однако этот показатель следует использовать с осторожностью, потому что более низкий балл Бриера не всегда означает лучшую откалиброванную модель. Это связано с тем, что показатель Бриера представляет собой комбинацию потери калибровки и потери уточнения. Потеря калибровки определяется как среднеквадратическое отклонение от эмпирических вероятностей, полученных из наклона ROC-сегментов. Потери при переработке можно определить как ожидаемые оптимальные потери, измеренные по площади под кривой оптимальных затрат. Поскольку потеря уточнения может измениться независимо от потери калибровки, более низкий балл Бриера не обязательно означает лучшую откалиброванную модель.

CalibratedClassifierCV поддерживает использование двух «калибровочных» регрессоров: «сигмовидной» и «изотонической».

1.16.3.1. сигмовидной

Сигмовидный регрессор основан на логистической модели Платта 3 :
$$p(y_i = 1 | f_i) = \frac{1}{1 + \exp(A f_i + B)}$$

где $y_i$ это настоящая этикетка образца $i$ а также $f_i$ — результат некалиброванного классификатора для образца $i$. $A$ а также $B$ являются действительными числами, которые необходимо определить при подборе регрессора через максимальное правдоподобие.

Сигмоидный метод предполагает, что калибровочная кривая может быть скорректирована путем применения сигмоидной функции к необработанным прогнозам. Это предположение было эмпирически оправдано в случае машин опорных векторов с общими функциями ядра на различных наборах данных тестов в разделе 2.1 Platt 1999 3, но не обязательно в целом. Кроме того, логистическая модель работает лучше всего, если ошибка калибровки симметрична, что означает, что выходные данные классификатора для каждого двоичного класса обычно распределяются с одинаковой дисперсией 6 . Это может быть проблемой для задач классификации с высокой несбалансированностью, когда выходные данные не имеют одинаковой дисперсии.

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

1.16.3.2. Изотонический

«Изотонический» метод подходит для непараметрического изотонического регрессора, который выводит ступенчатую неубывающую функцию (см. sklearn.isotonic). Он сводит к минимуму:
$$\sum_{i=1}^{n} (y_i — \hat{f}_i)^2$$

при условии $\hat{f}_i >= \hat{f}_j$ в любое время $f_i >= f_j$. $y_i$ это настоящая этикетка образца $i$ а также $\hat{f}_i$ — результат калиброванного классификатора для образца $i$ (т.е. калиброванная вероятность). Этот метод является более общим по сравнению с «сигмоидом», поскольку единственное ограничение состоит в том, что функция отображения монотонно возрастает. Таким образом, он более мощный, поскольку может исправить любое монотонное искажение некалиброванной модели. Однако он более подвержен переобучению, особенно на небольших наборах данных 5 .

В целом, «изотонический» будет работать так же или лучше, чем «сигмоид», когда данных достаточно (более ~ 1000 выборок), чтобы избежать переобучения 1.

1.16.3.3. Поддержка мультиклассов

И изотонический, и сигмовидный регрессоры поддерживают только одномерные данные (например, выходные данные двоичной классификации), но расширяются для многоклассовой классификации, если они base_estimator поддерживают многоклассовые предсказания. Для MultiClass предсказаний, CalibratedClassifierCV калибрует для каждого класса отдельно в OneVsRestClassifier моды 4 . При прогнозировании вероятностей откалиброванные вероятности для каждого класса прогнозируются отдельно. Поскольку эти вероятности не обязательно равны единице, для их нормализации выполняется постобработка.