【机器学习】嘿马机器学习(算法篇)第4篇:支持向量机,2.4 SVM的损失函数【附代码文档】
教程总体简介:机器学习(算法篇 2 )、1.1 朴素贝叶斯算法简介、1.2 概率基础复习、1.3 案例、商品评论情感分析、HMM模型、4.7 HMM模型API介绍、集成学习进阶、5.1 xgboost算法原理、5.2 xgboost算法api介绍、5.3 xgboost案例介绍、5.4 otto案例介绍 -- Otto Group Product Classification Challenge【xgboost实现】、5.5 lightGBM、5.6 lightGBM算法api介绍、5.7 lightGBM案例介绍、5.8 《绝地求生》玩家排名预测、5.9 stacking算法基本思想、5.10 住房月租金预测、向量与矩阵的范数、朗格朗日乘子法、Huber Loss、极大似然函数取对数的原因、朴素贝叶斯、1.4 朴素贝叶斯算法总结、2.1 SVM算法简介、2.2 SVM算法api初步使用、支持向量机、2.3 SVM算法原理、2.4 SVM的损失函数、2.5 SVM的核方法、2.6 SVM回归、2.7 SVM算法api再介绍、2.8 案例、数字识别器、2.9 SVM总结、3.1 初识EM算法、3.2 EM算法介绍、EM算法、3.3 EM算法实例、4.1 马尔科夫链、4.2 HMM简介、4.3 HMM模型基础、4.4 前向后向算法评估观察序列概率、4.5 维特比算法解码隐藏状态序列、4.6 鲍姆-韦尔奇算法简介、1.1 K-近邻算法简介、1.2 k近邻算法api初步使用、K-近邻算法、1.3 距离度量、逻辑回归、3.5 ROC曲线的绘制、4.1 决策树算法简介、决策树算法
https://bbs.huaweicloud.com/blogs/453457
https://bbs.huaweicloud.com/blogs/453509
全套教程部分目录:
支持向量机
学习目标
- 了解什么是SVM算法
- 掌握SVM算法的原理
- 知道SVM算法的损失函数
- 知道SVM算法的核函数
- 了解SVM算法在回归问题中的使用
- 应用SVM算法实现手写数字识别器
2.4 SVM的损失函数
学习目标
- 了解SVM的损失函数
- 知道SVM中的Hinge损失函数
在SVM中,我们主要讨论三种损失函数:
ln(1+e^{-y_i}) ln(1+e−yi)
- 当yi=0y_i=0yi=0
- 这样到yi=0y_i=0yi=0
- 即上图中的红色线。
拓展学习:PPT讲义
小结
-
SVM的损失函数
-
0/1损失函数
- Hinge损失函数
- Logistic损失函数
2.5 SVM的核方法
学习目标
- 知道SVM的核方法
- 了解常见的核函数
【SVM + 核函数】 具有极大威力。
核函数并不是SVM特有的,核函数可以和其他算法也进行结合,只是核函数与SVM结合的优势非常大。
1 什么是核函数
1.1 核函数概念
核函数,是将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。
满足下述条件,那么都成立,则称k为核函数,而ϕ为映射函数:
=(1,2,3)x=(x_1, x_2, x_3)=(1,2,3)x=(x1,x2,x3)=(1,2,3)
- y=(y1,y2,y3)=(4,5,6)y=(y_1, y_2, y_3)=(4,5,6)y=(y1,y2,y3)=(4,5,6)
- f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)f(x)=(x_1x_1,x_1x_2,x_1x_3,x_2x_1,x_2x_2,x_2x_3,x_3x_1,x_3x_2,x_3x_3)f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)
- f(x)=(1,2,3,2,4,6,3,6,9)f(x)=(1,2,3,2,4,6,3,6,9)f(x)=(1,2,3,2,4,6,3,6,9)
- f(y)=(16,20,24,20,25,36,24,30,36)f(y)=(16,20,24,20,25,36,24,30,36)f(y)=(16,20,24,20,25,36,24,30,36)
- 无法显示
- 无法显示
1.2.2 核方法举例2:
- 下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字和下面的紫色的字母。
- 我们把红色的门上的点看成是“+”数据,字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。
- 显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

- 绿色的平面可以完美地分割红色和紫色,两类数据在三维空间中变成线性可分的了。
-
三维中的这个判决边界,再映射回二维空间中:是一条双曲线,它不是线性的。
-
核函数的作用就是一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。
 如果Feature的数量很大,甚至和样本数量差不多时,往往线性可分,这时选用LR或者线性核Linear;
- 2) 如果Feature的数量很小,样本数量正常,不算多也不算少,这时选用RBF核;
- 3) 如果Feature的数量很小,而样本的数量很大,这时手动添加一些Feature,使得线性可分,然后选用LR或者线性核Linear;
- 4) 多项式核一般很少使用,效率不高,结果也不优于RBF;
- 5) Linear核参数少,速度快;RBF核参数多,分类结果非常依赖于参数,需要交叉验证或网格搜索最佳参数,比较耗时;
- 6)应用最广的应该就是RBF核,无论是小样本还是大样本,高维还是低维等情况,RBF核函数均适用。
3 小结
-
SVM的核方法
-
将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。
-
常见核函数
-
线性核
- 多项式核
- RBF核
- Sigmoid核
2.6 SVM回归
学习目标
- 了解SVM回归的实现原理
SVM回归是让尽可能多的实例位于预测线上,同时限制间隔违例(也就是不在预测线距上的实例)。
线距的宽度由超参数ε控制。
,也可用于回归和异常值检测。
-
SVM具有良好的鲁棒性,对未知数据拥有很强的泛化能力,特别是在数据量较少的情况下,相较其他传统机器学习算法具有更优的性能。
使用SVM作为模型时,通常采用如下流程:
- 对样本数据进行归一化
- 应用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好)
- 用cross-validation和grid-search对超参数进行优选
- 用最优参数训练得到模型
- 测试
sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC,扩展为三个支持向量回归方法:SVR、NuSVR、LinearSVR。
-
SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同
-
NuSVC中的nu参数和SVC中的C参数;
-
LinearSVC是实现线性核函数的支持向量分类,没有kernel参数。
2 SVC
|
|
-
C: 惩罚系数,用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数。
-
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样会出现训练集测试时准确率很高,但泛化能力弱,容易导致过拟合。
-
C值小,对误分类的惩罚减小,容错能力增强,泛化能力较强,但也可能欠拟合。
-
kernel: 算法中采用的核函数类型,核函数是用来将非线性问题转化为线性问题的一种方法。
-
参数选择有RBF, Linear, Poly, Sigmoid或者自定义一个核函数。
- 默认的是"RBF",即径向基核,也就是高斯核函数;
- 而Linear指的是线性核函数,
- Poly指的是多项式核,
- Sigmoid指的是双曲正切函数tanh核;。
-
degree:
- 当指定kernel为'poly'时,表示选择的多项式的最高次数,默认为三次多项式;
-
若指定kernel不是'poly',则忽略,即该参数只对'poly'有用。
- 多项式核函数是将低维的输入空间映射到高维的特征空间。
-
coef0: 核函数常数值(y=kx+b中的b值),
-
只有‘poly’和‘sigmoid’核函数有,默认值是0。
3 NuSVC
|
|
- nu: 训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认是0.5
4 LinearSVC
|
|
-
penalty:正则化参数,
-
L1和L2两种参数可选,仅LinearSVC有。
-
loss:损失函数,
-
有hinge和squared_hinge两种可选,前者又称L1损失,后者称为L2损失,默认是squared_hinge,
-
其中hinge是SVM的标准损失,squared_hinge是hinge的平方
-
dual:是否转化为对偶问题求解,默认是True。
-
C:惩罚系数,
-
用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数。
3 小结
-
SVM的核方法
-
将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。
-
SVM算法api
-
sklearn.svm.SVC
- sklearn.svm.NuSVC
- sklearn.svm.LinearSVC
- 点赞
- 收藏
- 关注作者
评论(0)