function [X_star, Y_star, alpha_star, Rsquared_star, ...
a_star, SV_star, YSV_star, param_star] = ...
ZeroFPR_SVDD(X, Y, alpha, Rsquared, kernel, param, C1, C2, treshold, param_opt)
% Zero False Positive Rate SVM with Distance Metric (ZFPR_SVDD)函数用于计算训练集的零假阳性率SVM边界。
% 输入参数:
% X:输入样本的特征矩阵,大小为n×d。
% Y:输入样本的标签,大小为n×1。
% alpha:SVM的惩罚系数。
% Rsquared:决定训练样本重要性的权重系数。
% kernel:SVM使用的核函数类型。
% param:SVM核函数的参数。
% C1、C2、treshold、param_opt:其他参数。
% 输出参数:
% X_star、Y_star、alpha_star、Rsquared_star、a_star、SV_star、YSV_star、param_star。
% 其中,X_star和Y_star表示训练得到的支持向量机边界;alpha_star表示训练得到的SVM惩罚系数;
% Rsquared_star表示训练得到的权重系数;a_star表示训练得到的间隔参数;SV_star和YSV_star表示训练得到的支持向量;
% param_star表示训练得到的核函数参数。
maxiter=1000;% 最大迭代次数
i=0;
m = size(X,2);
% 使用SVDD_N1C_TEST函数计算测试样本到训练样本的距离,并返回距离最近的训练样本的标签
y_i= SVDD_N1C_TEST(X, Y, alpha, X, kernel, param, Rsquared);
%FPR_old=0;
while(i<maxiter)
i=i+1; % 迭代次数计数器自增1
X_pred_i=[X,Y,y_i];% 将当前迭代得到的标签y_i添加到训练样本的特征矩阵X中,形成新的训练样本特征矩阵X_pred_i
% 从X_pred_i中筛选出标签为1的样本作为正类样本,标签为-1的样本作为负类样本,分别形成XP_i和XN_i
XP_i = X_pred_i(X_pred_i(:,m+2)==1,(1:m));
XN_i = X_pred_i(X_pred_i(:,m+2)==-1,(1:m));
X_i = [XP_i;XN_i];% 将正类样本和负类样本合并,形成当前的训练样本集X_i
% 从X_pred_i中筛选出标签为1的样本的y值和标签为-1的样本的y值,分别形成YP_i和YN_i
YP_i=X_pred_i(X_pred_i(:,m+2)==1,m+1);
YN_i=X_pred_i(X_pred_i(:,m+2)==-1,m+1);
Y_i = [YP_i;YN_i];% 将正类样本和负类样本的y值合并,形成当前的标签集Y_i
if(isequal(param_opt,'Y'))% 如果param_opt等于'Y',则进行参数优化
disp('Parametr optimization started')
% 在训练集的1000个样本上进行参数优化,得到最优的核函数参数param_star等
X_opt=X_i(1:1000,:);
Y_opt=Y_i(1:1000,:);
intKerPar = linspace(0.1,5,10);
[param_star, ~, ~, ~, ~] = ...
OptimiseParam_NSVDD(X_opt, Y_opt, kernel, 0.5, 3, intKerPar, C1, C2);
else % 如果param_opt不等于'Y',则直接使用输入
param_star = param;
end
[alpha, Rsquared_i, a_i, SV_i, YSV_i] = ...
SVDD_N1C_TRAINING(X_i, Y_i, kernel, param_star, C1, C2,'off');
y_i = SVDD_N1C_TEST(X_i, Y_i, alpha, X, kernel, param_star, Rsquared_i);
M_i = [y_i Y];
N = nnz(Y_i(:,1)==-1);
FP = sum(M_i(:,1)==+1 & M_i(:,2)==-1);
FPR_i = FP/N;
if(FPR_i<treshold)% || (abs(FPR_i-FPR_old)<0.01*FPR_old))
disp('Treshold reached')
break;
end
disp(['Iteration ', num2str(i), '--> FPR = ', num2str(FPR_i)])
end
X_star = X_i;
Y_star = Y_i;
alpha_star = alpha;
Rsquared_star = Rsquared_i;
a_star = a_i;
SV_star = SV_i;
YSV_star = YSV_i;
fpga和matlab
- 粉丝: 17w+
- 资源: 2639
最新资源
- ECharts仪表盘-多标题仪表盘.rar
- ECharts仪表盘-基础仪表盘.zip
- ECharts仪表盘-等级仪表盘.zip
- ECharts仪表盘-气温仪表盘.zip
- ECharts仪表盘-进度仪表盘.zip
- ECharts仪表盘-阶段速度仪表盘.zip
- ECharts仪表盘-速度仪表盘.zip
- ECharts仪表盘-气压表.zip
- ECharts仪表盘-时钟仪表盘.zip
- ECharts仪表盘-自定义仪表盘1.rar
- 立体仓储单立柱堆垛机(投产使用)sw16可编辑全套技术资料100%好用.zip
- python基于tensorflow的人脸识别系统设计与实现源码+说明(高分项目)
- 敏源电容类CPU芯片选型指南
- 量产儿童安全座椅挂钩铆合机(sw16可编辑+工程图+bom)全套技术资料100%好用.zip
- 生物识别技术领域的大菱鲆个体跟踪识别方法及育种应用
- 全球互联网用户数据.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈