SVM:如何在 vlfeat 中使用 chi2 内核

Posted

技术标签:

【中文标题】SVM:如何在 vlfeat 中使用 chi2 内核【英文标题】:SVM: How do I use the chi2 kernel in vlfeat 【发布时间】:2016-01-07 16:12:37 【问题描述】:

我想在 vlfeat 中使用 chi2 内核而不是线性内核。

Here 是使用 chi2 的示例。

"... % 创建一个带有内核映射参数的结构hom.kernel = 'KChi2'; hom.order = 2; % 创建数据集结构dataset = vl_svmdataset(X, 'homkermap', hom); % 使用数据集结构通过在线内核映射扩展学习 SVM[w b info] = vl_svmtrain(dataset, y, lambda, 'MaxNumIterations', maxIter)..."

这里到底发生了什么? hom.order 是做什么的?

vl_svmdataset 有什么作用? 此外,还有一个名为 vl_homkermap() 的函数。它有什么作用?

假设我有一个矩阵 m,我想在其上使用带有 chi2 内核的 svm。

我该怎么做?

【问题讨论】:

【参考方案1】:

大规模非线性支持向量机 (SVM) 可以使用合适的特征图通过线性支持向量机来近似。 一般来说,线性 SVM 的学习和评估(测试)速度比原来的非线性要快得多,详情请参阅 this 论文。

数据集 = vl_svmdataset(X, 'homkermap', hom); 这一行将您的数据 X 转换为“卡方”内核映射

[w b info] = vl_svmtrain(数据集, y, lambda, 'MaxNumIterations', maxIter) 在这种情况下,这条线为转换后的数据训练线性 SVM lambda 是正则化参数,可以找到更多详细信息 here

【讨论】:

以上是关于SVM:如何在 vlfeat 中使用 chi2 内核的主要内容,如果未能解决你的问题,请参考以下文章

在 SVM 中使用带有卡方距离度量的 RBF 内核

将预计算的 chi2 内核与 libsvm (matlab) 一起使用时结果不佳

如何获得在更大矩阵上训练的 SVM 以对不同大小的矩阵进行分类

如何在 Octave 上设置 VLFEAT?

在 java 中使用 VLfeat 库编译 Matlab 代码

vlfeat nmake:致命错误 U1073:不知道如何制作“msvcr100.dll”