【问题标题】:How to approach machine learning problems with high dimensional input space?如何处理具有高维输入空间的机器学习问题?
【发布时间】:2011-01-16 09:12:36
【问题描述】:

当我尝试在一些高维输入上应用一些 ML 算法(更具体地说,特别是 SVM 分类)时,我应该如何处理这种情况,而我得到的结果并不十分令人满意?

1、2 或 3 维数据以及算法的结果都可以可视化,因此您可以了解正在发生的事情,并了解如何解决问题。一旦数据超过 3 维,除了直观地玩弄参数我真的不知道如何攻击它?

【问题讨论】:

    标签: machine-learning classification svm


    【解决方案1】:

    你对数据做了什么?我的回答:没什么。支持向量机设计用于处理高维数据。我现在正在研究一个涉及使用 SVM 进行监督分类的研究问题。除了在 Internet 上查找资源外,我还对分类前降维的影响进行了自己的实验。使用 PCA/LDA 预处理特征并没有显着提高 SVM 的分类精度。

    对我来说,这完全符合 SVM 的工作方式。设 x 为 m 维特征向量。设 y = Ax,其中 y 在 R^n 中,x 在 R^m 中,因为 n

    这是一个讨论在 SVM 之前使用 PCA 的讨论:link

    可以做的是更改您的 SVM 参数。例如,对于 libsvm link,参数 C 和 gamma 对分类成功至关重要。 libsvm 常见问题解答,尤其是此条目 link,包含更多有用的提示。其中:

    1. 在分类之前缩放您的特征。
    2. 尝试获得平衡的类。如果不可能,那么对一个班级的惩罚比对另一个班级的惩罚更大。查看更多关于 SVM 不平衡的参考资料。
    3. 检查 SVM 参数。尝试多种组合以获得最佳组合。
    4. 首先使用 RBF 内核。它几乎总是效果最好(从计算上讲)。
    5. 差点忘了……测试前,交叉验证

    编辑:让我添加这个“数据点”。我最近在四个专有数据集上使用带有 PCA 预处理的 SVM 进行了另一项大规模实验。对于任何降维选择,PCA 都没有改善分类结果。具有简单对角缩放的原始数据(对于每个特征,减去均值并除以标准差)表现更好。我没有做出任何广泛的结论——只是分享这个实验。也许在不同的数据上,PCA 可以提供帮助。

    【讨论】:

    • 问题不是降维,作者只是抱怨他无法掌握多维数据。但是无所谓。 PCA 对您的情况没有帮助这一事实并不意味着它没有用。尽量弥补人工数据:一维可分的点。添加一些噪声以获得 50 维数据。最大边距超平面可能会漂移。
    • 我认为我的回答完全可以解决这个问题。但是关于“添加一些噪声以获得50维数据”的说法,添加noise与添加features是不一样的。如果将 49 个包含不相关噪声的特征连接到一个有意义的特征,两个类可从中分离,SVM 仍然会像在 1 维空间中一样成功地分离 50 维空间中的类。毫无疑问。
    • 史蒂夫,我问过一位教授这个问题。你当然是对的,降维无助于分类,但它仍然有助于提高分类器的判别力。此外,PCA 不是最好的方法,因为它没有考虑类的结构。相关向量机可能更合适:en.wikipedia.org/wiki/Relevance_Vector_Machine
    • 感谢您的后续评论。是的,我同意——虽然通过降维(​​至少通过像 PCA 这样的线性变换)不可能实现“从不可分到可分”,但“提高判别力”是可能的。 RVM 是一个不错的建议。
    • PCA 或降维并不是为了改善结果(实际上它必然会降低它).. 它的作用是降低复杂性、计算量、更容易的可视化等
    【解决方案2】:

    一些建议:

    • 将数据(仅用于可视化)投影到低维空间(使用 PCA 或 MDS 或任何对您的数据有意义的方法)

    • 尝试了解学习失败的原因。你觉得它过拟合吗?你认为你有足够的数据吗?您的功能中是否可能没有足够的信息来解决您要解决的任务?有很多方法可以在不可视化数据的情况下回答每个问题。

    此外,如果您告诉我们任务是什么以及您的 SVM 输出是什么,人们可能会提出更具体的建议。

    【讨论】:

      【解决方案3】:

      您可以尝试通过 PCA 或类似技术降低问题的维数。请注意,PCA 有两个重点。 (1) 它假设它所应用的数据是正态分布的,并且 (2) 结果数据失去了它的自然意义(导致黑盒)。如果你能忍受,那就试试吧。

      另一种选择是尝试几种参数选择算法。由于这里已经提到了 SVM,您可以尝试 Chang 和 Li (Feature Ranking Using Linear SVM) 的方法,他们使用线性 SVM 来预先选择“有趣的特征”,然后在所选特征上使用基于 RBF 的 SVM。如果您熟悉Orange, a python data mining library,您将能够在不到一个小时的时间内编写此方法。请注意,这是一种贪婪的方法,由于其“贪婪”,在输入变量高度相关的情况下可能会失败。在这种情况下,如果您无法使用 PCA 解决此问题(见上文),您可能需要使用启发式方法,该方法尝试选择最佳可能的预测变量组合。这种方法的主要缺陷是过度拟合的高潜力。确保你有一堆在整个模型构建过程中没有看到的“原始”数据。在您确定模型准备就绪后,仅在该数据上测试您的模型一次。如果你失败了,不要再使用这个数据来验证另一个模型,你将不得不找到一个新的数据集。否则,您将无法确定自己没有再次过拟合。

      参数选择论文列表: Feature selection for high-dimensional genomic microarray data

      哦,还有关于 SVM 的另一件事。 SVM 是一个黑盒子。您最好弄清楚生成数据的机制是什么,并对机制而不是数据进行建模。另一方面,如果这是可能的,你很可能不会在这里问这个问题(而且我不会对过度拟合感到如此痛苦)。

      参数选择论文精选列表

      1. Feature selection for high-dimensional genomic microarray data
      2. Wrappers for feature subset selection
      3. Parameter selection in particle swarm optimization
      4. 我在开发这个Stochastic method to determine, in silico, the drug like character of molecules的实验室工作

      【讨论】:

        【解决方案4】:

        我会这样处理这个问题:

        “我得到的结果不太令人满意”是什么意思?

        如果 training 数据的分类率不令人满意,则意味着

        • 您的训练数据(错误分类的数据)中有异常值。在这种情况下,您可以尝试诸如 RANSAC 之类的算法来处理它。
        • 您的模型(本例中为 SVM)不太适合解决此问题。这可以通过尝试其他模型(adaboost 等)或向当前模型添加更多参数来诊断。
        • 数据的表示不太适合您的分类任务。在这种情况下,使用特征选择或降维技术对数据进行预处理会有所帮助

        如果测试数据的分类率不令人满意,则意味着您的模型过拟合数据:

        • 要么你的模型太复杂(参数太多),需要进一步约束,
        • 或者你在一个太小的训练集上训练它,你需要更多的数据

        当然也可以是上述元素的混合。这些都是攻击问题的“盲目”方法。为了更深入地了解问题,您可以通过将数据投影到较低维度来使用可视化方法,或者寻找更适合您理解的问题域的模型(例如,如果您知道数据是正态分布的,您可以使用 GMM 对数据进行建模...)

        【讨论】:

          【解决方案5】:

          如果我没记错的话,您正在尝试查看 SVM 的哪些参数可以为您提供最佳结果。您的问题是模型/曲线拟合。 几年前我曾研究过类似的问题。有大量的库和算法可以做同样的事情。我使用Newton-Raphson 的算法和遗传算法的变体来拟合曲线。

          通过真实世界的实验生成/猜测/获得您希望的结果(或者如果您正在做简单的分类,请自己做)。将此与 SVM 的输出进行比较。我之前提到的算法重申了这个过程,直到你的模型(在这种情况下为 SVM)的结果与预期值有些匹配(请注意,这个过程需要一些时间,具体取决于你的问题/数据大小。我花了大约 2 个月的时间一个 140 节点的 beowulf 集群)。

          如果您选择 Newton-Raphson's,this 可能是一个不错的起点。

          【讨论】:

            猜你喜欢
            • 2021-08-01
            • 2018-02-16
            • 2015-10-08
            • 1970-01-01
            • 2014-06-13
            • 1970-01-01
            • 2015-02-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多