在我正在做的一个项目中,RandomForest为我提供了1类的准确结果,梯度提升分类器为0类提供了准确的结果。我想同时使用这两个分类器,即最好的两个分类器。在pythonsklearn中是否可能。我尝试过使用投票分类器(不同权重的软选项),但这对我的事业没有多大帮助。在
具体来说,这就是问题所在,当我在测试集上使用RandomForest
分类器时(对于二进制分类任务),这是混淆矩阵-
array([[5230, 7656],
[ 683, **3340**]], dtype=int64)
当我在相同的测试数据上使用GradientBoostingClassifier
时,这是我得到的混淆矩阵-
可以看出,RF正确地预测了1类(3340),而GBM正确地预测了0类(11404)。如何在某种集成方法中同时使用这两个分类器,以便对类1使用RF,对类0使用GBM?在
有谁能帮我一下吗?在
干杯!在
如果您查看混淆矩阵的列,就会发现一个方法偏向于类1(“GradientBoostingClassifier”),而另一个方法偏向于类2(
RandomForest
)。在您还应该意识到,您使用的两个方法本身都是集成方法。在
为了更好地理解这个问题,假设您有
method 1
,它预测类1作为输出,而不管输入是什么,method 2
预测类2作为输出,而不管输入是什么。现在试着计算这两种方法的混淆矩阵。对于method 1
,它看起来像:对于“方法2”:
^{pr2}$您还应该熟悉precision and recall。在
所以我要说的是,你使用的这两个方法中没有一个真正擅长于一个类。他们只是偏向于一个类,而另一个类的误报和漏报的代价。这两种方法的结合可以提高你的表现,但它不能满足你的要求。在
你要问的基本问题是:如果输入是类1,使用方法1;如果输入是类2,使用方法2。现在想想看,如果你知道你的输入属于哪个类,你就不会应用这些分类方法了,是吗?;)
编辑:如果您想将这两种方法组合起来,可以使用这些方法的估计概率。重要的是要记住,在这两种方法的情况下,给定的概率都是估计值,因为没有一种方法是概率方法。在
假设输入
X
是类y
的成员的概率,由方法m
估计为:P(y|X, m)
。然后您可以:其中
M
是池中所有模型的集合。当然,如果出于某种原因,您更信任一种方法而不是另一种方法,那么您可以计算日志的加权和。在相关问题 更多 >
编程相关推荐