使用 python 的 libsvm 支持具有高维输出的向量回归

Posted

技术标签:

【中文标题】使用 python 的 libsvm 支持具有高维输出的向量回归【英文标题】:Support Vector Regression with High Dimensional Output using python's libsvm 【发布时间】:2012-06-20 11:40:05 【问题描述】:

我想问一下是否有人有关于如何使用 libsvm 的 python 绑定在具有高维输出(多个)的 python 中进行支持向量回归的想法或示例?我检查了示例,它们都假设输出是一维的。

【问题讨论】:

'多于一个' -> 你不是说多维吗? This 似乎描述了一种可以完成您正在寻找的方法,它是相当新的。不确定 libsvm 是否可以做到这一点。 【参考方案1】:

libsvm 可能不是完成这项任务的最佳工具。

您描述的问题称为多元回归,通常对于回归问题,SVM 不一定是最佳选择。

您可以尝试类似组套索 (http://www.di.ens.fr/~fbach/grouplasso/index.htm - matlab) 或稀疏组套索 (http://spams-devel.gforge.inria) .fr/ - 好像有python接口),用不同类型的正则化解决多元回归问题。

【讨论】:

【参考方案2】:

支持向量机作为一个数学框架是根据单个预测变量制定的。因此,大多数实现它们的库都会将此反映为在其 API 中使用单个目标变量。

您可以做的是为数据中的每个目标维度训练一个 SVM 模型。

从好的方面来说,您可以在 // 集群上训练它们,因为每个模型都是相互独立的

在不利的一面,子模型将不共享任何内容,也不会受益于它们在输入数据结构中单独发现的内容,并且可能需要大量内存来存储模型,因为它们没有共享中间表示

可以在多任务学习设置中设计 SVM 的变体,以学习一些适用于重复使用以预测多维目标的常见的基于内核的中间表示,但这在 libsvm AFAIK 中没有实现。如果您想了解更多信息,请使用 Google for multi task learning SVM。

或者,多层感知器(一种前馈神经网络)可以自然地处理多维结果,因此应该更好地共享跨目标重用的数据的中间表示,特别是如果它们足够深使用自动编码器目标函数以无监督方式预训练的第一层。

您可能想看看http://deeplearning.net/tutorial/,了解各种神经网络架构以及实用工具和示例,以便有效地实现它们。

【讨论】:

以上是关于使用 python 的 libsvm 支持具有高维输出的向量回归的主要内容,如果未能解决你的问题,请参考以下文章

LibSVM for Python 使用

训练时间和在 libsvm 中使用 gamma 和 C 过拟合

借助 GPU 支持对高维数据进行更快的 Kmeans 聚类

喜欢 libsvm 中的一类(python)

如何在 Matlab 中使用 libsvm?

机器学习之理解支持向量机SVM