最近看东西,接触了一些有关Structured SVM的研究应用。
Structured
SVM可以理解为对传统SVM的一种扩展。所谓structured,是体现在svm的output上。传统的svm的输出是单变量,比如预测class
label或者regression value等等。而structured svm允许学习一个分类器来产生structured
output
label。比如说可以用在句子分词上,输出是句子分词后的结构。还有用在排序上,输入是查询和相关的文档,输出的是这些文档的一个ranking。
Cornell University的牛人Thorsten Joachims在Structured Svm的研究上做了许多工作。SVM Struct是他们设计的一个Structured
Svm的一个框架,遵循这个框架用户可以根据自己的工作,实现相应的函数,从而设计产生自己需要的Structured
SVM分类器。因此,可以把SVM Struct看作,是一组用来实现不同功能的Structured Svm分类器的API函数。利用SVM
Struct,Thorsten Joachims已经实现了一系列的Structured SVM实例,包括SVM
hmm(学习一个HMM模型,可以用来产生出入句子的分词),SVM ranking(产生输入的排序)等等。
SVM
Struct是C语言实验的,因此要求用户在实现自己的函数时也必须用C语言完成。为了方便用户,又出现了SVM
Python,一个Python版本的SVM Struct。用户通过编写Python Module来实现不同的SVM
Struct实例,这样做虽然会在速度会有所牺牲,但却可以使用户远离一些 “non-learning-related”
的问题(比如内存管理)。
以前就听说过Structured
Learning,但只知道其大体的概念。听师兄说现在用的挺多的,于是前一段时间断断续续的看了有关这方面的一些资料,在此总结一下。
Structured Learning和Structured
SVM的学习(上)http://bubblexc.com/y2011/503/
Structured Learning和Structured
SVM的学习(下)http://bubblexc.com/y2011/547/