2016-05-19 7 views
0

Итак, у меня есть набор данных с объектами из 4 классов. Я использую классификатор Naive Bayes для классификации новых объектов. Можно ли определить, действительно ли новый объект не должен принадлежать ни одному классу (= как-то вставить новый класс «Unclassified»)?Naive Bayes in R: Как классифицировать объект в новый класс «Неклассифицированный»

convert_counts <- function(x) { 
x <- ifelse(x > 0, 1, 0) 
x <- factor(x, levels = c(0, 1), labels = c("No", "Yes")) 
return(x) 
} 
sntcs_train1 <- apply(sntcs_train1, MARGIN = 2, convert_counts) 
sntcs_test1 <- apply(sntcs_test1, MARGIN = 2, convert_counts) 
library(e1071) 
sntcs_classifier <- naiveBayes(sntcs_train1, sntcs_train$Author) 
sntcs_test_pred <- predict(sntcs_classifier, sntcs_test1) 
+0

Простым подходом было бы получить некоторые примеры данных, которые должны быть «неклассифицированы», и подавать их на «naiveBayes» (поэтому у вас будет 5 классов вместо 4). Вы могли бы также подумать о способе получения вероятностей алгоритмом с 4 классами и установить критерий каким-то образом ==> однако это было бы действительно произвольным. Приветствия. – lrnzcig

ответ

0

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

      P(B|A)*P(A) 
    P(A|B) =   ____________________ 

      P(B|A)*P(A) + P(B|C)*P(C) +...+P(B|n)*P(n) 

где п есть отчетливые классы, которые вы хотите, чтобы классифицировать и P (B | A) есть вероятность B СОВЕРШАЕМЫЙ учитывая, что произошло и P (A) - вероятность появления А.

Если вы хотите добавить 5-ый «несекретные» классификацию, вы должны выяснить следующие два значения:

P(B| unclassified)*P(unclassified) 

вероятность быть незакрытый будет просто

1-P(A)-P(B)-P(C)-P(D) 

для каждый из 4-х текущих классов. Однако вам все равно придется провести необходимый анализ, чтобы выяснить, что ваш

P(B| unclassified) 

срок должен быть.

 Смежные вопросы

  • Нет связанных вопросов^_^