SVDD(Support Vector Domain Description) 支持向量数据域描述(2)
2017-03-22 15:34
519 查看
这篇文章主要介绍高斯核函数的一些性质和基于高斯核函数的SVDD方法
在上一篇博客中,我们用无穷级数已经说明过这一点,所以这里我们就不再重复了。
2.高斯核函数对应的高维空间中,每一个向量的模长一定是1
这个我们可以用高斯核函数本身的性质来进行求解
这样就表明了,所有点在映射之后都在一个模长为1的无限维超球体中。
3.在这个高维空间中,两点距离正相关于原始空间的两点距离
通俗的说,这句话表明如果两个点在原始空间中比较靠近,映射之后也是比较靠近;也就是原始数据中扎堆出现的数据点(高密度),在映射之后还是扎堆出现(高密度)。
我们稍微证明一下这个结论:
||ϕ(x⃗ )−ϕ(y⃗ )||2=(ϕ(x⃗ )−ϕ(y⃗ ))2=ϕ(x⃗ )2+ϕ(y⃗ )2−2ϕ(x⃗ )ϕ(y⃗ )=2−2e−q(x⃗ −y⃗ )2
后来人们提出了一种想法,我在数据集上,画一个圆(超球体),使得这个圆尽可能小,但是又尽可能囊括多的数据点。
这就是典型的矛盾目标优化问题。因为圆尽可能小,就包的数据点就有可能会减少。同样想要包更多的点就需要一个更大的圆。
那么针对这种问题,我们一般给出自己衡量目标的指标,然后写个目标函数优化就好了嗯。(PS:大部分算法的结果就在于这个目标函数写的好不好,如果目标函数是十分贴合实际的,往往就有比较好的算法效果)。
我们构造一个目标函数
F(R,a⃗ ,ξi)=R2+C∑i=1Nξi
subject to ||(x⃗ i−a⃗ )||2≤R2+ξi ∀ i,ξi≥0
这个函数说明,如果该点在我们画的超球体内部或者表面的时候ξi=0。其中C是一个常数,他用来衡量我们上述说的那两个矛盾目标哪个重要一点。如果C取的很大,他就会尽量偏向于找一个圆囊括尽量多的点。如果C比较小,就偏向于找一个小的圆。
通过类似SVM的优化步骤,我们可以找到最优解。
类似SVM中的定义,落在超球体表明的点我们叫他Support Vector (SV) 支持向量。外部的叫做BSV。
下面是一个二维数据下的例子:
诶,人们发现圆是画出来了,但是有个问题,就是这个圆囊括了好多没用的地方,就是不够紧致(论文里面用的是tight),不能够贴切的描述整个数据的分布情况。
后来人们想到了高维空间。
大概的思路就是:
把原始的数据映射到高维空间,然后在高维空间中按照上述方法找一个超球体。然后把超球体逆映射到原始的数据空间。然后就可以得到一个轮廓
通过之前的优化计算,和核函数代入,我们得到原始数据的一个点映射到高维空间后距离超球体圆心距离的公式:
R(x⃗ )=||ϕ(x⃗ )−μ⃗ ||=1−2∑i=1NβiK(x⃗ i,x⃗ )+∑i,j=1NβiβjK(x⃗ i,x⃗ j)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷
具体的公式推导大家可以查看SVDD的原始论文,我们这里就不再详细推导了。
所以原始空间每一个点对这个圆心的距离我们都可以计算出来。那么我们就可以画一个类似地理等高线的一个图~
下面我们来测试一下不同核函数的效果:
通过图片我们可以发现,其中高斯核函数是比较好的描述出数据的形状的~
这就是SVDD。
那么基于SVDD又衍生出SVC,支持向量聚类。
支持向量聚类的话,本质就是一个SVDD,然后再加一个贴类标的过程。
先挖个坑,以后再补
一、高斯核函数的一些性质
1. 高斯核对饮的映射空间是无限维空间在上一篇博客中,我们用无穷级数已经说明过这一点,所以这里我们就不再重复了。
2.高斯核函数对应的高维空间中,每一个向量的模长一定是1
这个我们可以用高斯核函数本身的性质来进行求解
这样就表明了,所有点在映射之后都在一个模长为1的无限维超球体中。
3.在这个高维空间中,两点距离正相关于原始空间的两点距离
通俗的说,这句话表明如果两个点在原始空间中比较靠近,映射之后也是比较靠近;也就是原始数据中扎堆出现的数据点(高密度),在映射之后还是扎堆出现(高密度)。
我们稍微证明一下这个结论:
||ϕ(x⃗ )−ϕ(y⃗ )||2=(ϕ(x⃗ )−ϕ(y⃗ ))2=ϕ(x⃗ )2+ϕ(y⃗ )2−2ϕ(x⃗ )ϕ(y⃗ )=2−2e−q(x⃗ −y⃗ )2
SVDD
1. 算法背景
后来人们提出了一种想法,我在数据集上,画一个圆(超球体),使得这个圆尽可能小,但是又尽可能囊括多的数据点。
这就是典型的矛盾目标优化问题。因为圆尽可能小,就包的数据点就有可能会减少。同样想要包更多的点就需要一个更大的圆。
那么针对这种问题,我们一般给出自己衡量目标的指标,然后写个目标函数优化就好了嗯。(PS:大部分算法的结果就在于这个目标函数写的好不好,如果目标函数是十分贴合实际的,往往就有比较好的算法效果)。
我们构造一个目标函数
F(R,a⃗ ,ξi)=R2+C∑i=1Nξi
subject to ||(x⃗ i−a⃗ )||2≤R2+ξi ∀ i,ξi≥0
这个函数说明,如果该点在我们画的超球体内部或者表面的时候ξi=0。其中C是一个常数,他用来衡量我们上述说的那两个矛盾目标哪个重要一点。如果C取的很大,他就会尽量偏向于找一个圆囊括尽量多的点。如果C比较小,就偏向于找一个小的圆。
通过类似SVM的优化步骤,我们可以找到最优解。
类似SVM中的定义,落在超球体表明的点我们叫他Support Vector (SV) 支持向量。外部的叫做BSV。
下面是一个二维数据下的例子:
诶,人们发现圆是画出来了,但是有个问题,就是这个圆囊括了好多没用的地方,就是不够紧致(论文里面用的是tight),不能够贴切的描述整个数据的分布情况。
后来人们想到了高维空间。
大概的思路就是:
把原始的数据映射到高维空间,然后在高维空间中按照上述方法找一个超球体。然后把超球体逆映射到原始的数据空间。然后就可以得到一个轮廓
通过之前的优化计算,和核函数代入,我们得到原始数据的一个点映射到高维空间后距离超球体圆心距离的公式:
R(x⃗ )=||ϕ(x⃗ )−μ⃗ ||=1−2∑i=1NβiK(x⃗ i,x⃗ )+∑i,j=1NβiβjK(x⃗ i,x⃗ j)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷
具体的公式推导大家可以查看SVDD的原始论文,我们这里就不再详细推导了。
所以原始空间每一个点对这个圆心的距离我们都可以计算出来。那么我们就可以画一个类似地理等高线的一个图~
下面我们来测试一下不同核函数的效果:
通过图片我们可以发现,其中高斯核函数是比较好的描述出数据的形状的~
这就是SVDD。
那么基于SVDD又衍生出SVC,支持向量聚类。
支持向量聚类的话,本质就是一个SVDD,然后再加一个贴类标的过程。
先挖个坑,以后再补
相关文章推荐
- SVDD(Support Vector Domain Description) 支持向量数据域描述(1)
- One Class SVM, SVDD(Support Vector Domain Description)(转)
- One Class SVM, SVDD(Support Vector Domain Description)
- One Class SVM, SVDD(Support Vector Domain Description)
- 支持向量数据描述
- 支持向量机与支持向量回归(support vector machine and support vector regression)
- 林轩田--机器学习技法--SVM笔记6--支持向量回归(Support+Vector+Regression)
- paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。
- 支持向量分类器的scikit-learn 实现(Support Vector Classifier)
- 支持向量機器 (Support Vector Machine)
- 学习SVM(四) 理解SVM中的支持向量(Support Vector)
- 【理论】支持向量机2: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念
- TangoAreaDescriptionMetaData区域描述元数据
- Ext.grid.EditorGridPanel单元格内套用下拉列表,且列表数据为动态加载,支持模糊查询,有描述信息
- (描述Microsoft 平台支持报告工具)Microsoft Product Support Reporting Tool - Alliance Edition
- 数据挖掘十大经典算法(3) Support vector machines
- 利用copy函数简单快速输出/保存vector向量容器中的数据
- 数据挖掘十大经典算法(3) Support vector machines
- C++_输入一段数据到向量vector里面
- 数据挖掘十大经典算法(3) Support vector machines