高斯核函数python代码_单类SVM:SVDD

话接上文(SVM的简单推导),这篇文章我们来看单类SVM:SVDD。可能大家会觉得很奇怪,我们为什么需要单分类呢?有篇博客举了一个很有意思的例子。

花果山上的老猴子,一生阅猴无数,但是从来没有见过其它的物种。有一天,猪八戒来到花果山找它们的大王,老猴子一声令下,把这个东西给我绑起来!

这里老猴子很清楚的知道这个外来物种不是同类,但是它究竟是什么,不得而知。老猴子见过很多猴,它知道猴子的特征,而外来生物明显不符合这个特征,所以它就不是猴子。

这就是一个单分类的简单例子。

而美猴王看到这个场景后,哈哈一笑,把这呆子抬过来!

对比二分类,显著的区别就是,二分类不但能得出来这个东西不是猴子,他还能告诉你这个东西叫“呆子”(当然我们的美猴王见多识广,肯定不止是二分类那么简单了)

今天要介绍的SVDD的全称是Support vector domain description。首先让我们简单了解一下domain description,也就是单分类问题。

单分类问题

不像常见的分类问题,单分类问题的目的并不时将不同类别的数据区分开来,而是对某个类别的数据生成一个描述(description)。这里的description比较抽象,可以理解为是样本空间中的一个区域,当某个样本落在这个区域外,我们就认为该样本不属于这个类别。

单分类方法常用于异常检测,或者类别极度不平衡的分类任务中。

当我们假设数据服从一个概率分布,我们就可以对这个分布中的参数进行估计了。对于一个新样本,如果这个样本在给定类别的概率分布中的概率小于阈值,就会被判定为异常样本。

但是这样的方法存在的问题是,

预先假定的概率分布对模型性能的影响很大。

当特征的维度很大的时候,该方法需要一个很大的数据集。

一些低密度区域的样本点会被误判为异常样本。

另一种思路就是,在样本空间中为此类数据划定一个大致的边界。如何划定这个边界,就是SVDD要研究的问题啦。

目标函数

假设我们有$m$个样本点,分别为$x^{(1)},x^{(2)},\cdots,x^{(m)}$。

我们假设这些样本点分布在一个球心为$a$,半径为$R$的球中。那么样本$x^{(i)}$满足

$$

(x^{(i)}-a)^T(x^{(i)}-a)\leq R^2.

$$

引入松弛变量,我们允许部分样本不再这个球中,那么

$$

(x^{(i)}-a)^T(x^{(i)}-a)\leq R^2+\xi_i,\xi\geq 0.

$$

我们的目标是最小球的半径$R$和松弛变量的值,于是目标函数是

$$

\begin{align}

\min_{a,\xi_i}\ \ & R^2+C\sum_{i=1}^m\xi_i\\

{\rm s.t.}\ \ & (x^{(i)}-a)^T(x^{(i)}-a)\leq R^2+\xi_i, \\

&\xi_i\geq 0,i=1,2,\cdots,m.

\end{align}

$$

其中,$C>0$是惩罚参数,由人工设置。

对偶问题

使用拉格朗日乘子法,得到拉格朗日函数

$$

\begin{align}

L(R,a,\alpha,\xi,\gamma)=& R^2+C\sum_{i=1}^m\xi_i\\

& -\sum_{i=1}^m\alpha_i\left(R^2+\xi_i({x^{(i)}}^Tx^{(i)}-2a^Tx^{(i)}+a^2)\right)-\sum_{i=1}^m \gamma_i\xi_i.

\end{align}

$$

其中,$\alpha_i\ge 0,\gamma_i\ge 0$是拉格朗日乘子。令拉格朗日函数对$R,a,\xi_i$的偏导为0,得到

$$

\begin{align}

&\sum_{i=1}^m \alpha_i=1,\\

&a=\sum_{i=1}^m \alpha_ix^{(i)},\\

&C-\alpha_i-\gamma_i=0

\end{align}

$$

我们可以将$\alpha_i$看作样本$x^{(i)}$的权重。上式表明所有样本的权重之和为1,而球心$a$是所有样本的加权和。将上式带入到拉格朗日函数中,得到原问题的对偶问题

$$

\begin{align}

\max_\alpha\ \ &L(\alpha)=\sum_{i=1}^m\alpha_i{x^{(i)}}^Tx^{(i)}-\sum_{i=1}^m\sum_{j=1}^m \alpha_i\alpha_j{x^{(i)}}^Tx^{(j)}\\

{\rm s.t.}\ \ & 0\le\alpha_i\le C,\\

& \sum_{i=1}^m\alpha_i=1,i=1,2,\cdots,m.

\end{align}

$$

当通过求解对偶问题得到$\alpha_i$后,可以通过$a=\sum_{i=1}^m \alpha_ix^{(i)}$计算球心$a$。至于半径$R$,则可以通过计算球与支持向量($\alpha_i< C$)之间的距离得到。当$\alpha_i=C$时,意味着样本$x^{(i)}$位于球的外面。

判断新样本是否为异常点

对于一个新的样本点$z$,如果它满足下式,那么我们认为它是一个异常点。

$$

(z-a)^T(z-a)> R^2.

$$

展开上式,得

$$

z^Tz-2\sum_{i=1}^m \alpha_iz^Tx^{(i)}+\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_j{x^{(i)}}^Tx^{(j)}>R^2.

$$

引入核函数

正常情况下,数据并不会呈现球状分布,因此有必要使用核函数的方法提高模型的表达能力。

只需将$\cal K(x^{(i)},x^{(j)})$替换${x^{(i)}}^Tx^{(j)}$即可。于是对偶问题的目标函数变为

$$

L(\alpha)=\sum_i \alpha_i\cal K(x^{(i)},x^{(i)})-\sum_i\sum_j \alpha_i\alpha_j\cal K(x^{(i)},x^{(j)}).

$$

判别函数变为

$$

{\cal K}(z,z)-2\sum_i \alpha_i {\cal K}(z,x^{(i)})+\sum_i\sum_j \alpha_i\alpha_j {\cal K}(x^{(i)},x^{(j)})- R^2.

$$

下面考虑核函数的影响。

多项式核

多项式核函数的表达式如下

$$

{\cal K}\left({x^{(i)}}^Tx^{(j)}\right)=\left({x^{(i)}}^Tx^{(j)}+1\right)^d.

$$

如下图所示,多项式核实际上不太适合SVDD。特别是当d取值非常大的时候。

高斯核

高斯核函数的表达式如下

$$

{\cal K}\left({x^{(i)}}^Tx^{(j)}\right)=\exp\left(\frac{-\left(x^{(i)}-x^{(j)}\right)^2}{s^2}\right).

$$

如下图,相比于多项式核函数,高斯核函数的结果就合理多了。可以看到模型的复杂程度随着$s$的增大而减小。

在python中使用

可通过下面的代码在python中使用单类SVM

from sklearn.svm import OneClassSVM

参考文献

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

collector list 多个分组_【S01E07】groupby方法、GroupBy对象、groupby方法的分组键

Hadley Wickham&#xff08;许多热门R语言包的作者&#xff09;创造了一个用于表示分组运算的术语"split-apply-combine"&#xff08;拆分-应用-合并&#xff09;&#xff0c;这个词很好的描述了整个过程。分组运算的第一个阶段&#xff0c;pandas对象&#xff08;无…

清理垃圾代码bat_来买个小内存u盘么咯?盘内带电脑垃圾清理.bat那种丨heibai.org...

在某宝个别店铺购买了小内存u盘到货后插入电脑&#xff0c;发现自带了一个名为电脑垃圾清理的小程序。对就是这货怀揣着这家店真好&#xff0c;还带了垃圾清理软件的想法&#xff0c;我试着运行了软件.但是好像没有卵用.正好小表弟好像对这个比较了解&#xff0c;我去问问他咋回…

射灯安装方法图解_家居射灯怎么选?第三代宜美SMD射灯给你正解

前段时间&#xff0c;刚把自己的房子完成硬装&#xff0c;在灯具选择的过程中&#xff0c;家人的意见就不太统一。其父母觉得选灯只要够亮就行&#xff0c;而媳妇觉得选灯选贵的才行。到底谁的选灯方法好呢&#xff1f;其实家人们的建议并不是完全不对&#xff0c;灯够亮只是其…

c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp

1. JSP的核心运行原理1) 客户端浏览器发送请求到服务器&#xff0c;访问a.jsp文件。http://localhost:8989/应用名/a.jsp2) 服务器端接收到请求后所做的处理a) 创建request和response两个对象b) 根据请求中的应用名找到该应用下面的web.xml文件&#xff0c;发现该应用的配置文件…

js aes加密_某高考咨询网js逆向分析笔记

一、某高考资讯网逆向分析某网站的js加密分析&#xff0c;安全签名signsafe HmacSHA1 AES一年前分析过网站数据还没有加密&#xff0c;最近需要获取新的数据发现原先的爬虫失效&#xff0c;请求和响应都经过加密。于是重新分析&#xff0c;记录下分析思路以及分析过程中遇到的…

python语言发明者 google_看看9种编程语言的发明者是怎么说的

从Node.js到C&#xff0c;看他们的发明者是如何评价他们的语言的未来。Ryan Dahl&#xff1a;Node.js问&#xff1a;它的主要优势是什么&#xff1f;Dahl&#xff1a;Node与其他的语言有一点明显的区别&#xff0c;就是处理I/O。所以它永远不允许用户锁上程序。它要求用户不断的…

opencv 的norm_22、OpenCV用卷积Filter2D进行滤波器

迄今为止&#xff0c;看到的函数中&#xff0c;卷积的操作发生在OpenCV函数的内部。理论上&#xff0c;图像卷积就是将内核与图像覆盖区域对应位置相乘之后求和。从调用函数上来看&#xff0c;它需要一个数组参数来描述内核。在实践层面&#xff0c;有一个重要的微妙因素会对结…

初学python有几个阶段_零基础如何系统的学习Python 从7个阶段入手

目前信息化产业发展势头很好&#xff0c;互联网就成为了很多普通人想要涉及的行业&#xff0c;因为相比于传统行业&#xff0c;互联网行业涨薪幅度大&#xff0c;机会也多&#xff0c;所以就会大批的人想要转行来学习Python开发。Python语言的应用Python是它们的主流语言&#…

glide加载gif图不显示动画_用Python绘制会动的柱形竞赛图

我们经常看到的Bar Chart Race&#xff08;柱形竞赛图&#xff09;&#xff0c;可以看到数据的呈现非常的直观。今天就一起来学习下如何生成和上面一样的柱形竞赛图。1、导入Python库2、加载数据集这里使用的是城市人口数据集&#xff0c;加载我们想要的数据&#xff1a;其中&a…

python做后端开发的优点_【后端开发】python语言的特点是什么

python语言的特点是什么&#xff1f;python语言的特点简单Python是一门简单而文字简约的语言。阅读好的Python程序感觉就像阅读英语&#xff0c;尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一&#xff0c;它可让你专注于解决问题的办法而不是语言本身。容易学…

rust队友开挂_腐蚀RUST开挂玩家识别方法 如何识别玩家开挂

远程查挂是最无奈的选择&#xff0c;也是最后的办法&#xff0c;遇到一些会隐藏的你也查不到。附体附体附体!!这是唯一的方法!!附体是最好的选择&#xff0c;当然gm必须有丰富的游戏经验&#xff0c;800小时以下的玩家不适合做gm(除非有老师傅带)。下面说说如何对付只开透视的老…

不冲突的端口范围_网络中IP地址发生冲突故障怎么办

——————欢迎新老朋友们加入微信群,方便技术讨论&#xff0c;信息互通&#xff0c;行业交流&#xff1a;智能弱电行业专家群&#xff1b;智能弱电行业技术群&#xff1b;智能弱电行业信息群&#xff1b;申请加入请加小编微信&#xff1a;15537112161———————有朋友提…

项目结构_组织结构对项目影响系列课程---项目式组织结构

在前面的几篇文章中我们分别介绍了&#xff0c;系统型&#xff08;简单型&#xff09;&#xff0c;职能型&#xff0c;弱矩阵&#xff0c;平衡矩阵&#xff0c;强矩阵结构的优点和缺点及它们带给项目的影响。今天我们介绍项目式组织结构的优点和缺点及其可能产生的影响。从结构…

第三范式的作用_钟启泉:教学范式的转型,让一线教师面临三大挑战 | 头条

培育“核心素养”的方法论——能动学习真实性的学习境脉所谓“能动学习”是“基于学习者的主体性参与与学习者之间能动的交互作用的学习而产生的”。它不是单纯记忆知识的学习&#xff0c;而是指学习者能够活跃地应对种种课题&#xff0c;并富有实感支撑的学习。基于“核心素养…

云服务器 管理控制台_关于小白如何初步管理自己的云服务器

博主在刚刚接触云服务器的时候&#xff0c;买的云服务是Linux系统的&#xff0c;反正是一脸懵&#xff0c;后来找了很多资料。所以博主认为步骤主要为以下几步第一步&#xff1a;如果买的是Linux系统将其重装成windows系统。以腾讯云服务器为例1.点击右上角的控制台2.进入买的云…

leetcode 贪心_利用贪心算法解LeetCode第1253题:重构2行二进制矩阵

题目描述给你一个 2 行 n 列的二进制数组&#xff1a;矩阵是一个二进制矩阵&#xff0c;这意味着矩阵中的每个元素不是 0 就是 1。第 0 行的元素之和为 upper。第 1 行的元素之和为 lower。第 i 列&#xff08;从 0 开始编号&#xff09;的元素之和为 colsum[i]&#xff0c;col…

为什么苹果内购总是失败_IOS用户支付失败 购买无法完成解决教程

格斗江湖iOS系统用户玩家&#xff0c;最近在充值的时候出现无法完成或者充值失败提示。这是怎么回事呢?出现上面的提示时&#xff0c;我们首先需要从自己“可控”的范围内查找原因。一、未越狱系统1、检查下自己的Apple ID是否有足够余额。2、中国大陆地区Apple ID账号&#x…

python中怎么创建配置文件_如何在Django中创建配置文件注册表单?

我试图创建一个定制的注册表单&#xff0c;但是我不知道如何去做&#xff0c;因为我试图将默认的django注册与一个新的模型连接起来。在这是它看起来的样子&#xff0c;可能是错的&#xff0c;但我正在考虑这样的事情。在模型.pyclass Profile(models.Model):user models.OneT…

pgadmin连接服务器失败_增值税发票税控软件:连接服务器失败是否使用离线文件进行更新?...

增值税发票税控软件&#xff1a;连接服务器失败是否使用离线文件进行更新&#xff1f;第一步&#xff1a;确认本地电脑是否可以正常打开网页&#xff1b;打开电脑&#xff0c;网页查看一下是否可以正常上网&#xff0c;打开百度发现&#xff0c;可以正常上网。第二步&#xff1…

移除镜像_这是否是你心目中的英雄联盟手游?镜像地图。水晶塔,传送移除

自从5月29日之后&#xff0c;RIOT官方放出了英雄联盟手游最新开发者日志后。关于视频内展示的多个游戏关键内容。在玩家群体中引起了大量的争议和讨论。以下是争议和讨论最多的内容1.游戏内英雄的攻击是否为AOE伤害?在大多数的玩家心中&#xff0c;英雄联盟手游是不应该有这种…