svm support 和C1E support在bios里是什么意思啊

svm support 和C1E support在bios里是什么意思啊,第1张

svm 是 Secure Virutal Machine 直译就是 安全虚拟机 估计和虚拟系统有关

C1E 增强型空闲电源管理状态转换(Enhanced Halt State 简称C1E) 就是深度节能 需要CPU驱动支持

自己在hsi_svm3dpy中实现过scikit-learn svm库用于高光谱图像分类任务

参数小结1

C:C-SVC的惩罚参数C默认值是10

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

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)

degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

probability :是否采用概率估计?默认为False

shrinking :是否采用shrinking heuristic方法,默认为true

tol :停止训练的误差值大小,默认为1e-3

cache_size :核函数cache缓存大小,默认为200

class_weight :类别的权重,字典形式传递。设置第几类的参数C为weightC(C-SVC中的C)

verbose :允许冗余输出?

max_iter :最大迭代次数。-1为无限制。

decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3

random_state :数据洗牌时的种子值,int值

主要调节的参数有:C、kernel、degree、gamma、coef0。

参数小结2

参数选择:

1、使用sklearn 中的gridsearchcv方法,通过列出参数空间,让程序自己去遍历每一种超参数组合,找到最优的一组。

在svm中使用过,确实不错,但其对于无法满足的超参数(比如Nusvm中的nu)没有解决方案,会直接崩。

参见笔记 网格追踪寻找最优超参数组合Parameter estimation using grid search with cross-validation

2、注意类别不平衡的情况下使用 class_weight='balanced'

使用技巧:

1、数据预处理和一些函数的详细说明在 API 参考手册 >

你好,LIBSVM简介 [v5o#Vd

sH:Luo+]

支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些软件大部分的免费下载地址和简单介绍都可以在[url]

>

损失函数具体形式多种多样,先介绍 SVM 损失函数,SVM 的损失函数想要 SVM 在正确分类上的得分始终比不正确分类上的得分高出一个边界值,定义如下:

yi 代表的是正确类别的标签。举例说明:假设有3个分类,得到score=[13,-7,11],真实标签是yi=0,所以:

SVM的损失函数想要正确分类类别 yi 的分数比不正确类别分数高,而且至少要高10。如果不满足这点,就开始计算损失值。关于0的阈值:max(0,-)函数,被称为折叶损失(hinge loss)。

如果不使用正则化,那么上面的损失函数就会有问题:假设有一个数据集和一个权重集 W 能够正确地分类每个数据(即所有的边界都满足,对于所有的i都有 Li=0)。问题在于 W 并不唯一:可能有很多相似的W都能正确地分类所有的数据。

例子:如果 W 能够正确分类所有数据,即对于每个数据,损失值都是0。那么当 r > 1 时,任何数乘 rW 都能使得损失值为 0,因为这个变化将所有分值的大小都均等地扩大了,所以它们之间的绝对差值也扩大了。举个例子,如果一个正确分类的分值和举例它最近的错误分类的分值的差距是15,对 W 乘以2将使得差距变成30。但是整体的损失值还是为0,这就导致 W 不唯一。

所以,通过向特定的权重 W 添加一些偏好,对其他的不添加,以此来消除模糊性。方法是向损失函数增加一个 正则化惩罚 ,最常用的正则化惩罚是 L2 范式,L2 范式通过对所有参数进行逐元素的平方惩罚来抑制大数值的权重,L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。:

上面的表达式中,将 W 中所有元素平方后求和。注意正则化函数不是数据的函数,仅基于权重。完整的目标函数如下:

将其展开完整公式是:

其中,N 是训练集的数据量,下图是引入正则化带来的良好的性质:

需要注意的是,和权重不同,偏差没有这样的效果,因为它们并不控制输入维度上的影响强度。因此通常只对权重 W 正则化,而不正则化偏差 b。

交叉熵是用来判定实际的输出与期望的输出的接近程度。交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。假设概率分布 p 为期望输出(标签),概率分布 q 为实际输出,H(p,q) 为交叉熵。

第一种交叉熵函数的形式为:

下图举例说明:

第二种交叉熵损失函数形式:

这种形式主要是针对于二分类的情况,二分类模型最后通常会通过 Sigmoid 函数输出一个概率值。这里只是将两种情况(标签为0和1的时候)整合在一起。但是这里注意的是,上面公式是通过极大似然估计来推导得出,在机器学习里面,基本上是把极大似然估计跟交叉熵联系在一起的同一概念。下图是极大似然估计推导过程:

再来看一下 softmax 的损失函数:

以多分类来看,交叉熵损失函数为:

对于比较常见的 one-hot 编码来看,yi 只有一个元素值为1,其他的都是0,所以 Softmax 的损失函数求和号去掉,就转换为最开始的形式。

下图有助于区分这 Softmax和SVM这两种分类器:

注意点:

1 斯坦福CS231n assignment1:softmax损失函数求导

2 CS231n课程笔记翻译:线性分类笔记

3 深度学习中softmax交叉熵损失函数的理解

3天

svm模型训练后的参数说明

现简单对屏幕回显信息进⾏说明:

#iter 为迭代次数,

nu 与前⾯的 *** 作参数 -n nu 相同,

obj 为 SVM ⽂件转换为的⼆次规划求解得到的最⼩值,

rho 为判决函数的常数项 b ,

nSV 为⽀持向量个数,

nBSV 为边界上的⽀持向量个数,

Total nSV 为⽀持向量总个数。

训练后的模型保存为⽂件 model ,⽤记事本打开其内容如下:

svm_type c_svc % 训练所采⽤的 svm 类型,此处为 C- SVC

kernel_type rbf % 训练采⽤的核函数类型,此处为 RBF 核

gamma 00769231 % 设置核函数中的 g ,默认值为 1/ k

nr_class 2 % 分类时的类别数,此处为两分类问题

total_sv 132 % 总共的⽀持向量个数

rho 0424462 % 决策函数中的常数项 b

label 1 -1% 类别标签

@微生豪资料集合分享

nr_sv 64 68 % 各类别标签对应的⽀持向量个数

SV % 以下为⽀持向量

1 1:0166667 2:1 3:-0333333 4:-043396

2 5:-0383562 6:-1 7:-1 8:0068702

3 9:-1 10:-0903226 11:-1 12:-1 13:1

05104832128985164 1:0125 2:1 3:0333333 4:-0320755 5:-0406393 6:1 7:1 8:00839695 9:1 10:-0806452 12:-0333333 13:05

1 1:0333333 2:1 3:-1 4:-0245283 5:-0506849 6:-1 7:-1 8:0129771 9:-1 10:-016129 12:0333333 13:-1

1 1:0208333 2:1 3:0333333 4:-0660377 5:-0525114 6:-1 7:1 8:0435115 9:-1 10:-0193548 12:-0333333 13:1

4 )采⽤交叉验证选择最佳参数 C 与 g

通常⽽⾔,⽐较重要的参数是 gamma (-g) 跟 cost (-c) 。⽽ cross validation (-v)

的参数常⽤ 5 。那么如何去选取最优的参数 c 和 g 呢? libsvm 的 python ⼦⽬录下⾯的 gridpy 可以帮助我们。 此时。其中安

装 python25 需要(⼀般默认安装到 c:/python25

下),将 gnuplot 解压。安装解压完毕后,进⼊ /libsvm/tools ⽬录下,⽤⽂本编辑器(记事

本, edit 都可以)修改 gridpy ⽂件,找到其中关于 gnuplot 路径的那项(其默认路径为

gnuplot_exe=r"c:/tmp/gnuplot/bin/pgnuplotexe" ),根据实际路径进⾏修改,并保存。然

后,将 gridpy 和 C:/Python25 ⽬录下的 pythonexe ⽂件拷贝到 libsvm/windows ⽬录下,键⼊以下命令: $ python gridpy

train1scale 执⾏后,即可得到最优参数 c 和 g 。

另外,⾄于下 libsvm 和 python 的接⼝的问题,在 libsvm286 中林⽼师已经帮助我们解决,在/libsvm/windows/python ⽬录下⾃带了 svmcpyd 这个⽂件,将该⽂件⽂件复制到

@微生豪资料集合分享

libsvm/python ⽬录下,同时,也将 pythonexe ⽂件复制到该⽬录下,键⼊以下命令以检验效

果(注意: Py ⽂件中关于 gnuplot 路径的那项路径⼀定要根据实际路径修改):

python svm_testpy

如果能看到程序执⾏结果,说明 libsvm 和 python 之间的接⼝已经配置完成,以后就可以直接在python 程序⾥调⽤ libsvm 的函数了!

5 ) 采⽤最佳参数 C 与 g 对整个训练集进⾏训练获取⽀持向量机模型

$ svmtrain –c x –g x –v x training_set_file [model_file]

x 为上述得到的最优参数 c 和 g 的值, v 的值⼀般取 5 。

6 )利⽤获取的模型进⾏测试与预测

使⽤ Svmtrain 训练好的模型进⾏测试。输⼊新的 X 值,给出 SVM 预测出的 Y 值

$ Svmpredict test_file model_file output_file

如: /svm-predict heart_scale heart_scalemodel heart_scaleout

Accuracy = 866667% (234/270) (classification)

这⾥显⽰的是结果

⼀个具体使⽤的例⼦。

以 libsvm 中的 heart_scale 作为训练数据和测试数据,同时已经将 python 安装⾄ c 盘,并将gridpy ⽂件中关于 gnuplot 路径的默认值修改为实际解压缩后的路径,将

heart_scale 、 gridpy 和 pythonexe 拷贝⾄ /libsvm/windows ⽂件夹下。

/svm-train heart_scale

optimization finished, #iter = 162

nu = 0431029

obj = -100877288, rho = 0424462

nSV = 132, nBSV = 107

Total nSV = 132

此时,已经得到 heart_scalemodel ,进⾏预测:

/svm-predict heart_scale heart_scalemodel heart_scaleout

Accuracy = 866667% (234/270) (classification)

正确率为 Accuracy = 866667% 。

/python gridpy heart_scale

得到最优参数 c=2048 , g=00001220703125

/svm-train -c 2048 -g 00001220703125 heart_scale 得到 model 后,由 /svm-predict heart_scale heart_scalemodel

heart_scaleout 得到的正确

率为 Accuracy = 851852%这块还有点迷惑?为什么正确率降低了?

当然也可以结合subsetpy 和 easypy 实现⾃动化过程。

@微生豪资料集合分享

如果要训练多次,可以写个批处理程序省好多事。

这⾥举个例⼦:

::@ echo off

cls

:: split the data and output the results

for /L %%i in (1,1,1000) do python subsetpy b59txt 546 b59(%%i)in8 b59(%%i)out2

for /L %%i in (1,1,1000) do python easypy b59(%%i)in8 b59(%%i)out2 >> result89txt

这段批处理代码⾸先调⽤subsetpy对⽂件b59txt执⾏1000次分层随机抽样(对数据进⾏80-20%分割)然后调⽤easypy 进⾏1000次参数寻优,把记录结果写到result89txt中

(包括1000次训练的分类准确率和参数对)。

还可以调⽤fselectpy进⾏特征选择,调⽤plotrocpy进⾏roc曲线绘制。

先写到这⾥吧,希望能和⼤家⼀起学习libsvm,进⼀步学好svm。

打开APP获取全文

已精选svm模型训练后会员文档796篇

MATLAB中SVM(支持向量机)的用法

31人阅读

OpencvSVM支持向量机参数与优化:

8人阅读

SVM参数设置及各种参数意义

32人阅读

sklearnsvm调参_SVM调优详解·7125messi的博客

以上就是关于svm support 和C1E support在bios里是什么意思啊全部的内容,包括:svm support 和C1E support在bios里是什么意思啊、scikit-learn svm库使用小结、svm的输入和输出问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9828352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存