如何使用svmtrain在matlab中绘制错误与训练样本编号

时间:2015-08-29 02:35:42

标签: matlab svm

我有一个1960年样本的数据集,有12个特征,并尝试使用980样本进行训练和980样本进行测试来解决二进制分类问题。对于训练我使用“svmtrain”并分类我正在使用“svmclassify”。是否可以绘制训练误差VS训练样本编号? 有什么建议吗?  我是matlab和SVM的新手。

1 个答案:

答案 0 :(得分:1)

重要的是要考虑SVM和神经网络等方法之间的区别。在训练神经网络时,您可以使用初始权重开始训练,然后逐步训练样本一步一步。你基本上会有一个for循环遍历每个训练样本并应用任何训练算法。因此,很容易评估训练中的错误分类错误,例如每100个样本后。

然而,SVM的工作方式不同:在训练SVM时,您构造一个方程,它描述了整个问题。这通常是

的一种形式
  

最小化||w||的标准,所有y_i ( w * x_i - b) >= 1个训练样本均以i为准。

w是分离超平面上的法向量,b是超平面到原点的偏移量,x_i是训练样本,y_i是训练样本的标签。这是一个优化问题,因此您搜索最小化||w||的解决方案,一旦找到这样的w,算法就完成了。 但是:您的所有训练样本都用于培训,因此您没有像神经网络那样的逐个样本程序,并且错误分类错误只能在整个培训后进行评估所有样本已完成。

为了能够在支持向量机中绘制错误分类错误与训练样本数量,您必须运行SVM函数svmtrain(或者如果您有更新的MATLAB版本fitcsvm )多次使用不同数量的训练样本并评估错误。

最后一点注意事项:如果您只验证训练错误,则将门打开以进行过度安装。这意味着您的算法可以准确地学习训练数据的功能,但不能将这些知识推广到新数据。因此,您将在培训中具有极低的错误率,但新数据失败。为了防止过度拟合,您可以使用您不会用于培训的小型验证数据集(可能是您培训数据的5-10%)。在训练SVM之后,您可以评估验证数据集上的错误分类错误,并检查训练数据集和验证数据集中的错误率是否非常相似,因此您可以确保新数据也可以正确分类。