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中的朴素贝叶斯:如何将对象分类为新的“未分类”类的主要内容,如果未能解决你的问题,请参考以下文章

R中的朴素贝叶斯分类 - 从头开始

R中的朴素贝叶斯分类器仅预测一个类

11.分类与监督学习,朴素贝叶斯分类算法

11.分类与监督学习,朴素贝叶斯分类算法

朴素贝叶斯分类之垃圾短信识别

朴素贝叶斯分类算法的sklearn实现