Чтобы понять, почему «[т] он является ответом 0
или 1
[но] предсказаниями являются вероятности между 0
- 1
», вам необходимо понять тип модели, с которой вы работаете. Удалите методы наказания и перекрестную проверку, и вы запускаете базовую логистическую регрессию. Параметры вписываются в логарифмическую шкалу / логистическую шкалу. Это называется «линейным предиктором». (Более подробно об этом может помочь вам прочитать мой ответ здесь: Разница между логит-моделями и пробит-моделями .) Если вы включили значение x и упростили, это значение будет предсказанным естественным логарифмом модели шансов «успеха». ( 1
). Если вы возведете в степень это значение, вы получите прогнозные шансы модели«успеха». Чтобы получить прогнозируемую вероятность , вам необходимо преобразовать шансы в вероятность через шансы / (1 + шансы). (Подробнее об этом может помочь вам прочитать мой ответ здесь: Интерпретация простых предсказаний для отношений шансов в логистической регрессии .) Это все еще не приведет вас к предсказанному классу . Чтобы получить это, вам необходимо сравнить прогнозируемую вероятность с некоторым порогом, и, если он меньше порога, предсказать 'fail' ( 0
), иначе 'success' ( 1
). Наиболее распространенный порог по умолчанию - .5, но это часто не оптимально. predict.glm()
Функция R позволит вам использоватьtype="link"
, который выводит прогнозы в масштабе линейного предиктора (т. е. перед всеми этими преобразованиями выше), но это не поможет вам в этом контексте. Использование type="response"
дает вам прогнозируемые вероятности.
Когда вы пытаетесь оценить, насколько хорошо бинарная (например, логистическая) модель регрессии предсказывает ответ, у вас есть несколько вариантов:
- Первое и наиболее интуитивно понятное - сравнить прогнозируемый класс с наблюдаемым классом и вычислить правильный процент. Хотя это интуитивно понятно, у него есть проблемы. Отчасти это зависит от оптимальности порога в дополнение к другим аспектам модели, соответствующим образом подходящим. Он также выбрасывает много информации (т. Е. Как далеко от порога прогнозируемой вероятности), что не очень хорошая вещь.
- Следующим вариантом будет использование области под кривой «Характеристики работы приемника» (ROC). Большинство людей используют эту опцию; это значительно лучше, чем использование правильного процента. Однако в AUC большинство людей не осознают, что на самом деле они измеряют соответствующий порядок ваших прогнозов, а не их фактическую точность. То есть, если вы предсказали вероятности для четырех наблюдений
.2, .4, .6, .8
и добавили 0,01 ко всем из них ( .21, .41, .61, .81
), AUC будет одинаковым, даже если оба набора предсказанных вероятностей не могут быть одинаково точными.
- Третий способ оценки вашей модели - использование правильной функции оценки. Пожалуй, самая популярная функция оценки в вашем контексте - оценка Бриера . Как отмечает @fcoppens, метод в вашем коде - это оценка Бриера. Он будет оценивать не только то, будет ли модель надлежащим образом прогнозировать, что одно наблюдение более вероятно будет «успешным», чем другое наблюдение, но также и то, будет ли предсказанная вероятность модели действительно правильной.
К сожалению, оценка Бриера менее известна и используется. Хотя относительная интуитивность этих методов такова: процент правильных> AUC> показатель Бриера, их истинная информативность противоположна: показатель Бриера> AUC> процент правильных. Если вам нужна только простая мера производительности вашей модели, различие между этими методами менее важно, но если вы хотите использовать эти методы для оптимизации модели или выбора модели, использование низшего метода приведет к снижению производительности. ,