支持向量数据描述(SVDD)

前言
支持向量数据描述(Support Vector Data Description,SVDD)是一种单值分类算法,能够实现目标样本和非目标样本的区分,通常应用于异常检测和故障检测等领域。SVDD算法的具体描述可以参考以下文献:

(1)Tax D M J, Duin R P W. Support vector domain description[J]. Pattern recognition letters, 1999, 20(11-13): 1191-1199.

(2)Tax D M J, Duin R P W. Support vector data description[J]. Machine learning, 2004, 54(1): 45-66.

注:该文章侧重讲述的是SVDD的实现,具体求解过程可以参考上述参考文献,此处只列出核心的公式。

SVDD的原理
假设有一组正类训练数据 [公式] ,其中 [公式] 是样本个数, [公式] 是特征维度。首先通过非线性变换函数 [公式] 将数据从原始空间映射到特征空间,然后在特征空间中寻找一个体积最小的超球体。

SVDD的实现
目前MATLAB平台上的SVDD算法实现主要有:

(1)台湾大学林智仁 (Lin Chih-Jen) 教授等开发设计的libsvm 工具箱。

(2)SVDD算法提出者Tax D M J 等开发设计的 ddtools 工具箱。

但是上述工具箱关于SVDD算法的实现功能较少,如只支持正类样本SVDD超球体的构建等。

笔者在上述基础上,编写了基于MATLAB的同时支持正负类样本SVDD算法、集合参数寻优工具箱、降维工具箱等功能的实现代码;编写了基于Python的SVDD算法源码;编写了基于MATLAB的libsvm工具箱SVDD决策边界可视化源代码。

(1)MATLAB版本的GitHub网址为:
(2)Python版本的GitHub网址为(相比MATLAB版本的缺少参数寻优和降维模块):
(3)基于libsvm的SVDD决策边界可视化的GitHub网址为:
(4)MATLAB中文论坛

主要功能(SVDD & MATLAB)

基于OOP编写的核心模块
支持仅含正样本的SVDD超球体构建
支持同时包含正样本和负样本的SVDD超球体构建
支持包含高斯核函数、多项式核函数等多种核函数
包含绘制ROC曲线、决策边界等功能的可视化模块
包含数据预处理模块
集成基于YPEA工具箱的参数优化模块
集成基于drtoolbox的数据降维模块
注:

ROC曲线的绘制仅适用于同时包含正样本和负样本的SVDD
决策边界可视化仅支持2维训练数据;如果决策边界显示不完整,请把computeGridRange函数中的比例系数 'r’的值调大
参数优化算法容易陷入局部最优,计算条件允许的情况下,请调节参数优化算法和迭代次数,以及尝试运行多次优化过程。
多项式核函数的degree参数暂不支持优化。
demo中提供的训练集和测试集是根据给定比例随机生成的,每次运行的结果出现不一致的情况是正常的。
示例程序

  1. demo_KernelMatrix (核函数的使用)

(1) 高斯核函数

gauss : k(x,y) = exp(-(norm(x-y)/s)^2)

(2) 指数核函数

exp : k(x,y) = exp(-(norm(x-y))/s^2)

(3) 线性核函数

linear : k(x,y) = x’*y

(4) 拉普拉斯核函数

lapl : k(x,y) = exp(-(norm(x-y))/s)

(5) sigmoid核函数

sigm : k(x,y) = tanh(g*x’*y+c)

(6) 多项式核函数

poly : k(x,y) = (x’*y+c)^d

  1. demo_SVDD (仅包含正样本的SVDD)

  2. demo_SVDD_PO (仅包含正样本的SVDD+参数优化模块)

  3. demo_SVDD_DR (仅包含正样本的SVDD+降维模块)

  4. demo_SVDD_DR_PO (仅包含正样本的SVDD+参数优化模块+降维模块)

  5. demo_nSVDD (同时包含正样本和负样本的SVDD)

  6. demo_nSVDD_PO (同时包含正样本和负样本的SVDD+参数优化模块)

  7. demo_nSVDD_DR (同时包含正样本和负样本的SVDD+降维模块模块)

  8. demo_nSVDD_DR_PO (同时包含正样本和负样本的SVDD+参数优化模块+降维模块)

详细原理公式见:

https://zhuanlan.zhihu.com/p/97522759

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值