R中的朴素贝叶斯:如何将对象分类为新的“未分类”类
Posted
技术标签:
【中文标题】R中的朴素贝叶斯:如何将对象分类为新的“未分类”类【英文标题】:Naive Bayes in R: How to classify object into new "Unclassified" class 【发布时间】:2016-09-16 05:19:15 【问题描述】:所以我有包含 4 个类的对象的数据集。我正在使用朴素贝叶斯分类器对新对象进行分类。是否可以确定新对象是否真的不应该属于任何类(= 以某种方式插入新类“未分类”)?
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)
【问题讨论】:
直接的方法是获取一些应该是“未分类”的数据示例,并将它们提供给naiveBayes
(因此您将拥有 5 个类而不是 4 个)。您可能还会想到一种通过具有 4 个类的算法获取概率并以某种方式建立标准 ==> 的方法,但这确实是任意的。干杯。
【参考方案1】:
技术上是可以的。您使用的是多项式朴素贝叶斯分类器。数学可以表示如下:
P(B|A)*P(A)
P(A|B) = ____________________
P(B|A)*P(A) + P(B|C)*P(C) +...+P(B|n)*P(n)
其中 A 到 n 是您要分类的不同类别,P(B|A) 是 B 发生的概率,假设 A 已经发生,P(A) 是 A 发生的概率。
如果要添加第 5 个“未分类”分类,则必须弄清楚以下两个值:
P(B| unclassified)*P(unclassified)
A 未被分类的概率就是
1-P(A)-P(B)-P(C)-P(D)
对于您当前的 4 个课程中的每一个。但是,您仍然需要运行必要的分析来弄清楚您的
P(B| unclassified)
术语应该是。
【讨论】:
以上是关于R中的朴素贝叶斯:如何将对象分类为新的“未分类”类的主要内容,如果未能解决你的问题,请参考以下文章