当前位置:网站首页>23.支持向量机的使用
23.支持向量机的使用
2022-08-02 14:36:00 【WuJiaYFN】
主要内容
- 运行使用支持向量机SVM需要做的步骤
- 选择SVM或逻辑回归的基本准则
- SVM 与神经网络对比
- 其他核函数 kernel
一、运行使用支持向量机SVM需要做的步骤
1.1、参数 θ θ θ 的求解——建议直接使用高优化软件库
- 一般情况下我们需要自己写软件来求解参数,但是不建议自己写核函数,建议直接使用现有的软件包(如 liblinear,libsvm 等)(关于liblinear\libsvm 的介绍可以参考我的另一个文章) 来最小化 SVM 代价函数
- 强烈建议使用高优化软件库中的一个,而不是尝试自己实现
1.2 参数设置
- 尽管有现成的库,但是我们也需要做几件事:
- 1、参数C的选择
- 2、选择内核参数或你想要使用的相似函数 (注:如果选择不需要任何内核参数,还称为使用了线性核函数 SVM)
1.3、SVM的两种选择
SVM的选择之一:是选择不带任何内核参数,也叫线性核函数(linear kernel), h θ ( x ) = g ( θ 0 x 0 + θ 1 x 1 + … + θ n x n ) , p r e d i c t y = 1 i f θ T x > = 0 h_θ(x)=g(θ_0x_0+θ_1x_1+…+θ_nx_n),predict y=1 if θ^Tx>=0 hθ(x)=g(θ0x0+θ1x1+…+θnxn),predicty=1ifθTx>=0
- 如果有人说他使用了线性核的SVM(支持向量机),这就意味这他使用了不带有核函数的SVM(支持向量机)。
SVM的选择之二:使用kernel f(比如高斯核函数Gaussian Kernel), h θ ( x ) = g ( θ 0 f 0 + θ 1 f 1 + … + θ n f n ) h_θ(x)=g(θ_0f_0+θ_1f_1+…+θ_nf_n) hθ(x)=g(θ0f0+θ1f1+…+θnfn),这里需要选择方差参数σ2
注意:如果使用高斯核函数,需要进行特征缩放
二、选择SVM或逻辑回归的基本准则
n n n为特征数, m m m为训练样本数
(1) 如果相较于 m m m而言, n n n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机
(2) 如果** n n n较小,而且 m m m大小中等**,例如 n n n在 1-1000 之间,而 m m m在10-10000之间,使用高斯核函数的支持向量机
(3)如果** n n n较小,而 m m m较大**,例如 n n n在1-1000之间,而 m m m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机
注意:
如果训练集非常大,高斯核函数的SVM 会非常慢。 通常Andrew会尝试手动创建特征,然后用逻辑回归或者不带核函数的 SVM
(注: 逻辑回归和不带核函数的SVM 非常相似。但是根据实际情况,其中一个可能会更有效。随着 SVM 的复杂度增加、特征数量相当大时,不带核函数的SVM 就会表现得相当突出。)
三、SVM 与神经网络对比
- 神经网络 在第二点上面的三种情况下都可能会有较好的表现 ,但是训练神经网络可能非常慢,
- 选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值
- SVM是一种凸优化,不用担心局部最优;好的SVM优化软件包总是会找到全局最小值,或者接近它的值
- SVM比神经网络快,它是一种体系,一个有效的方法去学习复杂的非线性函数
四、其他核函数 kernel
在高斯核函数之外,还有其他一些选择,如:
- 多项式核函数(Polynomial Kernel),
- 字符串核函数(String kernel),
- 卡方核函数( chi-square kernel) ,
- 直方图交集核函数(histogram intersection kernel)
它们的目标也都是根据训练集和地标之间的距离来构建新特征。
一个核函数需要满足 Mercer’s 定理,才能被 SVM 的优化软件正确处理
Mercer’s 定理: 任何半正定的函数都可以作为核函数。
所谓半正定的函数 f ( x i , x j ) f(x_i,x_j) f(xi,xj):是指拥有训练数据集合 ( x 1 , x 2 , . . . x n ) (x_1,x_2,...x_n) (x1,x2,...xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) aij = f(x_i,x_j) aij=f(xi,xj),这个矩阵式nn的,如果这个矩阵是半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定的函数。
.xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) aij = f(x_i,x_j) aij=f(xi,xj),这个矩阵式nn的,如果这个矩阵是半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定的函数。Mercer定理是核函数的充分条件,只要函数满足Mercer定理的条件,那么这个函数就是核函数。
边栏推荐
猜你喜欢
随机推荐
PAT甲级 1145 哈希 - 平均查找时间
马甲包接入过程记录
【知乎高赞】为什么很多资质平庸的女人嫁得很好,很多优质女性却成了剩女?
延时函数-定时器
A status code, and access baidu process
Application software code signing certificate
PAT tree DP (memory search) class a, 1079, 1090, 1106
数据库三范式
为什么四个字节的float表示的范围比八个字节的long表示的范围要广
如何正确且快速的清楚C盘!!释放C盘空间内存保姆级教程
第四章-4.1-最大子数组问题
XGBoost 和随机森林在表格数据上优于深度学习?
祝蔡徐坤生日快乐!
mysql 递归函数with recursive的用法
2022-07-10 第五小组 瞒春 学习笔记
PAT甲级 1130 中缀表达式
2022-07-13 第五小组 瞒春 学习笔记
【无标题】
遍历堆 PAT甲级 1155 堆路径
BOM(Browser Object Model)浏览器对象模型相关概念