我想询问是否有人知道如何使用Python的libsvm绑定来进行高维输出(多于一个维度)的支持向量回归?我查看了示例,但它们都假设输出是一维的。
回答:
支持向量机作为一个数学框架,是基于单一预测变量来构建的。因此,大多数实现它们的库在API中也会反映这一点,即使用单一目标变量。
你可以为数据中的每个目标维度训练一个单独的SVM模型。
-
优点是,你可以在集群上并行训练这些模型,因为每个模型都是独立的
-
缺点是,子模型之间没有任何共享,也无法从它们各自在输入数据结构中发现的内容中受益,并且可能需要大量内存来存储模型,因为它们没有共享的中间表示
在多任务学习设置中,可以设计SVM的变体,以学习一些基于核的中间表示,适合重用来预测多维目标,但据我所知,这在libsvm中尚未实现。如果你想了解更多,可以谷歌搜索多任务学习SVM。
另一种选择是多层感知器(一种前馈神经网络),它们天然能够处理多维输出,因此在共享数据的中间表示方面应该更有效,特别是如果它们足够深,并且第一层通过使用自编码器目标函数进行无监督预训练的话。
你可以查看http://deeplearning.net/tutorial/,那里有关于各种神经网络架构的良好介绍,以及实施它们的实用工具和示例。