热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

SVM的具体介绍

SVM,全称是supportvectormachine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面

SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。
支持向量机的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法(实际上还有多分类),在引入了核方法之后SVM也可以用来解决非线性问题。它的基本学习策略是间隔最大化,可形式化一个求解凸二次优化问题,他的学习算法是求解凸二次优化的最优化问题,基本思想是能够正确划分训练数据集且几何间隔最大化的分离超平面。在决定分离超平面时只有sv起作用,其它实例点并不起作用,线性可分情况下,训练集的样本点与分离超平面最近的点的实例称为sv。
一般SVM有下面三种:
硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。
软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。
非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机。

SVM常见面试题

SVM什么时候选择线性核, 什么时候选择高斯核?
答: 当m(数据量)比较小而n(特征数量)比较大的时候, 应该用线性核. 因为此时特征空间已经很高维了, 而数据量不够多, 线性核足够分类了, 如果用高斯核投影到高维空间的话容易造成过拟合.
当m比较大而n比较小的时候, 应该用高斯核. 比如数据量很大的2维训练集, 此时可能线性不可分, 需要高斯核投影到高维空间进行线性分类.

在使用高斯核之前需要对数据进行处理吗?
答: 需要进行特征缩放, 因为高斯核需要两个点之间的欧式距离, 如果不进行特征缩放的话数量级较大的特征对核函数的结果有决定性影响, 而数量级小的特征会被忽略.

SVM中如何解决数据不平衡问题?
答: 数据不平衡在SVM中导致的主要问题是数量少的样本分布空间不如数量多的广, 支持向量总体会向数量少的分类偏移. 解决办法是给样本少的分类更大的惩罚因子C, 表示我们更重视这部分样本. C+和C-可以按样本数量比例分, 或者按空间超球体的半径比例分, 具体结合实际问题考虑.

SVM中原始问题为什么要转化成对偶问题进行求解?
答: 1. 改变算法复杂度. 对偶问题往往更容易求解. 2. 转化为对偶问题才能得到内积的形式, 引入核函数, 进而推广到非线性分类问题.

SVM为什么采用间隔最大化?
答: 当数据线性可分时, 有无穷多个超平面可以将数据分开, 利用间隔最大化可以求得最优分离超平面, 解是唯一的, 此时的分离超平面的分类结果是最鲁棒的, 对未知数据的泛化能力最强.

为什么SVM要引入核函数?
答: SVM在求解对偶问题的时候, 会出现数据点的内积的形式, 而分类决策函数也只需要内积的结果, 因此可以通过引入核函数把样本映射到高维空间, 隐式地在高维空间中进行分类. 当样本在原始空间线性不可分时, 通过核函数将样本映射到更高维的特征空间, 样本在这个特征空间将线性可分或者接近线性可分.

核函数理论上可以应用在别的分类算法上比如LR, 为什么不建议这么做?
答: 分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。在计算决策面时,SVM转化为对偶问题后,只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的),这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

SVM相对于LR有什么不同?
答: 1.样本点对于模型的作用不同. SVM中只有支持向量对模型有影响, 而LR中所有点都有影响. 2.损失函数不同. SVM采用的是合页损失函数, LR采用的是对率损失函数. 3.输出不同. LR输出的是对样本点是否属于给定分类的概率, SVM只能判断是否属于某一分类. 4.处理非线性问题的能力不同. SVM可以通过核函数灵活的将非线性问题转化为线性问题求解, 而LR需要手动进行特征转换.

SVM的优点?
答: 1.用内积核函数代替向高维空间的非线性映射. 2.间隔最大化的思想, 取得最优分类超平面. 3.最终结果只由支持向量决定, 剔除了大量的冗余样本, 因此具有一定的鲁棒性. 4.决策函数也只由支持向量决定, 降低了计算复杂度. 5.有坚实的理论基础.

SVM的缺点?
答: 1.涉及m阶矩阵的计算, 当m很大时候计算的空间复杂度和时间复杂度都很高. 2.传统的SVM只能给出二分类的结果, 对于多分类需要需要用到组合分类器. 3.对数据缺失敏感, 对参数与核函数选择敏感.

为什么SVM对数据缺失敏感?
答: 因为SVM中涉及了距离度量, 缺失的数据可能对距离的影响很大, 如果处理不好, 结果就会差很多.

SVM如何做多分类?
答: 1-V-rest:将某一类归为正类,其余全部是负类。
该方法的最大缺陷是数据集的不平衡,因为某一类的实例往往只占一小部分。当然解决不平衡的问题可以进行降采样或者上采样,但是上采样中数据集过多重合,易导致过拟合,而降采样使得数据利用率不足,不能学习整个模型的特性。
1-V-1:k类的数据集中,单独为每两类的样本设计SVM,进行分类。最终必须设计k(k-1)/2个分类器,最终用投票的方式进行选择。这也是libsvm采用的方法,但是当类别比较多的时候, 效率很低.


推荐阅读
  • 支持向量机(SVM)算法综述
    支持向量机(Support Vector Machine, SVM)是由Cortes和Vapnik于1995年首次提出的一种机器学习算法。SVM在处理小样本、非线性及高维模式识别问题上表现出显著的优势,并广泛应用于函数拟合等其他机器学习任务中。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 分隔超平面:将数据集分割开来的直线叫做分隔超平面。超平面:如果数据集是N维的,那么就需要N-1维的某对象来对数据进行分割。该对象叫做超平面,也就是分类的决策边界。间隔:一个点 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • 纵坐标|据点_菜菜的sklearn课堂笔记支持向量机线性SVM决策过程的可视化
    纵坐标|据点_菜菜的sklearn课堂笔记支持向量机线性SVM决策过程的可视化 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • 支持向量机(SVM)在机器学习中的应用与学习心得
    支持向量机(SVM)是一种高效的二分类模型,其核心目标是通过寻找最优超平面来区分不同类别的数据点。在实际应用中,SVM能够有效地处理高维数据,并通过核技巧扩展到非线性分类问题。当新的数据点输入时,SVM会根据其相对于超平面的位置来判定其所属类别。训练过程中,SVM通过最大化间隔来确定最优超平面,从而提高模型的泛化能力。本文总结了SVM在机器学习中的应用及其学习心得,探讨了其在实际问题中的优势和局限性。 ... [详细]
  • 如何选择机器学习方法http:scikit-learn.orgstabletutorialmachine_learning_mapindex.html通用学习模式只需要先定义 ... [详细]
  • NLP篇【01】tfidf与bm25介绍与对比
    上一篇:自然语言处理【NLP】遇上电商——专栏导读下一篇:NLP篇【02】白话Word2vec原理以及层softmax、负采样的实现一、tfidf介 ... [详细]
  • 这是我在复习时整理的笔记,过一遍就稳了,建议还是把PPT过一遍,老师考的都是基础题,大部分都在PPT上,特别是 ... [详细]
  • 概述SVM(支持向量机)是一个二分类的模型,它的主要思想就是间隔最大化,那么问题来了,什么是间隔最大化&#x ... [详细]
  • 机器学习算法常见面试题目总结,Go语言社区,Golang程序员人脉社 ... [详细]
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
author-avatar
看具戴_370
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有