SVM训练后的模型参数中要保存支持向量?

svm模型学到的是什么?模型存储了哪些参数?为什么只需保存支持向量?高维映射和核方法?

高维映射显然可以提高模型的拟合能力,也就是准确度。理论上做完高维映射以后的LR,准确度应该是跟SVM会是一样的。
那我们为什么不把LR也高维映射一下呢?

别忘了,做高维映射是有代价的,计算高维映射的过程太费时间了。你可能会说,我们不是还有核方法吗?对啊,确实可以用核方法避开高维映射计算,那对应也是有代价的,我们得保存下来所有训练样本。保存所有训练样本对于样本过大的时候,LR几乎是不可接受的。SVM强就强在,它根本不需要保存所有训练样本,只要保存一小部分叫做支持向量的样本。

线性模型LR显然是一种参数化方法,好处是训练完成的模型只需要存储权重向量(W,b)。
而svm使用了核方法以后,由于我们用训练集替换掉了权重项,因此相当于转化成了非参数化的方法,显然增加了需要存储的数据量,同时每一次做预测都需要用到全部训练数据集。
本来用完核方法以后,我们得用到全部训练样本,来对一个新样本做做预测。但是由于SVM的特殊性,很多训练样本对预测不起作用,只需要一部分特殊的训练样本来做预测了。这部分特殊的训练样本就叫做支持向量

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 0.0769231 % 设置核函数中的 g  ,默认值为 1/ k

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

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

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

label 1 -1% 类别标签

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

SV % 以下为支持向量

1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1

0.5104832128985164 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5

1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771 9:-1 10:-0.16129 12:0.333333 13:-1

1 1:0.208333 2:1 3:0.333333 4:-0.660377 5:-0.525114 6:-1 7:1 8:0.435115 9:-1 10:-0.193548 12:-0.333333 13:1

对于超级超级超级大的数据集,用SVM肯定巨慢,因为这时候支持向量数量也肯定很多,复杂度肯定跟支持向量的数量有关。这时候显然只能用LR。它是一个参数化的方法,我们只需要保存两个向量参数 ω , b \omega, b ω,b,预测的复杂度甚至是 O \large{O} O,其中n代表数据的维度。

用训练集替换掉了权重项:

由于做高维映射的计算量比较大。当我们遇到需要做高维映射的时候 ϕ ( x ) \phi(x) ϕ(x) ,可以通过核方法,把需要学习的模型配出一项来组成 ϕ ( t ) T ϕ ( x ) \phi(t)^T\phi(x) ϕ(t)Tϕ(x) 的形式,然后用一个核函数 k ( t , x ) k(\bf{t,x}) k(t,x) 来替换它,从而消除掉把低维向量往高维映射的过程 ϕ ( x ) \phi(x) ϕ(x)。这种替换的技巧就叫做核方法,能够实现替换目的的函数叫做核函数。

高维映射以后的模型表达式: y = ω T ϕ ( x ) y=\bf{\omega}^T\phi(x) y=ωTϕ(x)
核函数的表达式可以写成: k ( t , x ) = ϕ ( t ) T ϕ ( x ) k(t,x)=\phi(t)^T\phi(x) k(t,x)=ϕ(t)Tϕ(x)
怎么利用核函数代替高维映射呢?
就是要想办法从 ω \omega ω里面分离出一个 ϕ ( t ) T \phi(t)^T ϕ(t)T项,来跟我们的 ϕ ( x ) \phi(x) ϕ(x)搭配在一起,组成核函数的表达式。如下图:
在这里插入图片描述

Ref:
高维映射 与 核方法(Kernel Methods)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值