как PcGw вычисляется в наивном байесовском quanteda в?

Вопрос задан: 8 месяцев назад Последняя активность: 8 месяцев назад
up -1 down

Рассмотрим обычный пример, который повторяет пример из 13.1 An Introduction to Information Retrieval https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf

txt <- c(d1 = "Chinese Beijing Chinese",
         d2 = "Chinese Chinese Shanghai",
         d3 = "Chinese Macao",
         d4 = "Tokyo Japan Chinese",
         d5 = "Chinese Chinese Chinese Tokyo Japan")

trainingset <- dfm(txt, tolower = FALSE)
trainingclass <- factor(c("Y", "Y", "Y", "N", NA), ordered = TRUE)

tmod1 <- textmodel_nb(trainingset, y = trainingclass, prior = "docfreq")

Согласно документации, PcGw это posterior class probability given the word. Как вычисляется? Я думал, что мы заботились только о том, наоборот, то есть P(word / class).

> tmod1$PcGw
       features
classes   Chinese   Beijing  Shanghai     Macao     Tokyo     Japan
      N 0.1473684 0.2058824 0.2058824 0.2058824 0.5090909 0.5090909
      Y 0.8526316 0.7941176 0.7941176 0.7941176 0.4909091 0.4909091

Спасибо!

1 ответ

up 1 down accepted

Применение четко объяснено в главе книги вы цитируете, но по сути, отличается тем, что PcGw является «вероятностью класса данного слова», и PwGc является «вероятностью слова данного класса». Первым из них является задней и то, что нам нужно для вычисления вероятности членства класса для группы слов, используя совместную вероятность (в quanteda, это применяется с использованием predict() функция). Последнее просто вероятность того, что исходит от относительных частот признаков в каждом классе, сглаженной по умолчанию путем добавления одного к пунктам по классу.

Вы можете проверить это, если вы хотите, следующим образом. Во-первых, группа учебные документы по учебного класса, а затем сгладить их.

trainingset_bygroup <- dfm_group(trainingset[1:4, ], trainingclass[-5]) %>%
    dfm_smooth(smoothing = 1)
trainingset_bygroup
# Document-feature matrix of: 2 documents, 6 features (0.0% sparse).
# 2 x 6 sparse Matrix of class "dfm"
#     features
# docs Chinese Beijing Shanghai Macao Tokyo Japan
#    N       2       1        1     1     2     2
#    Y       6       2        2     2     1     1

Тогда вы можете видеть, что (сглаженный) слово Вероятность такие же, как PwGc.

trainingset_bygroup / rowSums(trainingset_bygroup)
# Document-feature matrix of: 2 documents, 6 features (0.0% sparse).
# 2 x 6 sparse Matrix of class "dfm"
#     features
# docs   Chinese   Beijing  Shanghai     Macao      Tokyo      Japan
#    N 0.2222222 0.1111111 0.1111111 0.1111111 0.22222222 0.22222222
#    Y 0.4285714 0.1428571 0.1428571 0.1428571 0.07142857 0.07142857

tmod1$PwGc
#        features
# classes   Chinese   Beijing  Shanghai     Macao      Tokyo      Japan
#       N 0.2222222 0.1111111 0.1111111 0.1111111 0.22222222 0.22222222
#       Y 0.4285714 0.1428571 0.1428571 0.1428571 0.07142857 0.07142857

Но вы, вероятно, больше заботиться о Р (класс | слова), так как это то, что формула Байеса все и включает в себя вероятности до класса Р (с).