【发布时间】:2013-06-12 18:11:41
【问题描述】:
我是 SVM 的初学者。在我的项目中,我使用 SVM 对文本进行分类。数据集是笔记本电脑评论,我分为两类,“好评”和“差评”。我已经完成了训练、测试和分类,但是有几件事让我感到困惑,我想问一下。
-
以下是两个 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。我想知道为什么?我认为,如果我查看上面的数据,第二个实例比第一个实例具有更好的价值。 如果我查看原始文本数据审查,我认为 第二个实例比第一个实例具有“更好”的审查类别。所以 为什么输出分数与我预期的不一样?
上述SVM结果的输出产生巨大的结果是正常的吗 值,甚至超过 -1 和 1?全部结果 数据集的最小 SVM 分数为 -4.5085001691845,最大分数为 7.1355405169311。我不太确定,但我认为结果通常 范围在 -1 和 1 之间。有什么问题吗?
我应该怎么做才能得到结果,因为你们都可能认为 普通的?我的意思是,评论类别的一个很好的例子有 介于 0 和 1 之间的值或更多(如 1.135645),而坏的 评论的值约为 0 到 -1(或类似 -1.0573545)
只是对我的问题的补充信息:
- 我使用来自网站 phpir.com (Ian Barber) 的 SVM 求解器库
- 我使用的参数C和gamma仍然是默认的,我还没有做交叉验证
- 我在这里举几个例子来说明什么是好评或差评:http://pastebin.com/cqDK7WA6
请帮帮我,我真的是这方面的初学者,也许我没有理解基本的 SVM 概念,所以我需要你的解释,对不起我的英语不好。
【问题讨论】:
-
通常 SVM 会尝试找到一个决策函数来将一个类的数据与另一类的数据分离。预测将距离返回到此决策函数。所以越大,越确定数据在类中;且符号高于或低于决策函数,为0级。为了更好地理解,请参阅this