Я получил модель логистической регрессии (через train
) для бинарного ответа, и я получил логистическую матрицу спутанности через confusionMatrix
в caret
. Это дает мне путаницу в логистической модели, хотя я не уверен, какой порог используется для ее получения. Как получить матрицу путаницы для определенных пороговых значений, используя confusionMatrix
in caret
?
r
classification
roc
caret
confusion-matrix
Черное молоко
источник
источник
confusionmatrix
без скобок.glm
функцию изstats
пакета и передавали ее результатconfusionMatrix
? Я не знал, что это можно сделать, и, читая руководство, совсем не понятно. Или тыpredict
что-то сделал ? Краткий пример поможет.train
функцию,caret
чтобы соответствовать модели, которая позволяет мне указать ее как glm с биномиальным семейством. Затем я использовалpredict
функцию для объекта, созданного с помощьюtrain
.Ответы:
Большинство классификационных моделей в R дают как прогнозирование класса, так и вероятности для каждого класса. Для двоичных данных почти в каждом случае прогнозирование класса основано на 50% -ной вероятности отсечения.
glm
та же. Сcaret
помощью использованиеpredict(object, newdata)
дает вам прогнозируемый класс иpredict(object, new data, type = "prob")
даст вам специфичные для класса вероятности (когдаobject
генерируетсяtrain
).Вы можете делать вещи по-другому, определяя свою собственную модель и применяя любую обрезку, которую вы хотите. На
caret
сайте также есть пример, который использует повторную выборку для оптимизации вероятности отсечки.ТЛ; др
confusionMatrix
использует предсказанные классы и, таким образом, 50% вероятности отсечкиМаксимум
источник
Есть довольно простой способ, предполагая
tune <- train(...)
:Очевидно, что вы можете установить пороговое значение для того, что хотите попробовать, или выбрать «лучший», где лучший означает максимальную комбинированную специфичность и чувствительность:
Посмотрев на пример, который выложил Макс, я не уверен, есть ли какие-то статистические нюансы, которые делают мой подход менее желательным.
источник
caret
пакета?rocCurve$thresholds[which(rocCurve$sensitivities + rocCurve$specificities == max(rocCurve$sensitivities + rocCurve$specificities))]
что также дает вам возможность по-разному взвешивать их, если вы хотите ... Еще одна вещь, на которую стоит обратить внимание, это то, что реалистично, вы, вероятно, хотите настроить порог (например, вы бы с любой моделью гиперпараметр), как Макс описывает здесь .