多类分类比二分类更容易?

机器算法验证 分类 参考 多级
2022-04-06 16:24:58

我的分类问题中有 10 个不同的类别。每个类有大约 200 个实例,具有 10.000 多个特征。我使用多项式贝叶斯分类进行分类。然而,事实证明,我只对第 10 类的结果感兴趣。

我的第一个想法是将类别 1 到 9 合并为负实例,同时将类别 10 设为正实例,有效地将其更改为二元问题。但是,我的顾问告诉我,多类分类可能会更好,因为有很多特征可以专门识别某个类别,而如果将类别 1 到 9 的所有实例都放在一起,情况可能并非如此。

我很难理解如果我们将其更改为二进制分类,结果不会有所改善。多类分类似乎总是比简单的二元分类更困难。

对此有何普遍看法?是否存在多类分类对特定类返回比对该类使用二元分类更好的结果的情况?我只想知道这是否是一种普遍的可能性,所以我可以在论文中为我的选择辩护。如果有任何关于这个问题的好论文/资源,请指向他们!

1个回答

这实际上是正确的,因为从这个模拟示例中可以使用 R

library(mvtnorm)
sigma <- matrix(c(1,0,0,1), ncol=2)
x1 <- rmvnorm(n=500, mean=c(0,0), sigma=sigma, method="chol")
x2<- rmvnorm(n=500, mean=c(3,0), sigma=sigma, method="chol")
x3 <- rmvnorm(n=500, mean=c(1.5,3), sigma=sigma, method="chol")
x4 <- rmvnorm(n=500, mean=c(-2.5,3), sigma=sigma, method="chol")
x5 <- rmvnorm(n=500, mean=c(-4,-2), sigma=sigma, method="chol")
data<-data.frame(rbind(x1,x2,x3,x4,x5))
data$class<-c(rep(1,500),rep(2,500),rep(3,500),rep(4,500),rep(5,500))

可视化数据

 library(ggplot2)
 qplot(data[,1],data[,2],colour=data[,3])

让我们拟合第一个模型,看看准确度和预测图

 library(e1071)
 fit1<-naiveBayes(factor(class) ~., data, laplace = 0)
 data$predicted<-predict(fit1,data[,1:2],type="class")
 sum(data$predicted==data$class)/length(data$predicted)
 [1] 0.9228
qplot(data[,1],data[,2],colour=data[,3])

现在更改数据并为具有二元分类的第二个模型重复相同的步骤

 data2<-data
 data2$class<-c(rep(2,500),rep(1,500),rep(2,1000),rep(1,500))
 qplot(data2[,1],data2[,2],colour=data2[,3])

 fit2<-naiveBayes(factor(class) ~., data2, laplace = 0)
 data2$predicted<-predict(fit2,data2[,1:2],type="class")
     sum(data2$predicted==data2$class)/length(data2$predicted)
 qplot(data2[,1],data2[,2],colour=data2$predicted)

根本原因是每个类都有一个分布增强了灵活性,并且可以对具有不同形状的区域进行建模