使用Python的libsvm进行高维输出支持向量回归

我想询问是否有人知道如何使用Python的libsvm绑定来进行高维输出(多于一个维度)的支持向量回归?我查看了示例,但它们都假设输出是一维的。


回答:

支持向量机作为一个数学框架,是基于单一预测变量来构建的。因此,大多数实现它们的库在API中也会反映这一点,即使用单一目标变量。

你可以为数据中的每个目标维度训练一个单独的SVM模型。

  • 优点是,你可以在集群上并行训练这些模型,因为每个模型都是独立的

  • 缺点是,子模型之间没有任何共享,也无法从它们各自在输入数据结构中发现的内容中受益,并且可能需要大量内存来存储模型,因为它们没有共享的中间表示

在多任务学习设置中,可以设计SVM的变体,以学习一些基于核的中间表示,适合重用来预测多维目标,但据我所知,这在libsvm中尚未实现。如果你想了解更多,可以谷歌搜索多任务学习SVM

另一种选择是多层感知器(一种前馈神经网络),它们天然能够处理多维输出,因此在共享数据的中间表示方面应该更有效,特别是如果它们足够深,并且第一层通过使用自编码器目标函数进行无监督预训练的话。

你可以查看http://deeplearning.net/tutorial/,那里有关于各种神经网络架构的良好介绍,以及实施它们的实用工具和示例。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注