我想问一下是否有人对如何使用libsvm的python绑定在具有高维输出(多个)的python中进行支持向量回归有想法或示例?我检查了示例,它们都假设输出是一维的。
2 回答
libsvm 可能不是完成这项任务的最佳工具。
您描述的问题称为多元回归,通常对于回归问题,SVM 不一定是最佳选择。
You could try something like group lasso (http://www.di.ens.fr/~fbach/grouplasso/index.htm - matlab) or sparse group lasso (http://spams-devel.gforge.inria.fr/ - seems to have a python interface), which solve the multivariate regression problem with different types of regularization.
支持向量机作为一个数学框架是根据单个预测变量制定的。因此,大多数实现它们的库都会将此反映为在其 API 中使用单个目标变量。
您可以做的是为数据中的每个目标维度训练一个 SVM 模型。
从好的方面来说,您可以在 // 集群上训练它们,因为每个模型都是相互独立的
不利的一面是,子模型将不共享任何内容,也不会受益于它们在输入数据结构中单独发现的内容,并且可能需要大量内存来存储模型,因为它们没有共享的中间表示
可以在多任务学习设置中设计 SVM 的变体,以学习一些常见的基于内核的中间表示,适合重用以预测多维目标,但这在 libsvm AFAIK 中没有实现。如果您想了解更多信息,请在Google 上进行多任务学习 SVM 。
或者,多层感知器(一种前馈神经网络)可以自然地处理多维结果,因此应该更好地共享跨目标重用的数据的中间表示,特别是如果它们与第一层预置足够深- 使用自动编码器目标函数以无监督方式训练。
您可能想看看http://deeplearning.net/tutorial/以获得对各种神经网络架构和实用工具和示例的很好的介绍,以有效地实现它们。