У меня есть обученная модель логистической регрессии, которую я применяю к набору данных тестирования. Зависимая переменная является двоичной (булевой). Для каждого образца в наборе данных тестирования я применяю модель логистической регрессии для генерации% вероятности того, что зависимая переменная будет истинной. Затем я записываю, было ли истинное значение истинным или ложным. Я пытаюсь вычислить значение или Скорректированный как в модели линейной регрессии.R 2
Это дает мне запись для каждого образца в наборе тестирования, как:
prob_value_is_true acutal_value
.34 0
.45 1
.11 0
.84 0
.... ....
Мне интересно, как проверить точность модели. Моя первая попытка состояла в том, чтобы использовать таблицу непредвиденных обстоятельств и сказать «если prob_value_is_true
> 0,80, предположить, что фактическое значение истинно», а затем измерить соотношение правильных и неправильных классификаций. Но мне это не нравится, потому что мне кажется, что я просто оцениваю 0,80 как границу, а не точность модели в целом и всех prob_value_is_true
значений.
Затем я попытался просто посмотреть на каждое дискретное значение prob_value_is_true, в качестве примера, просматривая все выборки, где prob_value_is_true
= 0,34, и измеряя% из тех выборок, где истинное значение верно (в этом случае, идеальная точность была бы, если бы процент выборок это было правдой = 34%). Я мог бы создать оценку точности модели, суммируя разницу при каждом дискретном значении prob_value_is_true
. Но размеры выборки здесь представляют огромную проблему, особенно для экстремальных значений (около 0% или 100%), так что средние значения точных значений не являются точными, поэтому использование их для измерения точности модели не представляется правильным.
Я даже пытался создать огромные диапазоны, чтобы обеспечить достаточный размер выборки (0 -25, .25-.50, .50-.75, .75-1.0), но как измерить «добротность» этого% фактического значения, это ставит меня в тупик , Скажем, все образцы в диапазоне prob_value_is_true
от 0,25 до 0,50 имеют в среднем acutal_value
0,45. Это хорошо, так как в ассортименте? Плохо, так как это не около 37,5% (центр диапазона)?
Так что я застрял в том, что, по-видимому, должно быть простым вопросом, и надеюсь, что кто-то может указать мне на ресурс или метод для расчета точности точности для модели логистической регрессии.
источник
Ответы:
Мера, которая часто используется для проверки логистической регрессии, представляет собой AUC кривой ROC (график чувствительности к 1-специфичности - просто используйте Google для терминов, если необходимо). Это, по сути, оценивает весь диапазон пороговых значений.
С другой стороны: оценка всего диапазона пороговых значений может быть не той, что вам нужна, поскольку она (как правило) включает пороги, которые приводят к очень большому количеству ложных отрицательных или ложных положительных результатов. Существуют версии AUC, которые учитывают это (частичное AUC), поэтому, если это проблема для вас, вы можете разобраться в этом.
источник
lowess
val.prob
rms
rms
будет делать то же самое для внутренней проверки, используя повторную выборку, чтобы устранить последствия перенастройки.источник
mean(y[x==10]==1)
mean(y[x==20]==1)
В общем, задача, которую вы здесь поставили, сложная. Это потому, что с логистической регрессией вы имеете дело с двумя разными вещами. Предсказания модели - это скрытая переменная, в то время как наблюдаемая вами переменная ответа (хотя предположительно генерируемая скрытой переменной) - нет. Конечно, люди часто хотят знать, каков прогнозируемый ответ, и это совершенно разумно; это только один из тех случаев, когда жизнь несправедлива.
источник
Я думаю, что вы могли бы установить порог (скажем, 0,5), поэтому, когда ваша вероятность равна или превышает этот порог, ваш прогнозируемый класс будет 1, а в противном случае - 0. Затем вы можете получить меру вашей точности следующим образом:
Учитывая, что ваша вероятность равна вероятности предоставления ваших данных (x), а при использовании вашей модели значение вашего класса (y) равно 1, я не понимаю, почему вы всегда получаете значения вероятности ниже 0,5. Какова частота ваших реальных классов (actual_value)?
источник
Возможно, вы захотите взглянуть на мой пакет
softclassval
(на softclassval.r-forge.r-project.org вы также найдете две устные презентации, которые я дал об идеях пакета).Я написал это для немного другой проблемы, а именно, если ссылка (например, патолог) «отказывается» дать четкий класс. Тем не менее, вы можете использовать его с «обычными» жесткими классами, и это позволит избежать определения порога для усиления изначально непрерывного прогноза - поэтому вы не оцениваете 0,8.
Тем не менее, я рекомендую использовать его вместе, скажем, с ROC или диаграммой специфичности-чувствительности: результаты часто выглядят довольно плохо, так как «мои» методы будут штрафовать и без того небольшие отклонения (например, 0,9 вместо 1 дает 0,1 разницу для моих показателей) , но все пороги ниже 0,9 будут игнорировать это). На самом деле, я думаю, что это скорее преимущество: отсутствие этой чувствительности против небольших отклонений является одним из основных пунктов критики с такими «жесткими» мерами, как точность, чувствительность, отзыв и т. Д.
Кроме того, сравнивая среднюю абсолютную ошибку (MAE) и среднеквадратическую среднеквадратичную ошибку, вы можете узнать, много ли у вас небольших отклонений или меньше ошибочных выборок.
источник
Затем запустите эту симуляцию, скажем, 100 раз. У вас будет матрица с n строками (n - количество предметов) и k столбцами (в этом случае k = 100 - количество симуляций). В коде r:
Теперь вы вычисляете разницу между предсказанным в каждой симуляции и наблюдаемым. После вычисления этой разности просто вычислите среднее число истинно положительных и ложно положительных значений для каждой строки (каждого субъекта) и постройте гистограмму. Или рассчитать оба для каждого столбца (симуляции) и построить гистограмму (я предпочитаю это).
Надеюсь, это поможет...
источник
Есть много способов оценить точность таких прогнозов, и оптимальный выбор действительно зависит от того, для чего будет реализована оценка.
Например, если вы планируете выбрать несколько высоких результатов для дорогостоящего последующего исследования, вы можете максимизировать точность при высоких показателях. С другой стороны, если последующее исследование стоит дешево, вы можете максимизировать отзыв (чувствительность) при более низких баллах. ROC AUC может подойти, если вы сравниваете другой метод и т. Д.
С практической стороны,
R
«sROCR
пакет содержит 2 полезные функцииВместе эти функции могут вычислять широкий диапазон мер точности, включая глобальные скалярные значения (такие как «auc» ) и зависимые от оценки векторы для построения кривых точности восстановления и ROC ( «prec» , «rec» , «tpr» и "фпр" и т. д.)
источник
Вы должны определить, что вы подразумеваете под «точностью». Что бы вы хотели знать, прошу прощения за то, что вы положили слова в рот, насколько хорошо ваша модель соответствует данным тренировки и, что более важно, насколько хорошо эта модель «обобщает» образцы, которых нет в ваших данных тренировки. Хотя кривые ROC могут быть полезны при анализе компромисса между точностью и отзывом для различных значений порога, я предлагаю добавить среднеквадратичную ошибку или показатель Бриера к вашему набору инструментов. Это легко вычислить, и вы можете сразу же почувствовать, влияют ли изменения функций на соответствие модели применительно к данным обучения. Поскольку в этом случае возможен наряд, ваша работа здесь не закончена. Чтобы оценить производительность обобщения или то, насколько хорошо вы справляетесь с данными, которые вы не видели, это не так. Достаточно посмотреть на ваши результаты на тренировочных примерах. Конечно, ваша модель хороша для тех, потому что они значения, которые вы использовали для определения коэффициентов для вашей логистики. Вам необходимо выделить несколько образцов для тестовых данных. Ваша производительность MSE в этом наборе должна установить ваши ожидания обобщения в соответствии с неравенством Хоффдинга. Ваша максимальная ошибка обобщения будет зависеть от количества функций в вашей модели, а также от количества выборок, использованных для вычисления статистики теста. Помните, что вам нужно будет украсть некоторые тренировочные образцы для тестовых образцов. Я рекомендую 10-кратную перекрестную проверку, когда вы перемешиваете, выбираете 90% для обучения, 10% для тестирования, а затем измеряете, повторяете и затем усредняете все измерения. потому что они значения, которые вы использовали для определения коэффициентов для вашей логистики. Вам необходимо выделить несколько образцов для тестовых данных. Ваша производительность MSE в этом наборе должна установить ваши ожидания обобщения в соответствии с неравенством Хоффдинга. Ваша максимальная ошибка обобщения будет зависеть от количества функций в вашей модели, а также от количества выборок, использованных для вычисления статистики теста. Помните, что вам нужно будет украсть некоторые тренировочные образцы для тестовых образцов. Я рекомендую 10-кратную перекрестную проверку, когда вы перемешиваете, выбираете 90% для обучения, 10% для тестирования, а затем измеряете, повторяете и затем усредняете все измерения. потому что они значения, которые вы использовали для определения коэффициентов для вашей логистики. Вам необходимо выделить несколько образцов для тестовых данных. Ваша производительность MSE в этом наборе должна установить ваши ожидания обобщения в соответствии с неравенством Хоффдинга. Ваша максимальная ошибка обобщения будет зависеть от количества функций в вашей модели, а также от количества выборок, использованных для вычисления статистики теста. Помните, что вам нужно будет украсть некоторые тренировочные образцы для тестовых образцов. Я рекомендую 10-кратную перекрестную проверку, когда вы перемешиваете, выбираете 90% для обучения, 10% для тестирования, а затем измеряете, повторяете и затем усредняете все измерения. Ваша производительность MSE в этом наборе должна установить ваши ожидания обобщения в соответствии с неравенством Хоффдинга. Ваша максимальная ошибка обобщения будет зависеть от количества функций в вашей модели, а также от количества выборок, использованных для вычисления статистики теста. Помните, что вам нужно будет украсть некоторые тренировочные образцы для тестовых образцов. Я рекомендую 10-кратную перекрестную проверку, когда вы перемешиваете, выбираете 90% для обучения, 10% для тестирования, а затем измеряете, повторяете и затем усредняете все измерения. Ваша производительность MSE в этом наборе должна установить ваши ожидания обобщения в соответствии с неравенством Хоффдинга. Ваша максимальная ошибка обобщения будет зависеть от количества функций в вашей модели, а также от количества выборок, использованных для вычисления статистики теста. Помните, что вам нужно будет украсть некоторые тренировочные образцы для тестовых образцов. Я рекомендую 10-кратную перекрестную проверку, когда вы перемешиваете, выбираете 90% для обучения, 10% для тестирования, а затем измеряете, повторяете и затем усредняете все измерения.
источник
Это не страдает от произвольных порогов. Чем меньше мера, тем лучше.
источник