【机器学习】嘿马机器学习(算法篇)第4篇:支持向量机,2.4 SVM的损失函数【附代码文档】

举报
程序员一诺python 发表于 2025/07/16 13:30:00 2025/07/16
【摘要】 机器学习(算法篇 2 ) 1.1 朴素贝叶斯算法简介 1.2 概率基础复习 学习目标 1.概率定义 2.案例:判断女神对你的喜欢情况 3.联合概率、条件概率与相互独立 4.贝叶斯公式 4.1 公式介绍 4.2 案例计算 4.3 文章分类计算 5 小结 1.3 案例:商品评论情感分析 1.api介绍 HMM模型 4.7 HMM模型API介绍 1 API的安装: 2 hmmlear

教程总体简介:机器学习(算法篇 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中,我们主要讨论三种损失函数:

![image_1b1vvangp18tc11dhis2q8h9k22a.png-67.4kB](

  • 绿色:0/1损失

  • 当正例的点落在y=0这个超平面的下边,说明是分类正确,无论距离超平面所远多近,误差都是0.

  • 当这个正例的样本点落在y=0的上方的时候,说明分类错误,无论距离多远多近,误差都为1.
  • 图像就是上图绿色线。

  • 蓝色:SVM Hinge损失函数

  • 当一个正例的点落在y=1的直线上,距离超平面长度1,那么1-ξ=1,ξ=0,也就是说误差为0;

  • 当它落在距离超平面0.5的地方,1-ξ=0.5,ξ=0.5,也就是说误差为0.5;
  • 当它落在y=0上的时候,距离为0,1-ξ=0,ξ=1,误差为1;
  • 当这个点落在了y=0的上方,被误分到了负例中,距离算出来应该是负的,比如-0.5,那么1-ξ=-0.5,ξ=-1.5.误差为1.5.
  • 以此类推,画在二维坐标上就是上图中蓝色那根线了。

  • 红色:Logistic损失函数

  • 损失函数的公式为:ln(1+e−yi)ln(1+e^{-y_i}) ln(1+e​−y​i​​​​)

  • yi=0y_i=0y​i​​=0
  • 这样到yi=0y_i=0y​i​​=0
  • 即上图中的红色线。

拓展学习:PPT讲义


小结

  • SVM的损失函数

  • 0/1损失函数

  • Hinge损失函数
  • Logistic损失函数

2.5 SVM的核方法

学习目标

  • 知道SVM的核方法
  • 了解常见的核函数

【SVM + 核函数】 具有极大威力。

核函数并不是SVM特有的,核函数可以和其他算法也进行结合,只是核函数与SVM结合的优势非常大。

1 什么是核函数

1.1 核函数概念

核函数,是将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。

![image-20200204154534315](

下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时该如何把这两类数据分开呢?

  • 假设X是输入空间,
  • H是特征空间,
  • 存在一个映射ϕ使得X中的点x能够计算得到H空间中的点h,
  • 对于所有的X中的点都成立:

![image-20190814000426859](

若x,z是X空间中的点,函数k(x,z)满足下述条件,那么都成立,则称k为核函数,而ϕ为映射函数:

![image-20190814000453473](

1.2 核函数举例

1.2.1 核方法举例1:

![image-20190814000704864](

![image-20200204151146946](

![image-20200204151231279](

![image-20190814000952741](


经过上面公式,具体变换过过程为:

  • x=(x1,x2,x3)=(1,2,3)x=(x_1, x_2, x_3)=(1,2,3)x=(x​1​​,x​2​​,x​3​​)=(1,2,3)
  • y=(y1,y2,y3)=(4,5,6)y=(y_1, y_2, y_3)=(4,5,6)y=(y​1​​,y​2​​,y​3​​)=(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)=(x​1​​x​1​​,x​1​​x​2​​,x​1​​x​3​​,x​2​​x​1​​,x​2​​x​2​​,x​2​​x​3​​,x​3​​x​1​​,x​3​​x​2​​,x​3​​x​3​​)
  • 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:

  • 下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字和下面的紫色的字母。
  • 我们把红色的门上的点看成是“+”数据,字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。
  • 显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

![image-20190814001147008](

![image-20190814001223208](

(前后轴为x轴,左右轴为y轴,上下轴为z轴)


  • 绿色的平面可以完美地分割红色和紫色,两类数据在三维空间中变成线性可分的了。
  • 三维中的这个判决边界,再映射回二维空间中:是一条双曲线,它不是线性的

  • 核函数的作用就是一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

![image-20190814001302313](

2 常见核函数

![image-20190814003133082](

1.多项核中,d=1时,退化为线性核;

2.高斯核亦称为RBF核。

  • 线性核和多项式核:
  • 这两种核的作用也是首先在属性空间中找到一些点,把这些点当做base,核函数的作用就是找与该点距离和角度满足某种关系的样本点。
  • 当样本点与该点的夹角近乎垂直时,两个样本的欧式长度必须非常长才能保证满足线性核函数大于0;而当样本点与base点的方向相同时,长度就不必很长;而当方向相反时,核函数值就是负的,被判为反类。即,它在空间上划分出一个梭形,按照梭形来进行正反类划分。

  • RBF核:

  • 高斯核函数就是在属性空间中找到一些点,这些点可以是也可以不是样本点,把这些点当做base,以这些base为圆心向外扩展,扩展半径即为带宽,即可划分数据。
  • 换句话说,在属性空间中找到一些超圆,用这些超圆来判定正反类。

  • Sigmoid核:

  • 同样地是定义一些base,

  • 核函数就是将线性核函数经过一个tanh函数进行处理,把值域限制在了-1到1上。

  • 总之,都是在定义距离,大于该距离,判为正,小于该距离,判为负。至于选择哪一种核函数,要根据具体的样本分布情况来确定。


  • 一般有如下指导规则:

  • 1) 如果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回归是让尽可能多的实例位于预测线上,同时限制间隔违例(也就是不在预测线距上的实例)。

线距的宽度由超参数ε控制。

![image-20190814003742055](

2.7 SVM算法api再介绍

学习目标

  • 知道SVM算法api中的SVC、NuSVC、LinearSVC

1 SVM算法api综述

  • SVM方法既可以用于分类(二/多分类),也可用于回归和异常值检测。

  • SVM具有良好的鲁棒性,对未知数据拥有很强的泛化能力,特别是在数据量较少的情况下,相较其他传统机器学习算法具有更优的性能。


使用SVM作为模型时,通常采用如下流程:

  1. 对样本数据进行归一化
  2. 应用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好)
  3. 用cross-validation和grid-search对超参数进行优选
  4. 用最优参数训练得到模型
  5. 测试

sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC,扩展为三个支持向量回归方法:SVR、NuSVR、LinearSVR。

  • SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同

  • NuSVC中的nu参数和SVC中的C参数;

  • LinearSVC是实现线性核函数的支持向量分类,没有kernel参数。

2 SVC

1
class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3,coef0=0.0,random_state=None)
  • 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

1
class sklearn.svm.NuSVC(nu=0.5)
  • nu: 训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认是0.5

4 LinearSVC

1
class sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, C=1.0)
  • 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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。