赞
踩
目录
支持向量机(Support Vector Machine,SVM)是一种二分类模型,其基本思想是在特征空间中找到一个最优的超平面,使得正负样本点到该超平面的距离最大化,从而实现对样本的分类。
经典SVM为二分类模型,对于多分类模型,可以通过以下两种方法实现:
①One-vs-One(OVO):将每个类别之间的所有可能组合都训练一个二元分类器,然后通过投票或者加权投票来决定最终的分类结果。
②One-vs-All(OVA):将一个类别作为正例,其余所有类别作为负例,训练一个二元分类器,然后重复这个过程,直到每个类别都有一个分类器。最后通过投票或者加权投票来决定最终的分类结果。
对于人脸识别,SVM是用来分类的,我们可以使用像PCA、LDA、LPP、NPE等降维算法先进行数据降维再分类。
SVM二分类代码,即文章开头的图片示例matlab代码:
- % 生成随机数据
- X = [randn(20,2)-2; randn(20,2)+2]; % 生成20个标签为-1的点和20个标签为1的点,分别在(-4,-4)和(4,4)的区域内
- Y = [-1*ones(20,1); ones(20,1)]; % 将标签存入列向量y中
-
- % 拟合SVM模型
- svmModel = fitcsvm(X,Y); % 拟合线性SVM模型
-
- % 绘制决策边界
- w = svmModel.Beta; % 获取模型的权重向量w
- b = svmModel.Bias; % 获取模型的偏置项b
- a = -w(1)/w(2); % 计算决策边界的斜率
- xx = linspace(-5,5); % 生成x坐标
- yy = a*xx - b/w(2); % 计算决策边界的y坐标
- margin = 1/sqrt(sum(w.^2)); % 计算间隔边界的宽度
- yy_down = yy - sqrt(1+a^2)*margin; % 计算下界的y坐标
- yy_up = yy + sqrt(1+a^2)*margin; % 计算上界的y坐标
-
- % 绘制数据点和支持向量
- figure; % 创建新的图形窗口
- gscatter(X(:,1),X(:,2),Y,'br','x+'); % 绘制数据点,标签为-1的点用蓝色表示,标签为1的点用红色表示
- hold on; % 将图形保持在当前状态,以便绘制其他图形
- plot(xx,yy,'k-'); % 绘制决策边界
- plot(xx,yy_down,'k--'); % 绘制间隔边界下界
- plot(xx,yy_up,'k--'); % 绘制间隔边界上界
- plot(svmModel.SupportVectors(:,1),svmModel.SupportVectors(:,2),'go','MarkerSize',10); % 绘制支持向量,用黑色圆点表示
- axis([-5 5 -5 5]); % 设置坐标轴范围
- legend('Class A','Class B','Decision boundary','Margin','Margin','Support vectors'); % 设置图例
- hold off; % 关闭当前图形的保持状态,以便绘制其他图形
人脸识别多分类,使用OVO模式训练SVM模型,构建标签矩阵后进行模型训练,然后将数据写入excel表格,我这里的代码例子是先用PCA进行降维的,所以写入PCA.xlsx文件中。
- halfDataNumber=pictureNumber/2;
- Y=zeros(halfDataNumber,1);
- for i=1:halfDataNumber
- Y(i)=floor((i-1)/testNumber)+1;
- end
-
- for dimension=5:5:160
- egienvector=egienvectors(:,1:dimension);
- trainDataTemp=egienvector'*trainData;
- testDataTemp=egienvector'*testData;
- right=0;
- model=fitcecoc(trainDataTemp',Y);
- YPredicted=predict(model,testDataTemp');
- for i=1:halfDataNumber
- if Y(i)==YPredicted(i)
- right=right+1;
- end
- end
- rate=right/halfDataNumber;
- SVMresult=[SVMresult,rate];
- end
-
- X=5:5:160;
- plot(X,SVMresult);
- writematrix(SVMresult,'PCA.xlsx');
优点:
缺点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。