【发布时间】:2015-07-01 19:42:21
【问题描述】:
我正在使用 Vowpal Wabbit 进行二元情感分类(正面和负面),并使用基本的 unigram 特征。 这是我的火车功能的样子:
1 | 28060 10778 21397 64464 19255
-1 | 44248 21397 3353 57948 4340 7594 3843 44368 33938 49249 45696 32698 57948 21949 58810 32698 62793 64464
1 | 44248 21397 3353 32698 62996
1 | 44248 21397 3353 57948 63747 40024 46815 37197 7594 47339 28060 10778 32698 45035 3843 54789 19806 60087 7594 47339
每一行都以标签开头,然后是词汇表中的一系列单词索引。这些特征的默认值为 1。
我用这个命令训练:
cat trainfeatures.txt | vw --loss_function logistic -f trainedModel
这是我用于测试的命令:
cat testfeatures.txt | vw -i trainedModel -p test.pred
这是输出文件 test.pred 的样子:
28.641335
15.409834
13.057793
28.488165
16.716839
19.752426
值的范围在 -0.114076 和 28.641335 之间。如果我使用一个规则,如果值大于阈值,比如 14,那么它是正的,否则它是负的,那么我得到 51% 的准确度和 40.7% 的 f-measure。
但我正在关注的论文报告该数据集的准确率为 81%。因此,我在实施或对结果的解释中肯定有问题。我无法弄清楚那是什么。
编辑:我在测试命令中使用了 --binary 选项,这给了我标签 {-1,+1}。我对其进行了评估,得到了以下结果——准确度为 51.25%,f-measure 为 34.88%。
【问题讨论】:
-
训练/测试数据中有多少正例和负例?我猜你正在关注的论文可能使用了比单元线性模型更先进的东西(这可以被认为只是情感分析中的基线)。
-
你试过打乱训练数据吗?
-
没有。我会试试的。谢谢。
-
@MartinPopel 我尝试了洗牌,这给了我很好的结果。谢谢。您能否在答案中添加此内容,以便我接受?
-
好的,完成。我还添加了指向
shuf命令的链接。
标签: machine-learning logistic-regression sentiment-analysis vowpalwabbit