Вероятность того, что запись принадлежит одному и тому же набору данных, учитывая байесовскую сеть, созданную с помощью BNlearn - PullRequest
1 голос
/ 03 мая 2019

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

Затем я хочу оценить, насколько аномальна новая запись.Для этого я хочу получить вероятность записи, для которой у меня есть полное свидетельство, но мне не нужно прогнозировать какую-либо переменную.

Кажется, что для метода pcquery требуется хотя бы одна переменная.В документации говорится, что метод прогнозирования будет игнорировать записи с полным свидетельством.

Я потратил день на поиск документации BNlearn безуспешно.Поэтому я думаю, что либо с BNlearn невозможно, либо мне не хватает нужного словаря, чтобы найти то, что мне нужно в документах.

Любые идеи от кого-то, кто имеет больше опыта работы с BNlearn, приветствуются.

1 Ответ

0 голосов
/ 26 июня 2019

cpquery оценивает условную вероятность event при evidence. Однако документация bnlearn гласит:

Если для события или свидетельства установлено значение ИСТИНА, то для этого аргумента выполняется запрос безусловной вероятности.

Например, с набором данных Asia:

library(bnlearn)

data(asia)

bn.dag <- model2network("[A][S][T|A][L|S][B|S][D|B:E][E|T:L][X|E]")
bn.fitted  <- bn.fit(bn.dag, asia)

for (i in c(1:1000)) {
  prob[i] <- cpquery(bn.fitted, 
                     event = (A == "no") & (S == "no") & (T == "no") & (L == "no") & 
                             (B == "no") & (E == "no") & (X == "no") & (D == "no"), 
                     evidence = TRUE)
}

summary(prob)

# Result:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.2714  0.2864  0.2908  0.2909  0.2954  0.3132 
...