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


我想

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

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

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

你可以尝试像组套索(http://www.di.ens.fr/~fbach/grouplasso/index.htm - matlab)或稀疏组套索(http://spams-devel.gforge.inria.fr/- 似乎有一个python接口)这样的东西,它们通过不同类型的正则化解决了多元回归问题。

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

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

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

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

SVM 的变体可能可以在多任务学习环境中设计,以学习一些常见的基于内核的中间表示,适合重用以预测多维目标,但这在 libsvm AFAIK 中没有实现。谷歌多任务学习SVM,如果你想了解更多信息。

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

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

最新更新