svm - 对结果感到困惑,得分远高于+1或-1

时间:2013-06-16 18:49:09

标签: svm text-classification

我是SVM的初学者。在我的项目中,我使用SVM对文本进行分类。数据集是笔记本电脑评论,我分为两类,“好评”和“差评”。我已经完成了培训,测试和分类,但有一些事情让我困惑,我想问。

  1. 以下是SVM格式中的两个数据示例 缩放到[-1,1]:

    1st -> 1:-0.648936 2:-0.641171 3:-0.62963 4:-0.576841 5:-1 6:-1 7:-0.894737 8:-1 9:-0.225806 10:-0.641026 11:-0.481481 12:-1 13:-1 14:-0.5 15:-0.235294 16:-0.882353
    
    2nd -> 1:-0.457447 2:-0.668316 3:-0.111111 4:-0.386705 5:-1 6:-1 7:-0.578947 8:-1 9:0.0967742 10:-0.25641 11:-0.24183 12:0.333333 13:0.333333 14:-0.5 15:-0.230769 16:-0.884615
    

    第一个产生得分5.4750172361043,而第二个产生 0.99999999999985。我想知道为什么?我想,如果我查看上面的数据,第二个实例的值比第一个更好。 如果我看原始文本数据审查,我认为 第二个实例比第一个实例具有“更好”的审查类别。所以 为什么输出得分与我的预期不一样?

  2. 上面提到的SVM结果输出是否正常 价值,甚至超过-1和1?全部的结果来自所有人 数据集的最小SVM得分为-4.5085001691845且最大值 7.1355405169311。我不太确定,但我认为结果通常 介于-1和1之间。有什么问题吗?

  3. 我应该怎样做才能得到你们所有人都认为的结果 正常?我的意思是,评论类别的一个很好的例子 一个介于0和1之间的值或更多(如1.135645),而不是 评论的值大约为0到-1(或者像-1.0573545)

  4. 我的问题还有其他信息:

    • 我使用网站phpir.com(Ian Barber)的SVM求解器库
    • 我使用的参数C和gamma仍然是默认值,我还没有进行交叉验证
    • 我在这里列举了一些好评或差评的例子:http://pastebin.com/cqDK7WA6

    请帮助我,我真的是初学者,也许我不理解基本的SVM概念,所以我需要你的解释,抱歉我的英语很差。

2 个答案:

答案 0 :(得分:1)

决策值从-5到7的事实本身不是问题。 SVM求解器唯一优化的是决策值的符号。 svm认为数据点从同一个类中得到5.47,得到的值为0.99。

一些建议:

  • 我看到你所做的真正问题是你不是 寻找C和gamma的良好价值。不这样做你可以 得到任意不好的结果。重要的是要知道你的分类器与以前看不见的数据的整体表现如何,以及与好的C和伽玛进行比较。
  • 看来你正在使用RBF内核,这似乎是合理的。然而,在自然语言处理和情感分析中的许多应用已经报告了使用线性内核的更好结果。

这是另一个问题,其中包含使用SVM时要验证的事项清单: Supprt Vector Machine works in matlab, doesn't work in c++

答案 1 :(得分:1)

实际上已经朝这个方向进行了一些研究。每个SVM分类器的输出值可以主要通过平台缩放或等张回归从[-∞;∞]映射到[0; 1]。详细信息可以在本文中找到:Predicting Good Probabilities With Supervised Learning, In Proc. Int. Conf. on Machine Learning (ICML) 2005, pp 625--632