目录
支持向量机SVM的详细原理
SVM的定义
SVM理论
SVM应用实例,SVM的测量误差预测
代码
结果分析
展望
支持向量机SVM的详细原理
SVM的定义
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
(1)支持向量机(Support Vector Machine, SVM)是一种对数据进行二分类的广义线性分类器,其分类边界是对学习样本求解的最大间隔超平面。
(2)SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器 。
(3)SVM可以通过引入核函数进行非线性分类。
SVM理论
1,线性可分性
2,损失函数
3,核函数
SVM应用实例
基于SVM的测量误差预测
tic
%% 加载数据
clc
clear
close all
format long
%读取数据
[num,ax,ay]= xlsread(‘修正数据.xlsx’);
num(:,4) = num(:,4)+100;
nn = randperm(length(num));
nn =1:16;
mm = 12;
%训练数据和预测数据
tic
input_train=num(nn(1:mm),1:3)‘;
input_test=num(nn(13:end),1:3)’;
output_train=num(nn(1:mm),4)‘;
output_test=num(nn(13:end),4)’;
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train,0,1);
outputn_test=mapminmax(‘apply’,output_test,outputps);
inputn_test=mapminmax(‘apply’,input_test,inputps);
% rand(‘seed’,0)
% n =randperm(length(output));
n = 1:41;
m=35;
P_train=data(n(1:m)😅;
T_train=output1(n(1:m)😅;
P_test=data(n(m+1:end)😅;
T_test=output1(n(m+1:end)😅;
%% 利用训练集参数进行SVM网络训练
bestc=20;bestg=0.1; %确定的最佳参数
cmd = ['-s 3 -t 0 ‘,’-c ‘, num2str(bestc), ’ -g ‘, num2str(bestg) , ’ -p 0.1’];
model = svmtrain(T_train,P_train,cmd);
x = 300:1500;
xx = mapminmax(‘apply’,x,inputns)’;
[predict_train,acc]= svmpredict(ones(length(xx),1),xx,model);
% [predict_train,acc]= svmpredict(T_train,P_train,model);
% 反归一化
predict_train1=mapminmax(‘reverse’,predict_train’,outputns);
T_train=mapminmax(‘reverse’,T_train’,outputns);
figure
plot(x,predict_train1,‘r-*’)
hold on
plot(data1(n(1:m),1),T_train,‘b-o’)
xlabel(‘样本编号’)
legend(‘输出数据’,‘实际数据’)
效果图
结果分析
从效果图看,SVM能把数据映射到高维空间,进行回归分析,貌似随机的误差也能找出一定规律进行预测,从而可以对测量误差进行矫正,实现准确测量
扩展
下面是部分SVM可以应用的方面,如果有需要欢迎扫描二维码联系