【问题标题】:quadprog in MATLAB taking lot of timeMATLAB 中的 quadprog 花费大量时间
【发布时间】:2016-01-31 09:54:36
【问题描述】:

我的目标是使用多类线性 SVM(无内核)对图像进行分类。我想编写自己的 SVM 分类器

我正在使用 MATLAB,并使用提供的图像集训练了线性 SVM。

我有大约 20 个班级,每个班级有 5 张图片(总共 100 张图片),我使用的是一对多的策略。

每个图像都是一个 (112,92) 矩阵。这意味着 112*92=10304 个值。

我正在使用quadprog(H,f,A,C) 来求解 SVM 中的二次方程 (y=w'x+b)。对quadprog 的一次调用将返回w 一张图像的大小为10304 的向量。这意味着我必须拨打quadprog 100 次。

问题是一个 quadprog 调用需要 35 秒才能执行。这意味着对于 100 张图像,需要 3500 秒。这可能是由于涉及的向量和矩阵很大。

我想减少quadprog的执行时间。有什么办法吗?

【问题讨论】:

    标签: matlab image-processing machine-learning svm


    【解决方案1】:

    首先,当您使用 SVM 进行分类时,您通常会提取图像的特征(如 HOG),从而减少 SVM 必须操作的空间维度。您正在使用原始像素值,它会生成一个 10304-D 矢量。这是不好的。使用一些标准功能。

    其次,你不会调用quadprog 100 次。你只打电话一次。优化背后的概念是,您希望找到一个权重向量w 和一个偏差b,使其满足所有图像(即所有x_i)的w'x_i+b=y_i。请注意,i 将从 1 变为训练集中的示例数,但 wb 保持不变。如果你想要一个只满足一个x(w,b),你不需要任何花哨的优化。因此,将您的x 堆叠在一个维度为NxD 的大矩阵中,y 将是Nx1 的向量,然后调用quadprog。这将花费比 35 秒更长的时间,但您只需执行一次。这称为training an SVM。在测试图像时,您只需提取其特征,然后执行w*x+b 即可获得其类别。

    第三,除非您将其作为理解 SVM 的练习,否则quadprog 不是解决此问题的最佳方法。您需要使用其他一些适用于大数据的技术,例如,Sequential Minimal Optimization

    一个线性超平面如何分类超过 2 个类:对于多类分类,SVM 通常使用两种流行的方法:

    1. One-vs-one SVM:对于C 类问题,您训练C(C-1)/2 分类器,并在测试时测试那么多分类器并选择获得最多票的类。
    2. One-vs-all SVM:顾名思义,每个类训练一个分类器,使用该类的正样本和所有其他类的负样本。

    来自LIBSVM FAQs

    这是一对一的。我们在做了以下比较后选择了它:C.-W。许和 C.-J。林。 A comparison of methods for multi-class support vector machine , IEEE Transactions on Neural Networks, 13(2002), 415-425.

    “1-against-the rest”是一种很好的方法,其性能可与“1-against-1”相媲美。我们做后者只是因为它的训练时间更短。

    但是,还请注意,一对一的幼稚实现可能不适用于大规模问题。 LIBSVM 网站也列出了这个缺点并提供了an extension

    LIBLINEAR 不支持一对一的多分类,所以我们在这里提供了一个扩展。如果 k 是类的数量,我们生成 k(k-1)/2 个模型,每个模型只涉及两类训练数据。根据袁等人的说法。 (2012),由于存储 k(k-1)/2 个模型需要巨大的空间,一对一对于大规模线性分类并不实用。但是,如果模型向量(即权重向量)非常稀疏,这种方法可能仍然可行。我们的实现以稀疏形式存储模型,可以有效地处理一些大规模数据。

    【讨论】:

    • 我正在使用线性 SVM 分类器,我有 20 个类,并且说 (w'x_i+b) 是一个超平面。我相信超平面应该是线性的?您能否提供一些关于如何使用线性超平面将测试图像分类到它可能属于哪个类的信息?
    • @sravanmummadi 如果这回答了您的问题,请投票和/或接受答案。
    猜你喜欢
    • 2018-01-10
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多