matlab-SVM,支持向量机篇

可分离数据:SVM可以用于将已知数据分为两类,SVM分类器主要是找到两类之间最佳的超平面,将两类彻底分开,

  1. 用已知数据去训练SVM分类器
SVMstruct =svmtrain(data,groups,\'Kernel_Function\',\'rbf\');

data :数据点矩阵,每一行代表一个观测对象,每一列代表每一个观测对象提取的特征;

groups:

kernel_Function:默认为用超平面将数据线性分开.’rbf’用了高斯径向基函数;建议首先用‘rbf’尝试;

SVMstruct的结果结构体包含从SVM算法中获得的最佳参数值,因而可以用于将一些新的数据分开;

2.将待测数据用SVM分类器分开:

newClasses=svmclassify(SVMstruct,newData)

newClasses 产生的结果代表了在新数据里面每一行的分类;

3.调整SVM分类器

Hsu,chang and Lin建议遵循如下的方案,调整分类器的参数:

1. 首先使用‘rbf’kernel 函数;

2. 尝试使用不同的参数进行训练,然后通过交叉检验验证得到的最合适的参数

3. 最重要的尝试改变的参数:

boxconstraint-尽量以等比数列的方式去调整约束参数值;

rbf-sigma-尽量以等比数列的方式去调整RBF的sigma约束参数值;

4. 不同的参数设置,通过交叉检验去检测结果,通过crossval

5. 当获得合理的初始化参数值时,你可能想要重新定义你的参数去火的更加好的准确率,以更加小的等比的公因子,去调整参数,最优化你的参数,通过fminsearch,