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

3

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


“more than one” -> 你是不是指多维的? - Junuxx
1
这篇文章似乎描述了一种做你想要的事情的方法,而且它是相当新的。不确定libsvm是否能够做到这一点。 - Junuxx
2个回答

4

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

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

您可以尝试使用group lasso(http://www.di.ens.fr/~fbach/grouplasso/index.htm - matlab)或sparse group lasso(http://spams-devel.gforge.inria.fr/ - 似乎有一个python界面),这些工具使用不同类型的正则化来解决多元回归问题。


3
作为数学框架,支持向量机是以单个预测变量为基础制定的。因此,大多数实现它们的库在其API中将使用一个单一的目标变量来反映这一点。
您可以为数据中的每个目标维度训练一个单独的SVM模型。
优点是,您可以在集群上训练它们,因为每个模型彼此独立。
缺点是,子模型不会共享任何东西,并且不会从它们各自发现的输入数据结构中受益,可能需要大量内存来存储模型,因为它们没有共享的中间表示。
SVM的变体可能可以在多任务学习环境中设计,以学习一些适合重用的基于核的中间表示来预测多维目标,但据我所知,这在libsvm中没有实现。如果您想了解更多信息,请搜索multi task learning SVM

另外,多层感知器(一种前馈神经网络)可以自然地处理多维输出,因此应该更擅长共享数据中间表示,特别是如果它们足够深,并且第一层以无监督方式使用自动编码器目标函数进行预训练。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接