不要使用 -SNE 作为预测变量(通常)。t
正如之前的答案中所指出的那样,在最佳情况下使用所有数据来计算 -SNE 表示是一种不好的做法,即使一个人保留了响应变量。此外,直接使用 -SNE 还会使原始建模过程在出现新数据时变得无用(正如 OP 也正确评论的那样),因为我们无法重建新的嵌入。tt
作为一种解决方法,我认为值得探索深度自动编码器的选项。这将允许用户轻松地将新数据映射到我们的“有趣表示”上。深度自动编码器可以学习数据集的高度非线性表示。我们将在我们的训练折叠上训练自动编码器(类似于我们对 PCA 所做的),然后相应地投影新数据。amoeba 关于“在 Tensorflow 中构建自动编码器以超越 PCA ”的回答是帮助您入门的绝佳资源。
在特定情况下,人们可能能够构建一个深度神经网络来在一个新样本上此选项将解决上述问题(数据重用,不对未见数据进行泛化)。我不认为这与首先使用深度自动编码器有很大不同,但从概念上讲,我发现它更加复杂。此外,自动编码器文献有许多可能派上用场的扩展(例如去噪自动编码器)。t
关于报告的 10%+ 性能提升的确切现象:假设没有意外使用响应变量,我怀疑数据可能具有 RF 分类器无法轻松检测到的非线性嵌入。随机森林(或任何其他模型)不保证会发现任何非线性关联。我建议检查 -SNE 输出本身。也许其中一些模式并不难解释,你的一些聪明/受过教育的特征工程可以给你一个不错的提升。t
我希望你看到,有点反气候,直接使用 -SNE 输出不是很直接。 -SNE 是一个非常有用的工具;然而,与许多伟大的工具一样,当我们只有螺丝时,我们很容易将它误用作锤子。tt