支持向量机器参数matlab

时间:2017-04-23 03:33:19

标签: matlab machine-learning deep-learning svm

我正在处理我的人工智能问题,我正在遵循此示例中的说明:

Matlab Deep Learning Example

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

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

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

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

我知道机器学习课程当然,SVM有一个参数(Andrew NG称之为C),每个内核都有自己的参数。此外,我在此Mathworks URL中找到了有关内核参数的信息:

Kernel paramters...

根据该链接......

  • 高斯内核的参数为 SIGMA
  • 多项式内核的参数 P 是多项式的阶数 FUNC

所以我写下了这段代码:

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

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

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

Template SVM

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

不是很奇怪吗?

  • 我缺少什么?

  • 此外,如何为高斯内核设置 SIGMA 参数?因为使用默认配置进行训练时,acurracy非常低,而在SVM模板文档中,他们没有指定如何清楚地设置此参数。

  • 如何设置SVM的C参数?

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

  • ,则总计类

1 个答案:

答案 0 :(得分:1)

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

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

小C - 给出更高的偏差,低方差(易于欠拟合)

高斯内核的Sigmas是相反的:

大西格玛 - 提供更高的偏差,低方差(容易出现欠拟合)

小西格玛 - 给出较低的偏差,较高的方差(易于过度拟合)

所以你可以尝试及时调整一个参数。安德鲁我没有看到使用多项式内核的原因。通常enogh线性和高斯,这取决于数字的例子和特征。 GL

对于最后一个问题,如果培训示例数量少且功能太多,您应该尝试使用线性内核