Как выбрать лучший показатель для измерения калибровки?


10

Я программирую и занимаюсь разработкой на основе тестов. После внесения изменений в код я запускаю свои тесты. Иногда они добиваются успеха, а иногда они терпят неудачу. Перед запуском теста я записываю число от 0,01 до 0,99, чтобы удостовериться, что тест пройдёт успешно.

Я хочу знать, улучшаю ли я прогнозирование того, будет ли мой тест успешным или нет. Также было бы хорошо, если бы я мог отслеживать, лучше ли я предсказываю, будет ли тест успешным по понедельникам или по пятницам. Если моя способность предсказать успех теста коррелирует с другими метриками, которые я отслеживаю, я хочу знать.

Это оставляет меня с задачей выбора правильной метрики. В Superforcasting Филипп Тетлок предлагает использовать оценку Бриера, чтобы измерить, насколько хорошо откалиброваны эксперты. Другой метрикой, которая была предложена в литературе, является правило логарифмической оценки . Есть и другие возможные кандидаты.

Как мне решить, какой показатель использовать? Есть ли аргумент в пользу предпочтения одного правила подсчета над остальными?


1
Потенциальный источник трудностей в измерении изменений в вашем навыке прогнозирования заключается в том, что основная сложность проблемы прогнозирования может измениться. Изменения в вашем навыке могут быть неотличимы от изменений в сложности задачи.
Мэтью Ганн

Ответы:


1

Я предполагаю, что вы делаете юнит-тесты для своего кода.

Я могу придумать одну идею, которая, возможно, не будет делать именно то, что вы хотите, - это использовать линейную модель.

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

Допустим, у вас есть вектор который включает результаты ваших тестов, и еще один вектор который включает ваши прогнозы результата.Yx

Теперь вы можете просто соответствовать линейной модели

yi=a+bxi+ϵ

и найдите значение , чем выше значение будет означать, что ваши прогнозы становятся лучше.bb

Что делает этот подход приятным, так это то, что теперь вы можете начать добавлять кучу других переменных, чтобы посмотреть, создает ли это лучшую модель, и эти переменные могут помочь в улучшении прогнозов. Переменные могут быть индикатором для дня недели, например, для понедельника это всегда будет 1 и ноль для всех остальных дней. Если вы включите эту переменную в модель, вы получите:

yi=a+aMonday+bxi+ϵ

И если переменная является значимой и положительной, то это может означать, что вы более консервативны в своих прогнозах по понедельникам.aMonday

Вы также можете создать новую переменную, в которой вы дадите оценку, чтобы оценить сложность задачи, которую вы выполнили. Если у вас есть контроль версий, вы можете, например, использовать количество строк кода как сложность, т.е. чем больше кода вы пишете, тем больше вероятность того, что что-то сломается.

Другими переменными могут быть: количество кофейных чашек в тот день, индикатор предстоящих сроков, что означает больше стресса, чтобы закончить вещи и т.д.

Вы также можете использовать переменную времени, чтобы увидеть, улучшаются ли ваши прогнозы. Кроме того, сколько времени вы потратили на задачу, или сколько сеансов вы потратили на нее, делали ли вы быстрое решение, и это могло быть неаккуратным и т. Д.

В конце концов у вас есть модель прогнозирования, в которой вы можете попытаться предсказать вероятность успеха. Если вам удастся создать это, то, возможно, вам даже не придется делать свои собственные прогнозы, вы можете просто использовать все переменные и довольно хорошо догадаться, будут ли все работать.

Дело в том, что вы хотели только один номер. В этом случае вы можете использовать простую модель, которую я представил в начале, и просто использовать наклон, и повторить расчеты для каждого периода, тогда вы можете посмотреть, есть ли тенденция в этом счете во времени.

Надеюсь это поможет.


1
Я считаю , что более высокий склон ( в вашей простой модели) не всегда соответствует лучшему предсказанию: Если предположить , логистическую регрессию, если = «истинные» / наблюдаемая вероятность исхода, а является прогнозируемой вероятностью, чем должно быть 0, а должно быть 1. Любое более высокое будет означать завышение результата, в то время как a ниже 1 означает недооценку. Этот метод фактически описан в ссылке, на которую я указываю в своем ответе. Короче говоря, этот метод уклона подходит для использования, но уклоны около 1 являются лучшими (когда = 0). Y x a b b b abYxabbba
IWS

@IWS Спасибо за вклад, я согласен с вами в той степени, в которой вы хотите, чтобы одно значение оценивало вашу производительность, тогда пропустить перехват - хорошая идея. Если вы хотите попытаться интерпретировать данные дальше (и их у вас достаточно), то было бы неплохо добавить перехват и сравнить модели.
Гумео

1

Хотя это далеко не ответ, а скорее ссылка, было бы неплохо проверить Steyerberg E - Epidemiology 2012 .

В этой статье Steyerberg и его коллеги объясняют различные способы проверки производительности модели прогнозирования для моделей с бинарными результатами (успехами или неудачами). Калибровка - только одна из этих мер. В зависимости от того, хотите ли вы иметь точную вероятность , точную классификацию или точную реклассификацию, вы можете использовать различные показатели производительности модели. Несмотря на то, что эта рукопись касается моделей, которые будут использоваться в биомедицинских исследованиях, я чувствую, что они могут быть применимы и к другим (вашим) ситуациям.

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

В заключение, любой из критериев сводной калибровки требует вашего первого шага для построения ваших предсказанных вероятностей в сравнении с наблюдаемой вероятностью (см., Например, ответ Outlier). Затем можно рассчитать итоговую меру, но выбор суммарной меры должен отражать цель прогнозирования успеха неудачи в первую очередь.


0

Я сделал модель прогнозирования для разреженных данных, и в этих случаях очень сложно откалибровать вашу модель. Я скажу вам, что я сделал, вы можете получить некоторую помощь от этого.

Я сделал 20 блоков прогнозируемой вероятности и попытался построить среднюю прогнозируемую и фактическую вероятность успеха. Для средней прогнозируемой вероятности я взял среднее значение диапазона бина. Для средней фактической вероятности я вычислил фактический успех и количество неудач в корзинах, из которых я получил фактическую (медианную) вероятность успеха в корзине. Чтобы уменьшить влияние выбросов, я удалил верхние и нижние 5% данных, прежде чем брать фактическую медианную вероятность в каждом бине.

Как только я получил их, я мог легко представить данные.


Было бы хорошо отметить, что это первый шаг в вычислении критерия соответствия Хосмера-Лемешоу.
Jwimberley
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.