gpt4 book ai didi

python - 通过 libsvm 对 n-gram 进行线性一级 SVM 训练的参数估计

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:28 24 4
gpt4 key购买 nike

我知道,对此有多个问题,但没有一个是针对我的特定问题的。

我将简化我的问题以使其更清楚。假设我有来自英语文档的多个句子,我想使用一个类 svm(在 libsvm 中)对它们进行分类,以便之后能够看到异常情况(例如德语句子)。

对于训练:我只有一个类的样本(假设其他类事先不存在)。我提取了所有 3-gram(因此特征空间最多包含 16777216 个不同的特征)并将它们保存为 libsvm 格式(标签=1,以防万一)

现在我想估计我的参数。我尝试通过附加参数来使用 grid.py,但是,运行时对于 rbf 内核来说太大了。所以我尝试使用线性内核(因此,可以更改 grid.py 以便仅使用一个 gamma 值,因为它对线性内核无关紧要)。

无论如何,最小的 c grid.py 测试将显示为最佳解决方案(-c 对线性内核有影响吗?)。

此外,无论我如何更改 -n (nu) 值,每次得分之间的相同关系都会实现(即使支持向量的数量发生变化)。使用 python 实现收集分数。 (分数之间的关系意味着,例如,起初它们是 -1 和 -2,我更改 nu 然后它们是 -0.5 和 -1,所以如果我对它们进行排序,总是出现相同的顺序,如本例所示):

# python2
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from svmutil import *
y,x = svm_read_problem("/tmp/english-3-grams.libsvm") # 5000 sentence samples
ym,xm = svm_read_problem("/tmp/german-3-grams.libsvm") # 50 sentence samples
m = svm_train(y,x,"-s 2 -t 2 -n 0.5");

# do the prediction in one or two steps, here is one step:
p_l, p_a, p_v = svm_predict(y[:100]+ym[:100],x[:100]+xm[:100],m)

# p_v are our scores.
# let's plot a roc curve
roc_ret = roc_curve([1]*100+[-1]*100,p_v)
plt.plot(roc_ret[0],roc_ret[1])
plt.show()

在这里,每次都获得完全相同的 roc 曲线(即使 -n 不同)。即使只有 1 个支持向量,也会显示相同的曲线。

因此,我的问题(假设每次训练最多 50000 个样本):- 为什么 -n 没有改变任何一类培训过程?- 我需要为一级 svm 更改哪些参数?- 线性内核是最好的方法吗? (+ 关于运行时)和 rbf 内核参数网格搜索需要很长时间才能处理如此大的数据集- liblinear 没有被使用,因为我想做异常检测 = 一个类 svm

最好的问候,多种

最佳答案

性能影响是 16777216 个元素的巨大特征空间的结果。这导致德语句子等元素的向量非常稀疏。

Yang 和 Petersen 的一项研究,A Comparative Study on Feature Selection in Text Categorization表明,积极的特征选择并不一定会降低分类准确性。我在对(医学)德语文本文档进行文本分类时取得了类似的结果。

如评论中所述,LIBLINEAR 很快,因为它是为此类稀疏数据构建的。然而,您最终得到的是一个线性分类器,它既有缺点也有优点。

我建议采用以下策略:

  1. 使用 N

    的剩余特征空间执行积极的特征选择(例如使用 InformationGain)
  2. 结合交叉验证逐步增加 N 并为您的数据找到最佳加工 N

  3. 使用在 2 中找到的 N 进行网格搜索。

  4. 使用 3. 中找到的最佳匹配参数和 2. 中找到的 N 训练您的分类器

关于python - 通过 libsvm 对 n-gram 进行线性一级 SVM 训练的参数估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com