SVM介绍

article/2025/10/1 2:32:19

SVM

  • 概念

支持向量机(support vector machines,SVM)是一种二分类模型。基本原理是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。

  • 作用

    • svm不仅可以支持这种简单的线性可分离的数据,还可以

      借助“软间隔(soft margin)”实现对不能线性可分但是可以近似线性可分的数据的分类;

    • 借助“核函数”,或者说“核技巧kernel tirck”,实现对任意非线性数据的分类;

    • SVM 适合中小型数据样本、非线性、高维的分类问题。

  • 优缺点

    优点缺点
    解决小样本下机器学习问题(不像深度学习一样,依赖海量数据)常规SVM只支持二分类
    可以解决高维问题,即大型特征空间(借助核函数)
    泛化能力比较强
    无需依赖整个数据对缺失数据敏感
    无局部极小值问题
    能够处理非线性特征的相互作用对非线性问题没有通用解决方案,有时候很难找到一个合格的核函数
    SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数据,而不是样本空间的维数,在这某种意义上避免了“维数灾难”当样本很多时,效率并不是很高(借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目喊打时该矩阵的存储和计算将耗费大量的机器内存和运算时间)
    理论基础扎实,分类问题可以从原理上解释(相比于“玄学调参”的深度学习)对于核函数的高维映射可解释性不强,youqishi
  • 问题

  1. SVM显然是线性分类器,但数据如果根本就线性不可分怎么办

    数据在原始空间(称为输入空间)线性不可分,但是映射到高维空间(称为特征空间)后很可能就线性可分了。

    但是映射到高维空间同时带来一个问题:在高维空间上求解一个带约束的优化问题显然比在低维空间上计算量要大得多,这就是所谓的“维数灾难”。

    于是就引入了“核函数”,核函数虽然也是把特征进行从低维到高维的转换,但是它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,即避免了直接在高维空间中的复杂计算。

  2. 常用的核函数有哪些

​ 1.线性核函数(Linear Kernel)表达式为:

​ 2.多项式核函数(Polynomial Kernel)是线性不可分SVM常用的核函数之一,表达式为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIQm60uF-1660292990776)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646018999350/2A25B38AA83BB1F8EE1ACD6D08CADA4B)],
其中,各种参数都需要自己调参定义,调参比较麻烦

​ 3.高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是libsvm默认的核函数,也是scikit-learn默认的核函数。表达式为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2p56nz8-1660292990777)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646019027216/E652F235C95EF93397CF0B6A86C4AE0B)], 其中,γ大于0,需要自己调参定义

​ 4.Sigmoid核函数(Sigmoid Kernel)也是线性不可分SVM常用的核函数之一,表达式为:K(x,z)=tanh(γx∙z+r), 其中γ,r也都需要自己调参定义

  1. SVM的loss是啥

SVM 中经典的loss functioSVM 中经典的loss function是Hinge Loss,中文名也叫合页损失函数,因为它的图像就像一本打开的书,或者门和门框上的合页。

公式n 是 Hinge Loss,中文名也叫合页损失函数,因为它的图像就像一本打开的书,或者门和门框上的合页。 公式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2PYrRw8-1660292990777)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646019148167/FCE99F6676756A3E52B50E9D346E824D)]

第一项是损失,第二项是正则化项。这个公式就是说

y**i(wx**i+b)

大于1时loss为0, 否则loss为1−y**i(wx**i+b)Hinge Loss不仅会惩罚错误的预测,还会惩罚不自信的正确预测。Hinge Loss简化了SVM的数***算,同时最大化了损失(与Log-Loss相比)。当我们想要做出实时决策而不过于关注准确性时使用它。正是因为Hinge Loss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。Hinge loss可视化

import numpy as np
from matplotlib import pyplot as pltdef hinge_loss(x):  return np.maximum(0, 1 - x)def plot_hinge_loss():x = np.arange(-5, 5, 0.1)y = hinge_loss(x)plt.plot(x, y, label="hinge loss")y2 = np.where(x > 0, 0, 1)plt.plot(x, y2, label="0-1 loss")plt.legend()plt.title("nowcoder: offer+1")plt.show()
plot_hinge_loss()

在这里插入图片描述

当x>=1时,函数为0,当x<1时,函数斜率为-1, 当t>1时,函数斜率为0.另外,除了hinge loss,还可以使用以下两种损失函数1、指数损失(exponential loss):y=exp(-x)2、对率损失(logistic loss):y=log(1+exp(-x))


http://chatgpt.dhexx.cn/article/qAIcqw2W.shtml

相关文章

SVM理论

SVM入门&#xff08;一&#xff09;至&#xff08;三&#xff09;Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法&#xff0c;一起复习,然后继续SVM之旅. &#xff08;一&#xff09;SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年…

SVM的理解

1.SVM的概念 SVM&#xff0c;英文全称为 Support Vector Machine&#xff0c;中文名为支持向量机&#xff0c;由数学家Vapnik等人早在1963年提出。在深度学习兴起之前&#xff0c;SVM一度风光无限&#xff0c;是机器学习近几十年来最为经典的&#xff0c;也是最受欢迎的分类方法…

SVM算法原理

简介 支持向量机&#xff08;support vector machines&#xff09;是一个二分类的分类模型&#xff08;或者叫做分类器&#xff09;。如图&#xff1a; 它分类的思想是&#xff0c;给定给一个包含正例和反例的样本集合&#xff0c;svm的目的是寻找一个超平面来对样本根据正例和…

svm原理详解,看完就懂(一)

&#xff08;一&#xff09;SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的&#xff0c;它在解决小样本、非线性及高维模式识别中表现出许多特有的优势&#xff0c;并能够推广应用到函数拟合等其他机器学习问题中[10]。 支持向量机方法…

SVM算法—原理讲解

原文作者&#xff1a;奔跑的前浪 原文地址&#xff1a;svm算法 最通俗易懂讲解 最近在学习svm算法&#xff0c;借此文章记录自己的学习过程&#xff0c;在学习时很多处借鉴了z老师的讲义和李航的统计&#xff0c;若有不足的地方&#xff0c;请海涵&#xff1b;svm算法通俗的理解…

SVM --从“原理”到实现

零. 本文所有代码均能在我 github上的 DML 找到&#xff0c;顺便求点Star 一.引入 从一开始接触机器学习&#xff0c;就感觉SVM&#xff08;支持向量机 Support Vector Machine&#xff09;就是高端大气上档次的代名词啊&#xff0c;在深度学习出来之前一直都力压ANN一头&…

SVM算法详解

Support Vector Machine 终于&#xff0c;我们来到了SVM。SVM是我个人感觉机器学习中最优美的算法&#xff0c;这次我们要来非常细致地介绍。SVM是一类有监督的分类算法&#xff0c;它的大致思想是&#xff1a;假设样本空间上有两类点&#xff0c;我们希望找到一个划分超平面&…

SVM简介

SVM 文章目录 SVM一. 什么是SVM1. 简介2.SVM分类 二. 详细介绍1. 线性可分SVM1.1 支撑点&#xff0c;支撑向量1.2 分割超平面与间隔最大化1.3 线性可分SVM的目标函数以及相关算法1.4 线性可分SVM的简单举例 2.线性SVM2.1 为什么需要线性SVM2.2 线性SVM相关理论2.3 线性SVM算法 …

Svm算法原理及实现

Svm&#xff08;support Vector Mac&#xff09;又称为支持向量机&#xff0c;是一种二分类的模型。当然如果进行修改之后也是可以用于多类别问题的分类。支持向量机可以分为线性核非线性两大类。其主要思想为找到空间中的一个更够将所有数据样本划开的超平面&#xff0c;并且使…

SVM 原理详解,通俗易懂

看了该作者的文章&#xff0c;瞬间膜拜了&#xff01;讲得太好了&#xff01; 转自&#xff1a;http://www.blogjava.net/zhenandaci/category/31868.html &#xff08;一&#xff09;SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的&…

机器学习笔记6:SVM基本原理

SVM的基本原理&#xff1a; 1、最大间隔原则 2、对偶表示 3、KKT条件 SVM(Support Vector Machine)&#xff0c;又称支持向量机&#xff0c;在分类问题上&#xff0c;除了logistic分类回归外&#xff0c;还有另一种实现方式&#xff0c;那就是使用SVM原则。那么什么是SVM 呢。…

SVM原理

我们先认识一下SVM&#xff1a; &#xff08;1&#xff09;支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种对数据进行二分类的广义线性分类器&#xff0c;其分类边界是对学习样本求解的最大间隔超平面。 &#xff08;2&#xff09;SVM使用铰链损失函数…

通俗易懂SVM原理介绍,适合小白食用

目录 1、SVM概念描述 2、SVM数学表达及相关计算 3、SVM优化问题定义 附&#xff1a;证明区 【证明1】 【计算1】 1、SVM概念描述 如图一所示&#xff0c;存在两个数据集&#xff0c;我们希望通过一个超平面将两个数据集分割开&#xff0c;并且我们希望这个超平面离两个数…

01-Hive创建表

声明&#xff1a;本实验环境是Apache hadoop-2.2.0&#xff0c;zookeeper-3.4.5&#xff0c;mysql Server version: 5.1.73作为元数据库&#xff0c;hive版本是apache-hive-0.9.0-bin&#xff0c;都是apache&#xff0c;不是CDH和其他。本实验集群3台&#xff0c;一个主节点(ha…

hive 中创建表的三种方式

官网地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualDDL 通常我们所使用的创建hive表有三种方式 1.create table 首先我们找到官网对创建表的描述如下&#xff1a; ’[]’ 表示可选&#xff0c;’|’ 表示几选一 CREATE [TEMPORARY] [EXT…

hive创建新表——基础

创建基础表 1、创建表&#xff1a; create table if not exists orders 创建一个名叫“orders”的表&#xff0c;“if not exists”可以写可不写&#xff0c;如果相同名字的表已经存在&#xff0c;则抛出异常&#xff0c;可以用 IF NOT EXIST 选项来忽略这个异常。 2、定义表…

HIVE的常用操作-建库和表-插入数据

hive的安装&#xff08;远程模式&#xff09; 点击打开链接 使用hive----------------------- 启动hadoop 启动hive 创建数据库&#xff1a; create database myhive; 查看数据库&#xff1a; hive (default)> show databases; OK database_name default myhive 数…

Hive三种建表语句详解

转载自&#xff1a;https://blog.csdn.net/qq_36743482/article/details/78383964 注&#xff1a;hive其他语法在hive官网有说明&#xff0c;建议初学者&#xff0c;去官网学习一手的资料&#xff0c; 官网&#xff1a;https://cwiki.apache.org/confluence/display/Hive/Home#…

关于hive建表查询语句小记

库相关操作 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; IF NOT EXISTS 也就是没有重复库就创建&#xff0c;有重复就不执行建库 保证了建库…

hive、pg库,建表语句及查询表结构语句

1、hive hive 建表语句 DROP TABLE IF EXISTS tmp_001; CREATE TABLE tmp_001 (etl_time timestamp comment , day_id double comment , subs_id string comment , msisdn int comment ) comment partitioned by…