支持向量机的原理

一、什么是支持向量机  支持向量机(supportvectormachine,简称SVM)是一种基于统计学习理论的新型学习机,是由前苏联教授Vapnik最早提出的。与传统的学习方法不同,支持向量机是结构风险最小化方法的近似实现。这个归纳原理是基于这样的事实,学习机器在测试数据上的误差率(即泛化误差率)以训练误差率和一个依赖于Vc维数(Vapnik-Chervonenkisdimensio…

大家好,又见面了,我是你们的朋友全栈君。

一、什么是支持向量机

  支持向量机(support vector machine,简称SVM)是一种基于统计学习理论的新型学习机,是由前苏联教授Vapnik最早提出的。与传统的学习方法不同,支持向量机是结构风险最小化方法的近似实现。这个归纳原理是基于这样的事实,学习机器在测试数据上的误差率(即泛化误差率)以训练误差率和一个依赖于Vc维数(Vapnik-Chervonenkis dimension)的项的和为界;在可分模式情况下,支持向量机对于前一项的值为零,并且使第二项最小化。因此,尽管支持向量机不利用问题的领域知识,在模式分类问题上,仍能提供好的泛化性能,这个属性是支持向量机特有的。其实现的是如下的思想:通过某种事先选择的非线性映射将输入向量x映射到一个高维特征空间z,在这个空间中构造最优分类超平面,从而使正例和反例样本之间的分离界限达到最大。从概念上说,支持向量是那些离决策平面最近的数据点,它们决定了最优分类超平面的位置。

二、支持向量机的原理

 超平面和最近的数据点之间的间隔被称为分离边缘,用P表示。支持向量机的目标是找到一个特殊的超平面,对于这个超平面分离边缘P最大。在这个条件下,决策曲面称为最优超平面。下图是二维输入空间中最优超平面的几何结构。

                        支持向量机的原理

基本上,支持向量机的思想建立在两个数学运算上,概述如下
 1) 输入向量到高维特征空间的非线性映射,特征空间对输入和输出都是隐藏的
 2)  构造一个最优超平面用于分离在上一步中发现的特征。

三、支持向量机的算法

 比较经典的如

1)Vapnik提出的Chunking方法;其出发点是删除矩阵中对应Lagrange乘数为零的行和列将不会影响最终结果,然而,在训练集的支持向量数很大的时候,Chunking算法仍然无法将矩阵放入内存中。

2)Qsuna提出的Qsuna算法;该算法存在效率问题,因为在每一步中,进行一次QP问题的最优化只能使一个样本符合Kuhn-Tucker条件。

3)Plat提出的序贯最小优化方法(sequential minimal optimization,简称SMO);将一个大型的QP问题分解为一系列最小规模的QP子问题,即仅具有两个Lagrange乘数的QP问题,从而使得原问题可以通过分析的方法加以解决,避免了在内循环中使用数值算法进行QP最优化。该算法在训练线性SVM时,可以获得非常好的性能。

四、支持向量机的几种内积核函数

   1)多项式学习机

  2)径向基函数网络

  3)两层感知器

支持向量机的原理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125223.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月5日 上午11:35
下一篇 2022年4月5日 上午11:35


相关推荐

  • 仅60元,超长待机,国产开源智能AI毛绒玩具,内置DeepSeek、千问Qwen、豆包大模型!

    仅60元,超长待机,国产开源智能AI毛绒玩具,内置DeepSeek、千问Qwen、豆包大模型!

    2026年3月12日
    2
  • Python中单引号和双引号有什么区别?

    Python中单引号和双引号有什么区别?在 Python 中使用单引号或双引号是没有区别的 都可以用来表示一个字符串 但是这两种通用的表达方式可以避免出错之外 还可以减少转义字符的使用 使程序看起来更清晰 举两个例子 1 包含单引号的字符串定义一个字符串 my str 其值为 I mastudent 可以用转义字符和不用转义字符 my str I mastudent my str I mastudent 2 包含双引号的字符串定义一个字符串 my str 其值为 Jasonsaid Ilikeyou

    2026年3月18日
    1
  • java构造函数方法声明无效_如何构造函数

    java构造函数方法声明无效_如何构造函数一、什么是构造函数java构造函数,也叫构造方法,是java中一种特殊的函数。函数名与相同,无返回值。作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。在现实生活中,很多事物一出现,就天生具有某些属性和行为。比如人一出生,就有年龄、身高、体重、就会哭;汽车一出产,就有颜色、有外观、可以运行等。这些,我们就可以将这些天然的属性和行为定义在构造函数中,…

    2025年10月9日
    4
  • Python保存json_python保存json文件

    Python保存json_python保存json文件json文件是一种常见的数据存储文件,比txt看着高级点,比xml看着人性化一点。同时,json作为一种通用协议的文件格式,可以被各种语言方便地读取。所以,json非常适合用来存储结构化的数据。json的具体介绍和使用规范:https://www.json.org/json-en.html本文将关于python读取json做一个小小的记录和总结。1.读取json一般情况下的j…

    2022年10月12日
    7
  • Claude 4:AI 编程新王者登基!国内直接使用

    Claude 4:AI 编程新王者登基!国内直接使用

    2026年3月15日
    2
  • 在JavaScript中时间戳

    在JavaScript中时间戳一 JavaScript 时间转为时间戳 1 Date now 用 Date now 可以获得当前的时间戳 lettimestamp Math round newDate 1000 这个只精确到了秒 vartimestamp newDate getTime 这个精确到了毫秒 2 判断超出多久的时间 constnow Date now constd newDate time time 为时间戳 constsecDiff

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号