svm中的核函数(svm的核函数作用是什么)
大家好!今天让创意岭的小编来大家介绍下关于svm中的核函数的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、SVM算法采用高斯核函数,核函数的参数对结果影响大吗
核函数一般是为了解决维度过高导致的计算能力不足的缺陷,实质就是特征向量内积的平方。
为什么会提出核函数:
一般我们在解决一般的分类或者回归问题的时候,给出的那个数据可能在低维空间并不线性可分,但是我们选用的模型却是在特征空间中构造超平面,从而进行分类,如果在低维空间中直接使用模型,很明显,效果必然会大打折扣。
但是!如果我们能够将低纬空间的特征向量映射到高维空间,那么这些映射后的特征线性可分的可能性更大【记住这里只能说是可能性更大,并不能保证映射过去一定线性可分】,由此我们可以构造映射函数,但问题随之而来了,维度扩大,那么随之而言的计算成本就增加了,模型效果好了,但是可用性降低,那也是不行的。
于是有人提出了核函数的概念,可以在低维空间进行高维度映射过后的计算,使得计算花销大为降低,由此,使得映射函数成为了可能。举个简单的例子吧,假设我们的原始样本特征维度为2,将其映射到三维空间,随便假设我们的映射函数为f(x1,x2)
=
(x1^2,
x2^2,
2*x1*x2),那么在三维空间中,样本线性可分更大,但是向量内积的计算开销从4提高到9【如果从10维映射到1000维,那么计算花销就提高了10000倍,而实际情况下,特征维度几万上百万十分常见】,再看对于样本n1=(a1,a2),n2=(b1,b2),映射到三维空间之后,两者的内积I1为:a1^2
*
b1^2
+
a2^2
*
b2^2
+
4
*
a1
*
a2
*
b1
*
b2,此时,又有,n1,n2在二维空间中的内积为:a1b1
+
a2b2,平方之后为I2:a1^2
*
b1^2
+
a2^2
*
b2^2
+
4
*
a1
*
a2
*
b1
*
b2,此时
I1
和
I2
是不是很相似,只要我们将f(x1,x2)调整为:
(x1^2,
x2^2,
根号(2*x1*x2)
)
,那么此时就有I1
=
I2,也就是说,映射到三维空间里的内积,可以通过二维空间的内积的平方进行计算!
个人博客:www.idiotaron.org
里有关于svm核函数的描述~
实际上核函数还是挺难找的,目前常用的有多项式核,高斯核,还有线性核。
希望能帮到你,也希望有更好的想法,在下面分享下哈。
二、SVM中的核函数与概率密度估计中的非参数估计里的核函数有什么内在联系?
我觉得一样,都是对距离的度量。
三、在svm算法中引入核函数的目的?
有低维空间转到高维空间,使得在低维空间里不能线性分类的数据可以在高维空间里线性分类。
四、SVM常考细节
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) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。
以上就是关于svm中的核函数相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: