基于MATLAB实现的支持向量数据描述(Support Vector Data Description, SVDD)算法
1. SVDD算法核心实现
function [model, decision] = mySVDD(X, kernelType, gamma, C, tol)
% X: 训练数据 (N x D)
% kernelType: 核函数类型 ('linear', 'poly', 'rbf')
% gamma: RBF核参数 (仅对'rbf'有效)
% C: 正则化参数
% tol: 支持向量容忍度
[N, D] = size(X);
K = computeKernel(X, X, kernelType, gamma);
% 构建二次规划参数
H = (1/C) * K + eye(N);
f = -ones(N, 1);
Aeq = ones(1, N);
beq = 1;
lb = zeros(N, 1);
ub = inf(N, 1);
% 求解二次规划
options = optimoptions('quadprog', 'Display', 'off');
alpha = quadprog(H, f, [], [], Aeq, beq, lb, ub, [], options);
% 提取支持向量
svIdx = alpha > tol & alpha < 1 - tol;
supportVectors = X(svIdx



被折叠的 条评论
为什么被折叠?



