一类SVM检测异常值

时间:2015-01-01 16:26:07

标签: machine-learning classification weka libsvm arff

我的问题是

  

我想构建一个一个类SVM分类器来识别测试文件中的名词/方面。   培训文件包含名词列表。测试有单词列表。

这就是我所做的:

我正在使用Weka GUI,并且我已经训练了一个类SVM(libSVM)来获取模型。

  

现在,模型将测试文件中的这些单词分类为生成的模型中分类器标识为名词。其他人被归类为异常值。 (所以它只是像一个查找工作。如果它在训练模型中被识别为名词,那么'是'否则' no')

那么如何建立一个合适的分类器呢? (我的意思是输入格式及其应包含的信息?)

注意:

  • 我不会在培训档案中给出负面的例子,因为它是一个班级。
  • 我的输入格式为 arff
  • 培训文件的格式是一组字,是
  • 测试文件的格式是一组字,

修改 我的测试文件将包含名词短语。因此,我的分类器的工作是从测试文件中的候选人那里获取名词。

1 个答案:

答案 0 :(得分:4)

您的数据格式不适合此问题。

如果你把

word,class

成对进入SVM,真正放入SVM的是稀疏向量,它们由一个单词组成,对应于你的单词,即

0,0,0,0,0,...,0,0,1,0,0,0,...,0,0,0,0,yes

分类器可以对此类数据执行的任何操作都是过度拟合和记忆。对于未知的新单词,结果将毫无用处。


如果您希望分类器能够抽象概括,那么您需要仔细提取您的文字中的功能

可能的特征是n-gram。所以"示例"可以表示为

exa:1, xam:1, amp:1, mpl:1, ple:1

现在你的分类器/ SVM可以学习如何使用n-gram""是典型的名词。 如果你添加"开头词"结果可能会更好。和#34;词尾"符号,

^ex:1, exa:1, xam:1, amp:1, mpl:1, ple:1, le$:1

并且也可能使用多于一个n-gram长度,例如

^ex:1, ^exa:1, exa:1, exam: 1, xam:1, xamp:1, amp:1, ampl:1, mpl:1, mple1:1, ple:1, ple$.1, le$:1

但当然,您添加的数据越多,搜索空间越大,这可能会导致过度拟合。