我正在研究我的人工智能问题,我正在按照这个例子中的说明:
在那里,他们使用支持向量机来分类:
classifier = fitcecoc(trainingFeatures, trainingLabels, ...
'Learners', 'Linear', 'Coding', 'onevsall', 'ObservationsIn', 'columns');我用我自己的数据集尝试了这个例子,它有一个89.5%的高超能力--它工作得很好,但是现在我想用我自己的支持向量机来尝试我自己的设置,而不是默认的设置。
我在文档中看到,fitcecoc默认使用带有线性核的支持向量机,现在我想尝试不同的核,例如高斯和多项式。
在课程机器学习过程中,我知道支持向量机有一个参数( Andrew称它为C),并且每个内核都有它自己的参数。此外,我还在Mathworks URL中找到了有关内核参数的信息:
根据这个链接..。
所以我写下了这段代码:
Oursvm = templateSVM('KernelFunction','polynomial');
classifier = fitcecoc(trainingFeatures, trainingLabels,'Learners',...
Oursvm,'Coding', 'onevsall', 'ObservationsIn', 'columns');现在,我想更改P参数,在模板SVM加倍中,我发现我可以这样设置它:
Oursvm = templateSVM('KernelFunction','polynomial','PolynomialOrder',9);默认值为3,但无论我在PolynomialOrder中使用哪个数字,精度都是,对于p=1或p=2或偶数p=9,总是相同的3.2258。
是不是很奇怪?
发布于 2017-04-23 09:29:02
Andrew在week7 kernels2视频中描述了你的问题:
大C-给出较低的偏差,高的方差(容易过度拟合)
小C-给出更高的偏差,低的方差(容易不合适)
高斯核的σ是相反的:
大西格玛-给出更高的偏差,低的方差(容易不合适)
小西格玛-给出较低的偏差,高方差(容易过度拟合)
所以你可以试着及时调优一个参数。至于安德鲁,我看不出有什么理由使用多项式核。通常是线性和高斯的,这取决于数字、例子和特征。总帐
对于最后一个问题,如果训练示例数量较少,并且有如此多的特性,您应该尝试使用线性内核。
https://stackoverflow.com/questions/43567084
复制相似问题