machine-learning - 用于检测异常值的一类 SVM

标签 machine-learning classification weka libsvm arff

我的问题是

I want to build a one class SVM classifier to identify the nouns/aspects from test file. The training file has list of nouns. The test has list of words.

这就是我所做的:

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

Now the model classifies those words in test file that the classifier identified as nouns in the generated model. Others are classified as outliers. ( So it is just working like a look up. If it is identified as noun in trained model, then 'yes' else 'no')

那么如何构建一个合适的分类器呢? (我的意思是输入的格式以及它应该包含哪些信息?)

注意:

  • 我不会在训练文件中给出反例,因为它是一类。
  • 我的输入格式是arff
  • 训练文件的格式是一组单词,yes
  • 测试文件的格式是一组单词,?

编辑 我的测试文件将包含名词短语。所以我的分类器的工作是从测试文件中的候选者那里获取名词单词。

最佳答案

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

如果你放

word,class

将数据对放入 SVM,您真正放入 SVM 的是由单个向量组成的稀疏向量,对应于您的单词,即

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

分类器对此类数据所做的任何操作都是过度拟合和内存的。对于未知的生词,结果将毫无用处。

<小时/>

如果您希望分类器能够抽象泛化,那么您需要仔细从单词中提取特征

可能的特征是 n 元语法。所以“example”这个词可以表示为

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

现在您的分类器/SVM 可以了解到 n 元语法“ple”对于名词来说是典型的。 如果添加“词开头”和“词结尾”符号,结果可能会更好,

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

也可能使用多个 n 元语法长度,例如

^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

但是,当然,添加的数据越多,数据集就越大,搜索空间就会增大,这可能会再次导致过度拟合。

关于machine-learning - 用于检测异常值的一类 SVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27732503/

相关文章:

python - 为什么 cross_validation.train_test_split 中的参数 random_state 是整数而不是 bool 值

python - 如何减小数据框的大小?

machine-learning - Weka机器学习:how to interprete Naive Bayes classifier?

python - 从词频创建 ARFF

normalization - Weka 归一化列

machine-learning - 告诉 Weka 在 ARFF 文件中预测哪些属性?

python-3.x - 如何删除异常值

python - 随机森林提高准确性

matlab - MATLAB 中神经网络分类的 10 倍交叉验证示例

java - 使用感知器学习 boolean AND 函数