HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    svm自定义核函数(svm核函数的选择)

    发布时间:2023-04-21 23:15:46     稿源: 创意岭    阅读: 105        

    大家好!今天让创意岭的小编来大家介绍下关于svm自定义核函数的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    svm自定义核函数(svm核函数的选择)

    一、svm常用核心函数有哪些?

    (1)线性核函数: K(X,Xp)=X’*Xp

    (2)多项式核函数

    采用该函数的SVM是一个q阶多项式分类器,其中q为由用户决定的参数。

    (3)Gauss核函数

    采用该函数的SVM是一种径向积函数分类器。

    (4)Sigmoid核函数

    二、请教libSVM中一类SVM训练及测试的参数设置问题

     -s svm类型:SVM设置类型(默认0)

    % 0 -- C-SVC

    % 1 --v-SVC

    % 2 – 一类SVM

    % 3 -- e -SVR

    % 4 -- v-SVR

    % -t 核函数类型:核函数设置类型(默认2)

    % 0 – 线性:u'v

    % 1 – 多项式:(r*u'v + coef0)^degree

    % 2 – RBF函数:exp(-r|u-v|^2)

    % 3 –sigmoid:tanh(r*u'v + coef0)

    % 4 -- precomputed kernel (kernel values in training_instance_matrix)

    % -d degree:核函数中的degree设置(针对多项式核函数)(默认3)

    % -g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)

    % -r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)

    % -c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)

    % -n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)

    % -p p:设置e -SVR 中损失函数p的值(默认0.1)

    % -m cachesize:设置cache内存大小,以MB为单位(默认40)

    % -e eps:设置允许的终止判据(默认0.001)

    % -h shrinking:是否使用启发式,0或1(默认1)

    三、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或LR。

    如果特征的数量小,样本的数量正常,则选用高斯核函数SVM。

    如果特征的数量小,样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算量会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM;

    利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数。

    混合核函数方法,将不同的核函数结合起来。

    当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机或神经网络等利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

    增、删非支持向量样本对模型没有影响;

    支持向量样本集具有一定的鲁棒性;

    有些成功的应用中,SVM 方法对核的选取不敏感

    噪声数量太多

    噪声以新的分布形式出现,与原先样本集的噪声分布表现的相当不同。此时噪声也有大概率落在最大分类间隔中间,从而成为支持向量,大大影响模型。

    所以我们常说的鲁棒性其实是主要是体现在对Outlier(异常点、离群点)上。

    这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,若存在缺失值它们在该特征维度很难正确的分类(例如SVM要度量距离(distance measurement),高斯核,那么缺失值处理不当就会导致效果很差),所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

    SVM的空间消耗主要是在存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的内存和运算时间。如果数据量很大,SVM的训练时间就会比较长,所以SVM在大数据的使用中比较受限。

    过拟合是什么就不再解释了。SVM其实是一个自带L2正则项的分类器。SVM防止过拟合的主要技巧就在于调整软间隔松弛变量的惩罚因子C。C越大表明越不能容忍错分,当无穷大时则退化为硬间隔分类器。合适的C大小可以照顾到整体数据而不是被一个Outlier给带偏整个判决平面。至于C大小的具体调参通常可以采用交叉验证来获得。每个松弛变量对应的惩罚因子可以不一样。

    一般情况下,低偏差,高方差,即遇到过拟合时,减小C;高偏差,低方差,即遇到欠拟合时,增大C。

    样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向”负类(因为负类数量少,分布得不够广),影响结果的准确性。

    对于样本偏斜(样本不平衡)的情况,在各种机器学习方法中,我们有针对样本的通用处理办法:如上(下)采样,数据合成,加权等。

    仅在SVM中,我们可以通过为正负类样本设置不同的惩罚因子来解决样本偏斜的问题。具体做法是为负类设置大一点的惩罚因子,因为负类本来就少,不能再分错了,然后正负类的惩罚因子遵循一定的比例,比如正负类数量比为100:1,则惩罚因子的比例直接就定为1:100,具体值要通过实验确定。

    优点:

    非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;

    对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;

    支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量;

    SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

    小样本集上分类效果通常比较好。

    少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:

    ①增、删非支持向量样本对模型没有影响;

    ②支持向量样本集具有一定的鲁棒性;

    ③有些成功的应用中,SVM 方法对核的选取不敏感

    SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。

    缺点:

    SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间(上面有讲)。

    用SVM解决多分类问题存在困难。传统的SVM就是解决二分类问题的,上面有介绍不少解决多分类问题的SVM技巧,不过各种方法都一定程度上的缺陷。

    对缺失值敏感,核函数的选择与调参比较复杂。

    答:使用ROC曲线。Roc曲线下的面积,介于0.1和1之间。AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面。Auc作为数值可以直观的评价分类器的好坏,值越大越好,随机情况大概是0.5,所以一般不错的分类器AUC至少要大于0.5。

    选择ROC和ROC下曲线面积是因为分类问题经常会碰到正负样本不均衡的问题,此时准确率和召回率不能有效评价分类器的性能,而ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。

    答:大值特征会掩盖小值特征(内积计算)。高斯核会计算向量间的距离,也会产生同样的问题;多项式核会引起数值问题。影响求解的速度。数据规范化后,会丢失一些信息。预测的时候,也要进行规范化

    答:1)训练速度:线性核只需要调节惩罚因子一个参数,所以速度快;多项式核参数多,难调;径向基核函数还需要调节γ,需要计算e的幂,所以训练速度变慢。【调参一般使用交叉验证,所以速度会慢】

    2)训练结果:线性核的得到的权重w可以反映出特征的重要性,从而进行特征选择;多项式核的结果更加直观,解释性强;径向基核得到权重是无法解释的。

    3)适应的数据:线性核:样本数量远小于特征数量(n<<m)【此时不需要映射到高维】,或者样本数量与特征数量都很大【此时主要考虑训练速度】;径向基核:样本数量远大于特征数量(n>>m)

    答:如果σ选得很大的话,高次特征上的权重实际上衰减得非常快,使用泰勒展开就可以发现,当很大的时候,泰勒展开的高次项的系数会变小得很快,所以实际上相当于一个低维的子空间;

    如果σ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题,因为此时泰勒展开式中有效的项将变得非常多,甚至无穷多,那么就相当于映射到了一个无穷维的空间,任意数据都将变得线性可分。

    相同

    第一,LR和SVM都是分类算法。

    第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。

    第三,LR和SVM都是监督学习算法。

    第四,LR和SVM都是判别模型。

    第五,LR和SVM都有很好的数学理论支撑。

    不同

    第一,loss function不同。

    第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。

    第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

    第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。一个计算概率,一个计算距离!​

    第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,SVM的目标函数里居然自带正则项!!!再看一下上面提到过的SVM目标函数:

    我们再来看看,所谓out lier,是怎么产生的,无非有两种情况,一种就是这个样本的标签y搞错了,一种就是没搞错,但这个样本是一个个例,不具备统计特性。

    不论对于哪一种情况,svm会在f将这个out lier预测的比较正确时,就停止,不会一直优化对out lier的预测,因为没有什么太大意义了。而lr则不同,它会继续要求f对这个out lier的预测进行优化,并且永不停止,显然,这样的优化很可能会削弱f的泛化性能,因为没有必要死磕out lier 。

    答案就是SVM!!!

    以上就是关于svm自定义核函数相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    百度网盘白嫖svip(百度网盘白嫖超级会员)

    2022百度网盘svip一天激活码(百度云超级会员试用1天激活码)

    vis是啥牌子(visvim是什么牌子)

    宜昌餐饮品牌设计怎么做(宜昌餐饮品牌设计怎么做出来的)

    齐家柚子装修(齐家柚子装修效果图)