堆叠作为集成方法时我应该注意什么?

数据挖掘 机器学习 数据挖掘 分类
2022-03-03 08:44:54

我正在使用 SMO、逻辑回归、贝叶斯网络和简单 CART 算法进行分类。结果形成 WEKA:

Algorithm               Sensitivity (%)       Specificity (%)         Overall accuracy (%)
Bayesian Network            57.49                 76.09                    65.24
Logistic Regression         64.73                 69.86                    66.87
SMO                         54.32                 79.20                    64.69
Simple CART                 71.88                 61.51                    67.56

SMO 为我的分类问题提供了最好的结果,因为它正确分类了 79.20% 的类,这对我很重要。我想通过堆叠来提高这种准确性。我试图将其中一些结合起来。在大多数情况下,我无法提高准确性,但将 SMO 与 Logistic 回归叠加起来会稍微提高准确性。

我如何解释为什么将 SMO 与 Logistic 回归叠加起来比其他方法更好?

是否有任何概括,例如组合树分类器在堆叠中给出了很好的结果?堆放时我应该注意什么?

编辑:

                                Bayesian Network    Logistic Reg.   SMO         CART 
Kappa statistic                   0.3196             0.3367         0.3158      0.3335 
Mean absolute error               0.3517             0.4164         0.3531      0.4107 
Root mean squared error           0.5488             0.4548         0.5942      0.4547 
Relative absolute error (%)      72.3389              85.65        72.6299      84.477 
Root relative squared error (%) 111.3076            92.2452       120.5239     92.2318 
Weighted Avg. of F-Measure        0.653               0.671          0.676     92.2318 
ROC Area                          0.725               0.727          0.668       0.721

实例总数为25106,其中14641个属于a类,10465个属于b类。

=== Confusion Matrix of Simple CART ===
     a     b   <-- classified as
 10524  4117 |     a = 0
  4028  6437 |     b = 1

=== Confusion Matrix of SMO ===

    a    b   <-- classified as
 7953 6688 |    a = 0
 2177 8288 |    b = 1

=== Confusion Matrix of Logistic Regression ===

    a    b   <-- classified as
 9477 5164 |    a = 0
 3154 7311 |    b = 1

由于 SMO 在 b 类成功,而 CART 在 a 类成功,我尝试将这两种算法结合起来。但我无法提高准确性。然后我尝试将 SMO 与 Logistic Regression 结合起来,准确率提高了一点。为什么用逻辑回归集成 SMO 比用 CART 集成 SMO 更好,有什么解释吗?

2个回答

要直接回答有关堆叠的问题:您应该关心最小化 1)偏差和 2)方差。这是显而易见的,但在实践中,这通常归结为简单地拥有“多样化”的模型。(我很抱歉链接在付费墙后面,但还有其他一些类似的链接,您很可能会以其他方式找到它)

你不想要志同道合的模型的集合——他们会犯同样的错误并相互加强。

在堆叠的情况下,发生了什么?您让概率分类器在实际特征输入上的输出成为新特征。需要一组多样化的分类器,它们可以以任何方式给出关于边缘情况的信号。如果分类器 1 在 A、B 和 C 类上很糟糕,但在 D 类或某个边缘情况下却很棒,它仍然是对集成的一个很好的贡献。

这就是为什么神经网络在图像识别方面如此出色的原因——深度网络实际上是递归逻辑回归堆叠集成!现在人们并不总是使用 sigmoid 激活并且有许多层架构,但它是相同的一般思想。

我建议尝试通过在训练中使用分类器的预测输出向量(即,Diettrich 的 Kappa 统计量)上的一些相似性度量来最大化您的集合的多样性。这是另一个很好的参考

希望有帮助。

阅读 MLWave 的以下内容:http: //mlwave.com/kaggle-ensembling-guide/

这是堆叠/合奏的一个很好的起点。