SVM常考细节
2024-05-13m.verywind.com
~
SVM的原理是什么?
SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉: 硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。
SVM为什么采用间隔最大化?
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。
感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。
线性可分支持向量机 利用间隔最大化求得最优分离超平面 ,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是 最鲁棒 的,对未知实例的 泛化能力最强 。
然后应该借此阐述,几何间隔,函数间隔,及从函数间隔—>求解最小化1/2 ||w||^2 时的w和b。即线性可分支持向量机学习 算法 —最大间隔法的由来。
为什么要将求解SVM的原始问题转换为其对偶问题?
一、是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是 把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。 )
二、自然引入核函数,进而推广到非线性分类问题。
为什么SVM要引入核函数?
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
引入映射后的对偶问题:
在学习预测中,只定义核函数 K ( x , y ),而不是显式的定义映射函数 ϕ 。因为 特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x )· ϕ ( y )是比较困难的。 相反,直接计算 K ( x , y )比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。
核函数的定义: K ( x , y )=< ϕ ( x ), ϕ ( y )>,即在特征空间的内积等于它们在原始样本空间中通过核函数K计算的结果。
除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
svm RBF核函数的具体公式?
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数σ的增大而减弱。
这个核会将原始空间映射为无穷维空间。不过,如果 σ 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果 σ 选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数 σ , 高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
SVM是用的是哪个库?Sklearn/libsvm中的SVM都有什么参数可以调节?
用的是sklearn实现的。采用sklearn.svm.SVC设置的参数。本身这个函数也是基于libsvm实现的(PS: libsvm中的二次规划问题的解决算法是SMO)。
SVC函数的训练时间是随训练样本平方级增长,所以不适合超过10000的样本。
对于多分类问题,SVC采用的是one-vs-one投票机制,需要两两类别建立分类器,训练时间可能比较长。
sklearn.svm.SVC( C=1.0 , kernel='rbf' , degree=3 , gamma='auto' , coef0=0.0 , shrinking=True , probability=False , tol=0.001 , cache_size=200 , class_weight=None , verbose=False , max_iter=-1 , decision_function_shape=None , random_state=None )
参数:
l C:C-SVC的惩罚参数C?默认值是1.0
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集 测试 时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
l kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 线性:u'v
1 – 多项式:(gamma*u'*v + coef0)^degree
2 – RBF函数:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
l degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
l gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
l coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
l probability: 是否采用概率估计?.默认为False
l shrinking :是否采用shrinking heuristic方法,默认为true
l tol: 停止训练的误差值大小,默认为1e-3
l cache_size :核函数cache缓存大小,默认为200
l class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
l verbose :允许冗余输出?
l max_iter :最大迭代次数。-1为无限制。
l decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
l random_state :数据洗牌时的种子值,int值
主要调节的参数有:C、kernel、degree、gamma、coef0。
SVM如何处理多分类问题?
一般有两种做法:一种是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。
另外一种做法是间接法:对训练器进行组合。其中比较典型的有 一对一 ,和 一对多 。
一对多,就是对每个类都训练出一个分类器,由svm是二分类,所以将此而分类器的两类设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。
svm一对一法(one-vs-one),针对任意两个类训练出一个分类器,如果有k类,一共训练出C(2,k) 个分类器,这样当有一个新的样本要来的时候,用这C(2,k) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。
支持向量机 答:支持向量机(Suport Vector Machine,常简称为SVM),是一个监督式学习的方式。支持向量机属于一般化线性分类器,这类分类器的特点是能够同时最小化经验误差与最大化几何边缘区,因此支持向量机机也被称为最大边缘区分类器。 蓝色和红色的线圈出来的点就是所谓的支持向量,离分界线最近的点,如果去掉这些点,直线多半要改...
数据挖掘-支持向量机 答:要把SVM应用到非线性决策边界的数据集上,就要把数据集从原来的坐标空间x变换到新的坐标空间中。 我们假定存在一个合适的函数 来变化给定的数据集,那么变换之后,我们就可以根据 来构建线性决策边界(类似于换元法,回忆一下)。变换之后,线性决策边界具有以下的形式: 根据线性SVM的参数计算公式,我们把公式里面的 换成...
西瓜书第六章支持向量机(6.1-6.2) 答:我们再重新看一遍关于SVM的定义,目的是取得间隔最大化的学习器,当超平面距离数据点越远时候,分类的确信度也越大,为了让确信度足够高我们应该让所选择的超平面最大化这个“间隔”值,两个经过异类支持向量点的超平面之间距离为2/||w||,就是我们需要最大化的间隔。如下图所示 我们的超平面对数据进行...
支持向量机(SVM)基本原理 答:支持向量机通俗导论(理解SVM的三层境界) 线性回归 给定数据集 , 其中, ,线性回归试图学习到一个线性模型,尽可能地输出正确标记. 如果我们要用线性回归算法来解决一个分类问题,(对于分类,y 取值为 0 或者 1),但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,就算所有训练样本的标签...
常见分类模型( svm,决策树,贝叶斯等)的优缺点,适用场景以及如何选型... 答:深入解析:svm、决策树与贝叶斯分类模型的优劣、适用场景与选型策略在数据科学的世界里,各类分类模型犹如璀璨的繁星,其中svm、决策树和贝叶斯等经典模型各有其独特的魅力与局限。让我们一起探索它们的内在特性,以及在实际应用中的最佳选择。首先,让我们聚焦于svm,这位天生的结构风险优化者。它的稳定性与...
研究生面试深度学习,常考知识点有哪些? 答:3)机器学习主要模型:线性回归,逻辑回归,svm,各种树模型等等。原理公式要会,也要能熟悉推导过程。4)大数据,要了解并行化分布式的东西,比如hadoop,spark,Hive等,要明白底层的工作原理。另外,我们要知道面试回答问题的过程其实是各方面能力的展现过程。对面试官提出的问题,不要想当然地给出非此即彼...
支持向量机 答:(1)线性可分支持向量机: 又称为硬间隔支持向量机,通过硬间隔最大化来学习一个线性分类器。适合 数据线性可分 情况; (2)线性支持向量机: 又称为软间隔支持向量机,通过软间隔最大化来学习一个线性分类器。适合 数据近似线性可分 情况; (3)非线性支持向量机: 通过核技巧和软间隔最大化来学一个非线性分类器...
深度学习(视觉)面试中常问的知识点有哪些 答:不过其实你回答不出来也没有很大问题(如果你是校招或者刚刚转行想做这个),这方面主要考考你的逻辑思维和口头表达能力。专业知识。深度学习这方面的专业知识。具体看公司要求了。如果他是想要找一些底子好的苗子自己培养,你这块懂不懂也没有太大关系。不过这是一个现实的社会,基本上都是要你在深度...
SVM(支持向量机)属于神经网络范畴吗? 答:回答:支持向量机是什么?SVM是英语“支持向量机”的缩写,支持向量机是一种常见的识别方法。在机器学习领域,它是一种监督学习模式,通常用于模式识别、分类和回归分析。 特别是这个线性支持向量机的计算部分和单层神经网络是一样的,这只是一个矩阵乘积。SVM的关键在于它的铰链损耗和最大限度的概念。这种损耗...
、重定向与转发有何区别?它们分别在什么情况下使用? 答:SVM和logistic回归分别在什么情况下使用 两种方法都是常见的分类演算法,从目标函式来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss.这两个损失函式的目的都是增加对分类影响较大的资料点的权重,减少与分类关系较小的资料点的权重.SVM的处理方法是只考虑support vectors,也就是和分类...
SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉: 硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。
SVM为什么采用间隔最大化?
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。
感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。
线性可分支持向量机 利用间隔最大化求得最优分离超平面 ,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是 最鲁棒 的,对未知实例的 泛化能力最强 。
然后应该借此阐述,几何间隔,函数间隔,及从函数间隔—>求解最小化1/2 ||w||^2 时的w和b。即线性可分支持向量机学习 算法 —最大间隔法的由来。
为什么要将求解SVM的原始问题转换为其对偶问题?
一、是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是 把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。 )
二、自然引入核函数,进而推广到非线性分类问题。
为什么SVM要引入核函数?
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
引入映射后的对偶问题:
在学习预测中,只定义核函数 K ( x , y ),而不是显式的定义映射函数 ϕ 。因为 特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x )· ϕ ( y )是比较困难的。 相反,直接计算 K ( x , y )比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。
核函数的定义: K ( x , y )=< ϕ ( x ), ϕ ( y )>,即在特征空间的内积等于它们在原始样本空间中通过核函数K计算的结果。
除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
svm RBF核函数的具体公式?
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数σ的增大而减弱。
这个核会将原始空间映射为无穷维空间。不过,如果 σ 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果 σ 选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数 σ , 高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
SVM是用的是哪个库?Sklearn/libsvm中的SVM都有什么参数可以调节?
用的是sklearn实现的。采用sklearn.svm.SVC设置的参数。本身这个函数也是基于libsvm实现的(PS: libsvm中的二次规划问题的解决算法是SMO)。
SVC函数的训练时间是随训练样本平方级增长,所以不适合超过10000的样本。
对于多分类问题,SVC采用的是one-vs-one投票机制,需要两两类别建立分类器,训练时间可能比较长。
sklearn.svm.SVC( C=1.0 , kernel='rbf' , degree=3 , gamma='auto' , coef0=0.0 , shrinking=True , probability=False , tol=0.001 , cache_size=200 , class_weight=None , verbose=False , max_iter=-1 , decision_function_shape=None , random_state=None )
参数:
l C:C-SVC的惩罚参数C?默认值是1.0
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集 测试 时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
l kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 线性:u'v
1 – 多项式:(gamma*u'*v + coef0)^degree
2 – RBF函数:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
l degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
l gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
l coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
l probability: 是否采用概率估计?.默认为False
l shrinking :是否采用shrinking heuristic方法,默认为true
l tol: 停止训练的误差值大小,默认为1e-3
l cache_size :核函数cache缓存大小,默认为200
l class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
l verbose :允许冗余输出?
l max_iter :最大迭代次数。-1为无限制。
l decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
l random_state :数据洗牌时的种子值,int值
主要调节的参数有:C、kernel、degree、gamma、coef0。
SVM如何处理多分类问题?
一般有两种做法:一种是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。
另外一种做法是间接法:对训练器进行组合。其中比较典型的有 一对一 ,和 一对多 。
一对多,就是对每个类都训练出一个分类器,由svm是二分类,所以将此而分类器的两类设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。
svm一对一法(one-vs-one),针对任意两个类训练出一个分类器,如果有k类,一共训练出C(2,k) 个分类器,这样当有一个新的样本要来的时候,用这C(2,k) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。