函数介绍:基本参数设置fitcsvm函数和许多常见的matlab函数一样,其输入参数同样采用参数对(Name,Value)的形式;
- BoxConstraint 框约束,设置惩罚因子(或者说正则参数)使用,若设定正则参数,采用(Name,Value)的形式;如(测试数据,测试标签,BoxConstraint,1,);
这个参数和svmtrain里的-c是一个道理。其实际上涉及到软间隔SVM的间隔(Margin)大小。matlab默认的BoxConstraint为1。框约束的数值越大,意味着惩罚力度越小,最后得到的分类超平面的间隔越小,支持向量数越多,模型越复杂。因为该参数默认为1,所以使用默认参数训练时,我们采用的是软间隔SVM。
2 KernelFunction 核函数
该参数对应的输入为字符串型变量,例如‘KernelFunction’,‘linear’,fitcsvm共支持三类核函数,线性核 ‘linear’ ,多项式核 ‘polynomial’ ,以及高斯核 ‘rbf’ or ‘gaussian’,通常采用高斯核函数,('KernelFunction', 'gaussian',);
3 KernelScale 核规模
这个参数搭配高斯核SVM使用,一般设置('KernelScale',12,)
4 PolynomialOrder 多项式次数
该参数搭配多项式核函数polynomial使用,代表所采用的多项式核的次数/阶数。采用高斯函数 不采用该信息,设置为[];
5 Standardize 标准化
该参数对应的输入为logical变量,true or false开启标准化后,matlab会根据样本数据对应的加权列均值和标准差来对所有的样本数据进行标准化,这在一定程度上可以抵消原始样本特征数值的分布对分类造成的干扰。
6 ClassNames 类名称
该参数表示了训练集内的样本类名称,例如对于一个二分类任务,我定义这两个类的名称为0和1,那么该参数可设置为 ‘ClassNames’, [0; 1]
7 基本参数的应用
介绍了上面这六个基本参数,其最简单的应用代码如下
classificationSVM = fitcsvm( data, label, ...'KernelFunction', 'gaussian', ...'PolynomialOrder', [], 'KernelScale', 12, 'BoxConstraint', 100, ...'Standardize', true, ...'ClassNames', [0; 1]);
data—训练样本数据集矩阵;label—样本标签向量;训练了一个高斯核SVM;KernelScale=12;BoxConstraint=100。
2.调参与参数优化
有了fitcsvm函数后,我们的调参工作就很简单了,matlab为了我们提供了一个自动优化超参数的输入参数,OptimizeHyperparameters。该参数的输入同样为字符串类型的变量,默认为none,此外还有all和auto两个选项
none—不开启自动超参数优化
auto—仅优化BoxConstraint和KernelScale这两个参数
all—优化所有的符合条件的超参数,包括以上六个基本参数中的五个,即{BoxConstraint,KernelScale,KernelFunction,Standardize,PolynomialOrder};('OptimizeHyperparameters','auto',)