用matlab实现的svdd算法

基于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值