支持向量机参数matlab

Posted

技术标签:

【中文标题】支持向量机参数matlab【英文标题】:Support vector Machine parameters matlab 【发布时间】:2017-09-19 21:28:56 【问题描述】:

我正在解决我的人工智能问题,我正在按照这个示例中的说明进行操作:

Matlab Deep Learning Example

在那里,他们使用支持向量机进行分类:

classifier = fitcecoc(trainingFeatures, trainingLabels, ...
    'Learners', 'Linear', 'Coding', 'onevsall', 'ObservationsIn', 'columns');

我用我自己的数据集尝试了这个例子,它的准确率为 89.5% 它工作得很好,但现在我想用我自己的设置而不是默认设置尝试使用我自己的 SVM。

我在文档中读到 fitcecoc 使用带有线性内核的 SVM 默认情况下,现在我想尝试不同的内核,例如高斯和多项式。

我在 Coursera 的机器学习课程中知道 SVM 有一个参数(Andrew NG 将其称为 C),而且每个内核都有自己的参数。我还在这个 Mathworks URL 中找到了有关内核参数的信息:

Kernel paramters...

根据那个链接....

高斯核有其参数SIGMA 多项式内核有它的参数P,它是多项式的阶 函数

所以我写下了这段代码:

Oursvm = templateSVM('KernelFunction','polynomial');
classifier = fitcecoc(trainingFeatures, trainingLabels,'Learners',...
    Oursvm,'Coding', 'onevsall', 'ObservationsIn', 'columns');

现在,我想更改 P 参数,在 Template SVM Doumentation 中我发现可以这样设置:

Oursvm = templateSVM('KernelFunction','polynomial','PolynomialOrder',9);

Template SVM

默认值为 3,但无论我为 PolynomialOrder 使用哪个数字,对于 p = 1 或 p = 2 甚至是 总是 相同的 3.2258 p = 9

是不是很奇怪?

我错过了什么?

还有我如何设置高斯核的SIGMA参数?因为使用默认配置进行训练,准确性非常低,并且在 SVM 模板文档中,他们没有明确指定如何设置此参数。

如何设置 SVM 的 C 参数?

最后我读到你需要至少 10 次训练样本 比输入数据的维度,深度怎么可能 学习示例仅使用 201 个样本(每个类 67 个,三个 classes total) 如果输入数据的维度是 4096?

【问题讨论】:

【参考方案1】:

Andrew Ng 在第 7 周 kernels2 视频中描述了您的问题:

Large C - 偏差小,方差大(容易过拟合)

小 C - 提供更高的偏差,低方差(容易欠拟合)

高斯核的 Sigmas 是相反的:

Large Sigma - 提供更高的偏差、低方差(容易欠拟合)

Small Sigma - 偏差小,方差大(容易过拟合)

因此您可以尝试及时调整一个参数。因此,作为 Andrew,我没有看到使用多项式内核的理由。通常是线性的和高斯的,这取决于数量的例子和特征。 GL

对于最后一个问题,如果训练样例数量少而特征太多,您应该尝试线性核

【讨论】:

以上是关于支持向量机参数matlab的主要内容,如果未能解决你的问题,请参考以下文章

SVM预测灰狼算法优化svm支持向量机预测matlab源码

SVM预测灰狼算法优化svm支持向量机预测matlab源码

SVM预测灰狼算法优化svm支持向量机预测matlab源码

支持向量机的matlab代码

优化分类基于matlab遗传算法优化支持向量机分类(多输入多分类)含Matlab源码 QF003期

支持向量机回归预测SVR——MATLAB超详细代码实现过程