R пакет bnlearn: cpquery против предсказать - разные результаты?
Я хочу использовать свою байесовскую сеть в качестве классификатора, сначала на полных данных доказательства (predict
), но также и по неполным данным (bnlearn::cpquery
). Но, похоже, что даже работая с одним и тем же свидетельством, функции дают разные результаты (не только из-за небольшого отклонения из-за выборки).
С полными данными, можно легко использовать R predict
функция:
predict(object = BN,
node = "TargetVar",
data = FullEvidence ,
method = "bayes-lw",
prob = TRUE)
Анализируя prob
атрибут, я понял, что predict
-функция просто выбирает уровень фактора с наивысшей вероятностью.
Когда дело доходит до неполных доказательств (известны только результаты некоторых узлов), predict
больше не работает:
Error in check.fit.vs.data(fitted = fitted,
data = data,
subset = setdiff(names(fitted), :
required variables [.....] are not present in the data.`
Итак, я хочу использовать bnlearn::cpquery
со списком известных доказательств:
cpquery(fitted = BN,
event = TargetVar == "TRUE",
evidence = evidenceList,
method = "lw",
n = 100000)
Опять же, я просто хочу использовать фактор с наибольшей вероятностью в качестве прогноза. Так что если результат cpquery
выше 0,5, я установил прогноз на ИСТИНА, иначе на ЛОЖЬ.
Я пытался отслеживать процесс, предоставляя одинаковые (полные) данные для обеих функций, но они не возвращали мне одинаковые результаты. Есть большие различия, например predict
Атрибут "prob" дает мне a p(false) = 27%, тогда как cpquery
дает мне р (ложь) = 2,2%.
Каков "правильный" способ сделать это? Использование только cpquery, а также для полных данных? Почему есть большие различия?
Спасибо за вашу помощь!
1 ответ
Как выразился пользователь 20650, увеличение количества выборок в прогнозируемом вызове было решением для получения очень похожих результатов. Так что просто предоставьте аргумент n = ...
в вашем вызове функции.
Конечно, это имеет смысл, я просто не знал об этом аргументе в predict()
функция. Там нет документации об этом в утилитах bn.fit, а также нет в достаточно общей документации прогнозирования.