2017-04-23 134 views
0

我的工作我的人工智能问题,我下面从这个例子说明:支持向量机参数matlab的

Matlab Deep Learning Example

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

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

我用我自己的数据集试过了这个例子,它有一个89.5%的热情 它工作得很好,但现在我想尝试用我自己的设置而不是默认的settin自己的SVM GS。

我在fitcecoc默认使用支持线性内核的支持向量机 的文档中阅读,现在我想尝试不同的内核,例如高斯和多项式。

我知道机器学习coursera当然,SVM有一个参数(安德鲁NG指它为C)并且每个内核也有它自己的参数。此外,我发现信息有关此Mathworks公司网址的内核参数:

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其数量,accurracy是总是相同3.2258对于p = 1或p = 2甚至p = 9

这不是很奇怪吗?

  • 我错过了什么?

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

  • 如何设置我的SVM的C参数?

  • 最后我已阅读,你需要至少10次的训练样本 比输入数据的维度,它怎么可能是深 学习的榜样只使用201个样本(67为每个类,三 类总)如果输入数据的尺寸是4096?

回答

1

安德鲁·吴描述你的问题上week7 kernels2视频:

大型的C - 给低偏置,高方差(易过度拟合)

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

Sigma的高斯内核是相反的:

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

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

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

对于最后一个问题,如果训练样例的数量很少,那么很多功能的情况下,应该尝试使用线性内核