SVM分类器原理
在机器学习以及模式识别中往往会发挥不错的性能,自开始出现至今一直不断发展,SVM得益于监督学习的特性,可以应用到很多统计范畴的问题中,包括分类、模型识别等。而且SVM的另一大优势是以统计学习理论为基础,其特点是通过优化结构风险最小化来提高模型的泛化性能。
具体的实施过程是:SVM通过构建一个最优分类超平面形成最大间隔,通过控制分类超平面两侧的间隔来控制分类器的性能。在这里最优分类超平面即最大间隔超平面。随着支持向量机理论的不断发展,支持向量机也由最初的只能解决线性可分问题发到通过构造核函数即映射变换来将低维线性不可分转化到高维线性可分。
图1 最优分类线图
支持向量机理论最开始于解决二分类问题的求解,对于给定的样本集合。通过找到一个最优分类超平面g(x)=,其基本原理为通过归一化判别函数,使得正负样本满足,于是分类间隔为即最小可以使分类间隔最大,最后通过求解二次规划问题使得线性可分问题得到求解。
(3)非线性可分理论
当样本线性不可分时则无法利用超平面进行分类,所以核函数得以引入,核函数的机理和作用是通过构造引入核函数,从而将样本数据从低维特征空间映射到高维特征空间。这样做的好处是,一方面可以避免在原始特征空间中进行复杂的计算,另一方面在高维空间中样本得以分离,从而由线性不可分转变为线性可分。
1.2 SVM分类器的实验条件
本实验的硬件环境为PC端,软件环境采用编程语言M语言,编程环境是Matlab(libsvm工具箱)。
1.3设计思想
从使用SVM的思路来看,首先要找到我们需要找到求解的问题,判断是分类问题还是回归问题。其次确定与分类问题有关的特征值和指标,再做简单的分析来判断该问题是否适合使用支持向量机进行分类。最后使用算法进行实验得出结果与结论,通过训练集建立模型在通过测试集来评价模型。
我们选用MATLAB中自带的cancer_datasets乳腺癌细胞数据集,其中有9个特征值,2个标签判断细胞是良性还是恶性。接下来对数据集进行预处理,我们选取的数据集中一共有699个细胞,这里选取前500个作为训练集,其余细胞作为测试集。想要求出最佳的支持向量机模型所以这里我们使用交叉验证来构建SVM模型,对训练集数据进行训练。最后我们用测试集来评价模型,同时用查准率作为模型的评价标准。
1.4 流程图
图2程序流程图
1.5 主要程序代码(要求必须有注释)
%初始化数据
load("cancer_dataset.mat")%%E:\matlab2021b\toolbox\nnet\nndemos\nndatasets
cancer_original=[cancerInputs;cancerTargets];
cancer_original=cancer_original';
cancer=cancer_original;
cancer(:,10)=[];%%标签:0为良性 1为恶性肿瘤
[r,c]=size(cancer);
features=cancer(:,1:c-1);
label=cancer(:,c);
low_limit=500;
train_id=[1:low_limit];%%训练集
test_id=[low_limit+1:r];%%测试集
%构建支持向量机模型
[bestacc,bestc,bestg] =SVMcgForClass(label(train_id),features(train_id,:),-8,8,-8,8,3,1,1,4.5);
%交叉验证
cmd = [' -c ',num2str( bestc ),' -g ',num2str(bestg),'-s 0 -t 2'];
model=svmtrain(label(train_id),features(train_id,:),cmd); %对数据进行训练
%支持向量机分类
[predict_label,accuracy,prob_estimates]=svmpredict(label(test_id),features(test_id,:),model,'-b probability_estimates');
%结果绘图
figure
plot(label(test_id),'bo')
hold on
plot(predict_label,'r*')
grid on
xlabel('样本序号')
legend('实际类型','预测类型')
firstline = 'The classify of breast cancer';
secondline = ['Accuracy=',num2str(accuracy(1)),'%'];
title({firstline;secondline},'Fontsize',12);
1.6运行结果及分析
图3仿真结果图
根据仿真结果可以看出我们构建的SVM模型将乳腺癌细胞分成了0良性和1恶性,精确度为97.4874%,较好的完成了目标的分类要求。