【问题标题】:Multiclass classification in SVMSVM 中的多类分类
【发布时间】:2016-07-15 13:52:09
【问题描述】:

我一直致力于“双语文档中的脚本识别”。 我想在 matlab 中使用 libsvm 将页面/块分类为 Eng(class 1)、Hindi (class 2) 或 Mixed。但问题是我拥有的训练数据仅包含与印地语和英文页面/块相对应的样本,但没有混合页面。

我想提供的测试数据也可能包含混合页面/块,在这种情况下,我希望它被归类为“混合”。我打算使用置信度分数或概率值来做到这一点。就像如果第 1 类的概率值大于阈值(例如 0.8)并且第 2 类的概率值小于阈值(例如(0.05)),那么它将被分类为第 1 类,反之则为第 2 类。但如果上述两个条件不满足,那么我想将其归类为“混合”。

“libsvmpredict”的第三个返回值是 prob_values,我打算继续使用这个 prob_values 来确定测试数据是印地语、英语还是混合的。但在少数地方我了解到“libsvmpredict”不会产生实际的 prob_values。

有什么方法可以帮助我使用仅由 SVM 中的 2 个类组成的训练数据将测试数据分为 3 个类(印地语、英语、混合)。

【问题讨论】:

  • 印地语文本是用拉丁字符写的吗?如果没有,我认为您不需要分类器,因为计算机已经清楚地识别并正确显示英语/印地语字符。也就是说,您可以通过查看(可能是 UTF-8)编码字符来识别该语言。
  • 我的文档是印地文/英文书籍的扫描图像,分辨率为 300dpi。我的项目的全部目的是识别输入文档图像的脚本,并根据识别的脚本将其传递给适当的 OCR,然后将图像转换为计算机可读格式。

标签: matlab machine-learning svm libsvm


【解决方案1】:

这不是 SVM 的作案手法。
SVM 绝不可能在不知道给定类的情况下预测它,也不知道如何将此类与所有其他类分开。

LibSVM 中的函数svmpredict() 实际上显示了概率估计,这个值越大,您对预测的信心就越大。但是,如果您只有两个类来预测第三类,则不能依赖这些值:确实,svmpredict() 将返回与类一样多的决策值。

您可以继续使用阈值系统(同样,它不是基于 SVM),但它很可能会失败或性能不佳。想一想:您必须设置两个阈值并以逻辑与的方式使用它们。正确分类非混合文档的机会确实会大大降低。

我的建议是:不要浪费时间设置阈值,因为这很有可能表现不佳,将其中一些文本合并在一起,或者创建一些带有一些印地语和一些英语行的新文件,以便为您的训练数据添加一些正确混合文档并执行标准的 3 类 SVM 系统。
为了创建这样的文件,你也可以使用 Matlab,它具有相当不错的文件 I/O 功能,例如fread()fwrite()fprintf()fscanf()importdata() 等等...

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 2011-03-21
    • 2014-05-07
    • 2018-06-30
    • 2015-01-28
    • 2013-11-17
    • 2018-02-08
    • 2020-08-13
    • 2015-07-17
    相关资源
    最近更新 更多