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 内核的主要内容,如果未能解决你的问题,请参考以下文章
将预计算的 chi2 内核与 libsvm (matlab) 一起使用时结果不佳
如何获得在更大矩阵上训练的 SVM 以对不同大小的矩阵进行分类