一个类的RandomForest和另一个类的GradientBoosting

2024-06-23 20:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在我正在做的一个项目中,RandomForest为我提供了1类的准确结果,梯度提升分类器为0类提供了准确的结果。我想同时使用这两个分类器,即最好的两个分类器。在pythonsklearn中是否可能。我尝试过使用投票分类器(不同权重的软选项),但这对我的事业没有多大帮助。在

具体来说,这就是问题所在,当我在测试集上使用RandomForest分类器时(对于二进制分类任务),这是混淆矩阵-

array([[5230, 7656],
       [ 683, **3340**]], dtype=int64)

当我在相同的测试数据上使用GradientBoostingClassifier时,这是我得到的混淆矩阵-

^{pr2}$

可以看出,RF正确地预测了1类(3340),而GBM正确地预测了0类(11404)。如何在某种集成方法中同时使用这两个分类器,以便对类1使用RF,对类0使用GBM?在

有谁能帮我一下吗?在

干杯!在


Tags: 项目分类器选项二进制分类矩阵投票权重
1条回答
网友
1楼 · 发布于 2024-06-23 20:00:13

如果您查看混淆矩阵的列,就会发现一个方法偏向于类1(“GradientBoostingClassifier”),而另一个方法偏向于类2(RandomForest)。在

您还应该意识到,您使用的两个方法本身都是集成方法。在

为了更好地理解这个问题,假设您有method 1,它预测类1作为输出,而不管输入是什么,method 2预测类2作为输出,而不管输入是什么。现在试着计算这两种方法的混淆矩阵。对于method 1,它看起来像:

array([[12886, 0],
       [ 4023, 0]], dtype=int64)

对于“方法2”:

^{pr2}$

您还应该熟悉precision and recall。在

所以我要说的是,你使用的这两个方法中没有一个真正擅长于一个类。他们只是偏向于一个类,而另一个类的误报和漏报的代价。这两种方法的结合可以提高你的表现,但它不能满足你的要求。在

你要问的基本问题是:如果输入是类1,使用方法1;如果输入是类2,使用方法2。现在想想看,如果你知道你的输入属于哪个类,你就不会应用这些分类方法了,是吗?;)

编辑:如果您想将这两种方法组合起来,可以使用这些方法的估计概率。重要的是要记住,在这两种方法的情况下,给定的概率都是估计值,因为没有一种方法是概率方法。在

假设输入X是类y的成员的概率,由方法m估计为:P(y|X, m)。然后您可以:

log(P(0|X)) = \sum{m \in M} log(P(0|X, m))
log(P(1|X)) = \sum{m \in M} log(P(1|X, m))

其中M是池中所有模型的集合。当然,如果出于某种原因,您更信任一种方法而不是另一种方法,那么您可以计算日志的加权和。在

相关问题 更多 >

    热门问题