在机器学习中合并稀疏和密集的数据以提高性能


17

我有可预测的稀疏特征,也有一些也可预测的密集特征。我需要将这些功能结合在一起,以提高分类器的整体性能。

现在,当我尝试将它们组合在一起时,稠密特征往往比稀疏特征更占主导地位,因此与仅具有稠密特征的模型相比,AUC仅改善了1%。

有人遇到过类似的问题吗?非常感谢您的投入,有点卡住。我已经尝试了许多不同的分类器,分类器的组合,特征转换以及使用不同算法的处理。

先谢谢您的帮助。

编辑

我已经尝试了评论中给出的建议。我观察到的是,对于几乎45%的数据,稀疏特征的性能确实很好,只有稀疏特征的AUC约为0.9,而对于其余稠密特征,AUC约为0.75的性能很好。我尝试将这些数据集分离出来,但得到的AUC为0.6,因此,我不能简单地训练模型并确定要使用的功能。

关于代码段,我已经尝试了很多东西,以至于我不确定要分享什么:(


您的功能多么稀疏?它们填充了1%还是更少?
若昂Almeida的

2
此外,您还应该注意,如果要素稀疏,则它们仅应有助于对数据集的一小部分进行分类,这意味着总体准确性不会发生明显变化。这有点猜测,因为我不知道您的数据集的特征是什么。
若昂Almeida的

@JoãoAlmeida他们不是那么稀疏。它们充满了大约5%。问题是,当我查看两个模型的预测差异时,其中的预测有所不同,具有稀疏特征的模型往往会表现更好,这就是为什么我希望当我将它们与密集特征结合起来时,它也会看到AUC的增长。我得到了提振,但似乎很低。
Sagar Waghmode

呜呜......我没有对你有任何想法,然后
若奥·阿尔梅达

我遇到了同样的问题,也许只是将密集而稀疏的特征放在单个模型中并不是一个好选择。也许您可以尝试广泛和深入的模型。如果您尝试过这种方法,请选择“宽”表示稀疏特征,而“深”表示密集特征。
吉建业

Answers:


6

这似乎是主成分分析的工作。在Scikit中,PCA实施得很好,并且对我有很多帮助。

PCA以某种方式结合了您的功能。通过限制组件的数量,可以使用无噪声的数据(在最佳情况下)获取模型。因为您的模型和数据一样好。

下面考虑一个简单的例子。

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

为什么我选了80个?当我绘制累积方差时,我在下面得到了这一点,它告诉我,使用〜80个分量,我几乎可以达到所有方差。 累积方差

因此,我想尝试一下,在您的模型中使用它。应该会有所帮助。


4

组合特征的最佳方法是通过集成方法。基本上有三种不同的方法:装袋,增强和堆叠。您可以使用功能选择增强的Adabbost(在这种情况下考虑稀疏特征和密集特征),也可以使用基于堆栈的(随机特征-随机子空间)。我更喜欢第二种选择,您可以通过使用随机数训练一组基础学习者(决策树)。子集和随机特征(保持培训基础学习者,直到您涵盖了全部功能)下一步是测试“训练”集以生成元数据。使用此元数据来训练元分类器。元分类器将找出哪个功能更重要以及应使用哪种关系


能否请您分享相关文档?没完全明白您的意思吗?
Sagar Waghmode '16

您可以阅读有关对“ stackingC的问题,1999年”进行抵押的文章,也可以阅读有关stackingC的文章。了解我将整个矢量(例如,对于Hog为1x36)作为一个特征而不是其中的尺寸是非常重要的。您需要跟踪与哪个基础学习者一起使用的功能。要注意过度拟合的问题
Bashar Haddad

如果您提供有关数据库,类数,样本数,代码,尝试过的东西,注意到的东西,数据不平衡问题,嘈杂的样本等等的更多详细信息,等等。所有这些细节都很重要,可以帮助您选择最佳方法。如果可以的话,请给我更多详细信息,我可能会以更好的方式提供帮助
Bashar Haddad

1

变量组可能是多重共线性的,或者稀疏和稠密之间的转换可能会出错。您是否考虑过使用投票分类器/集成分类?http://scikit-learn.org/stable/modules/ensemble.html 这样,您可以处理上述两个问题。


我已经尝试了集成技术以及投票分类器。仍然没有运气。
Sagar Waghmode '16

那么您是否看到两个数据集的预测之间有很多重叠?可能确实没有新信息?即数据说明了同样的故事。
迭戈

是的,我确实做到了。尽管预测并不完全不同,但预测不同的样本数量却占数据的相当高(大约15%至20%)。对于这些样本,具有稀疏特征的模型比具有密集特征的模型的性能更好。我的观点是,如果稀疏特征的性能更好,为什么它们不成为到目前为止我尝试过的任何模型中的重要特征。
Sagar Waghmode

您使用什么预测器算法?
迭戈

我已经尝试了很多算法,并选择了“梯度增强模型”,但对于我的问题,我也经常使用随机森林。
Sagar Waghmode '16

1

除了上面的一些建议外,我建议使用两步建模方法。

  1. 首先使用稀疏特征并开发最佳模型。
  2. 从该模型计算预测概率。
  3. 将该概率估计值输入第二个模型(作为输入特征),该模型将包含密集特征。换句话说,使用所有密集特征概率估计来构建第二个模型。
  4. 最终分类将基于第二个模型。

0

仅对稀疏特征尝试PCA,并将PCA输出与密集特征结合使用。

因此,您将获得密集的(原始)要素集+密集的要素集(本来稀疏的)。

+1问题。请用结果更新我们。


哇,这实际上降低了AUC :(不确定,这意味着什么,需要检查特征的重要性以及全部。但是我的理念是,在大约2.3k稀疏特征中,我使用了1k个特征来解释0.97的变异比,这种信息丢失可能使AUC下降了
Sagar Waghmode

有趣。感谢分享。我们有非常相似的数据集(1k-2k稀疏特征)。出于好奇,您生成了多少个主要的componnet?如果该数字太低,则可以解释AUC下降的原因。
塔加

正如我已经说过的,我已经生成了1000个主成分,它们解释了0.97方差。
Sagar Waghmode '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.