首页 > 技术知识 > 正文

  本篇文章主要对svm分类器的性能进行对比评估,对比算法为bp算法,然后用自己的照片进行实际识别与评估

一、与BP神经网络对比

对比算法matlab代码如下: (1)导入数据并处理,建立神经网络,网络有一个隐藏层,大小为30个神经元。隐藏层传递函数为’tansig’函数,输出层传递函数为’logsig’函数,优化方法使用GDA,最大迭代次数设为1000,

clear load(dataset_processed.mat) tic % 处理标签数据 Training_label(Training_label==0)=-1; % 归一化数据 [Training,bp_ps]=mapminmax(Training_b); Testing=mapminmax(apply,Testing_b,bp_ps); % 建立bp神经网络 net_bp=newff(Training,Training_label,[30],{tansig,logsig},traingda); net_bp.trainParam.epochs=1000; net_bp.trainParam.max_fail=200;

(2)训练并预测

% 训练 net_bp=train(net_bp,Training,Training_label); % 预测 test_num=size(Testing,2); predict=sim(net_bp,Testing); predict(predict>=0.5)=1; predict(predict<0.5)=0; acc=sum(predict==Testing_label)/test_num; fprintf(正确率是:%.2f%%\n,acc*100); save(model.mat,net_bp,bp_ps,-append); toc

完整代码如下:

clear load(dataset_processed.mat) tic % 处理标签数据 Training_label(Training_label==0)=-1; % 归一化数据 [Training,bp_ps]=mapminmax(Training_b); Testing=mapminmax(apply,Testing_b,bp_ps); % 建立bp神经网络 net_bp=newff(Training,Training_label,[30],{tansig,logsig},traingda); net_bp.trainParam.epochs=1000; net_bp.trainParam.max_fail=200; % 训练 net_bp=train(net_bp,Training,Training_label); % 预测 test_num=size(Testing,2); predict=sim(net_bp,Testing); predict(predict>=0.5)=1; predict(predict<0.5)=0; acc=sum(predict==Testing_label)/test_num; fprintf(正确率是:%.2f%%\n,acc*100); save(model.mat,net_bp,bp_ps,-append); toc
<

(3)输出结果: 总结:   显然,数据样本是线性可分的。通过SVM与BP神经网络对比发现,在测试集的预测方面,BP要优于SVM。此次分类任务是线性可分的,所以SVM的核函数优势并没有体现出来。 二、使用模型进行实际预测 预测数据集中没有的数据(自己的照片),观察效果,检测模型的泛化能力。 1、使用SVM线性核进行预测 正确率:83% 2、使用SVM多项式核进行预测 正确率:67% 3、使用SVM的RBF核进行预测 正确率:83% 4、使用SVM的sigmoid核进行预测 正确率:83% 5、使用bp神经网络进行预测 正确率50% 三、总结   根据实验结果我们可以看出,虽然在测试集的分类效果很好,但是实际在使用我们自己拍摄的照片并没有很好的效果,正确率下降了不少。我们对比了训练集、测试集、和自己拍摄的照片发现训练集和测试集的照片对比度相对更高,口罩和脸部的色差更大,我们的照片则是佩戴了白色口罩,而且拍摄照片时光照较强,脸上也有不规则阴影导致判别难度增加所以,口罩佩戴识别正确率下降了。我们会在后续的工作中增加训练集的样本,采用更丰富的照片样本来使得我们分类器的性能更加好。在和别的分类器对比过程中我们发现虽然在我们的测试样本中,bp表现出优异的性能,但是预测我们自己的照片时,性能相对于svm较差。这说明svm分类器的泛化性能优于bp神经网络分类器,这也符合我们在之前分析SVM分类器在相同样本时候具有强大的推广和泛化能力。此外,svm使用多项式核时,泛化效果同样相对于使用其他核甚至是线性核更差一些。

猜你喜欢