k折交叉验证之前或之后的线性判别分析(LDA)?

数据挖掘 机器学习 支持向量机 交叉验证 降维
2022-01-31 19:47:01

我有从一个小数据集中提取的特征,想通过使用 LDA 来减少维度。还想用 k 折交叉验证做一个 SVM 分类。

我的问题是:最佳实践是什么:在 CV 之前做 LDA,还是在 CV 内做 LDA(即每个训练和测试折叠)?

3个回答

这取决于您想要达到的目标。

如果您想可视化SVM 分类的结果,那么您应该在之后进行。

如果你想减少噪音,加快训练速度……或者任何你想减少问题维度的原因。你应该先这样做。

这里的一个有用的想法是在管道内执行 LDA 并在 CV 中选择最佳超参数。

在此示例中,您可以检查 PCA,然后检查逻辑回归。您的情况将与 LDA 和 SVM 类似。

我的回答是在交叉验证的每一折中都执行 LDA。

原因如下。交叉验证被用作评估模型性能的一种方式。这个估计基本上试图回答以下问题:

在对任意数据集进行训练时,我的模型将如何执行

如果您不使用交叉验证,您总是会冒很小的风险,即模型特别适合该特定训练集。也许,如果你的训练数据发生变化,你的模型也不会学习。

这就是为什么您要在每个折叠上运行 LDA。如果你不这样做,你就会冒这样的风险,即一旦你的训练数据发生变化,LDA 对你的 SVM 的影响可能会变成负面的。

当然,一旦你运行了交叉验证并找到了最佳的超参数设置,你应该在所有数据上训练你的模型一次。

有时不需要 k 折来带来比标准 LDA 更好的结果。它更适合大型数据集。