Получение условных вероятностей для наивной байесовской модели, разработанной с использованием пакета вставки в R

Мой главный вопрос такой:

Как получить условные вероятности для наивной байесовской модели с помощью пакета caret в R?

Фон:

Я запустил наивную байесовскую модель с использованием пакета caret в R. Набор данных по сути представляет собой набор данных о состоянии здоровья с двоичной выходной переменной (ошибка вместо ошибки) с рядом категориальных предикторов и одним или двумя числовыми предикторами. Для этого мы используем пятикратную перекрестную проверку.

Модель работает нормально, но я хотел бы получить условные вероятности. Как мне это сделать? Например, одним из предикторов является «Пульс», который имеет 3 фактора: Low, Normal и High. Я хотел бы получить что-то вроде следующего: «Какова вероятность ошибки при слабом пульсе» AKA: p(y = "Mistake" | Pulse="Low").

Соответствующий код находится здесь:

ctrl<-trainControl(method="cv",number=5,classProb=T)
mod4<-train(Target~.,data=train,method="nb",trControl=ctrl)

В пакете KLAR это сделать несложно (это отображается во второй строке):

model4<-naiveBayes(Target~. ,data=train, scale=T)
model4_variable_posterior_prob <- model4$tables[[var2]]

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

Я должен отметить, что Caret создает здесь несколько таблиц:

mod4$finalModel$tables$

Однако я не уверен, являются ли эти таблицы условными вероятностями или какими-то другими значениями.

Например, mod4$finalModel$tables$PulseX2 дает следующее:

        [,1]      [,2]
X1 0.1343284 0.3415149
X2 0.1731343 0.3789293 

Я считаю, что PulseX2 - это таблица для Pulse= Medium, а PulseX3 - это таблица для Pulse=High, но я не совсем уверен. Однако я знаю, что в приведенном выше X1 - это «ошибка», а X2 - «не ошибка». Но мой вопрос в том, является ли столбец [,1] значением «0» для категориальной факторной переменной PulseX2? И является ли столбец [,2] значением "1" для категориальной факторной переменной PulseX2? Итак, по этой логике, на .3415149 p( y= Mistake (or X1=1) | Pulse = X2) выше базовый уровень PulseX1 или что-то в этом роде? Кто-нибудь знает, что означают эти значения?

В качестве альтернативы, если есть способ получить некоторую информацию о важных отдельных факторах (не только о важных переменных), это тоже будет хорошо.


person user2498719    schedule 25.09.2016    source источник


Ответы (1)


На самом деле дело не в caret; этот объект создается функцией NaiveBayes в пакете klaR. В документации к этому пакету сказано:

tables: список таблиц, по одной для каждой переменной-предиктора. Для каждой категориальной переменной представлена ​​таблица, содержащая для каждого уровня атрибута условные вероятности с учетом целевого класса. Для каждой числовой переменной - таблица, дающая для каждого целевого класса среднее значение и стандартное отклонение (под-) переменной или объекта плотности классов.

person topepo    schedule 26.09.2016