文章目录

  • 1、知道SVM相关的各种概念
  • 2、知道目标函数、损失函数、正则项的意义
    • 2.1、目标函数
    • 2.2、损失函数
    • 2.3、正则化(添加噪音避免过拟合)
  • 3、了解SVM算法原理
  • 4、知道SVM的目标函数
  • 5、知道SVM的损失函数以及公式
  • 6、知道SVM支持向量机的计算过程
    • 6.1、推导过程:
    • 6.2、推导实例
  • 7、了解核函数相关知识
  • 8、了解SVM算法的调参技巧

1、知道SVM相关的各种概念

线性可分:一条直线可以分割开两种类别
间隔:分割线两边直线之间的间隔
支持向量:分割线两边直线上的点
非线性支持向量机:在高维空间形成分割超平面映射到低维空间形成分割界限。

分割超平面:两个集合上的距离最近的两个点的垂直平分面。

2、知道目标函数、损失函数、正则项的意义

弄清楚目标函数、损失函数、正则项这几个概念:

2.1、目标函数

目标函数:指所关心的目标与相关的因素的函数关系。举个例子,假如我们想要预测公司楼下手抓饼店明天能卖多少张手抓饼,已知过去10天每天卖多少,以及每天的天气情况,是否有节假日,和手抓饼店老板和老板娘的感情状况,这几项数据都统计好了。对应到目标函数的解释就是:
关心的目标是明天能卖多少手抓饼,未知量。
相关因素是每天数量,天气情况,节假日,老板老板娘感情状况,已知量。
目标函数:按照一定的思路把这些已知条件利用起来,去求解未知量的函数关系式。
目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。(简单的说就是函数表达式)是指所关心的目标(某一变量)与相关的因素(某些变量)的函数关系。

2.2、损失函数

也叫代价函数,是同一个东西。是用来评估模型的预测值f(x)与真实值Y的差距,它是一个非负实值函数。稍等一下,为什么是非负的呢?举个例子:比如上面说的手抓饼,模型预测第一天是30,真实值是29,差距30-29是1;预测第二天是35,真实值是36,差距35-36是-1;如果把它们直接加起来就是1-1 = 0,难到没有差距?非常明显是错误的,差距是0人家还以为都预测对了呢,其实都预测错了,所以不能有负值,可以用绝对值,平方或者一些其它的数学运算。
常用的损失函数有:
LR逻辑回归:log对数损失函数 参考
最小二乘法:平方损失函数 参考:
Adaboost:指数损失函数 (后面会专门介绍这个算法)
好的,现在我们再来看一下目标函数通常的定义形式:
Obj(Θ)=L(Θ)+Ω(Θ)

中文翻译一下是 :
目标函数 = 损失函数 + 正则项

目标函数和损失函数我们都理解了,那么正则项是干什么的呢?

2.3、正则化(添加噪音避免过拟合)

回到我们前面举的那个例子,如果第五天有个人中彩票了然后兴奋的来买了1百张手抓饼,比几天的量都多,很明显这个情况会影响我们的模型训练,这个情况就是过拟合。而加入正则项的目的就是使模型避免过拟合。
常用的有L1,L2正则化,很熟悉对不对,前面讲过的线性代数中的L1,L2范数有些类似。其实本质是一样的,在机器学习里叫正则化,线性代数叫范数,统计学里叫惩罚项。
机器学习里:L1使用的是绝对值距离,也叫曼哈顿距离,L2使用的是平方距离,也叫做欧式(Euclidean)距离
线性代数:L1 范数计算的是向量所有元素绝对值的和,L2 范数计算的是通常意义上的向量长度

目标函数,损失函数和正则项的作用,优化损失函数使模型避免欠拟合使损失函数最小化,优化正则项使模型避免过拟合。

3、了解SVM算法原理

即先求每个点到每条直线的最小值,这样每条直线对应一个最小距离值,再从这组距离值中找出最大值,这个最大值对应的直线也就是我们需要的分割超平面。

w为对应系数矩阵(A,B),Φ(x)代表的是变量矩阵(x,y)
y(xi)=0:代表点在平面上。>0:代表点在平面的上方。
y(xi)>0:代表的是在分隔超平面的一侧,yi=1;

4、知道SVM的目标函数

知道目标函数(分割超平面)的表达式以及对应的含义:某点到某分隔超平面的距离(需要找到最优的分隔超平面:即先找到每个点到每条直线的最小距离,之后得到每条直线对应的最小距离组成一个数组,再找出这组数中的最大值,对应的分隔超平面即为所求的最优分隔超平面(所以求目标函数的过程才是一个先求最小值而后求最大值的步骤,知道最小和最大代表的含义))

5、知道SVM的损失函数以及公式

SVM:分对了损失值为0,分错了损失值为距离支持向量所在的直线的距离。

6、知道SVM支持向量机的计算过程

  1. 先求出点到直线距离的一般表示形式。
  2. 由于是求所有点到直线的距离所以需要除以一个w来做归一化处理。
  3. 由于一系列的约束条件,转化为了用拉格朗日乘子法优化的问题(求极值的问题)
  4. 利用拉格朗日的一些性质来转化,最终得到一个最简的式子。
  5. 之后将对应的点代入这个式子就能求出一般表达式中对应的一个参数,进而得到整个式子。

6.1、推导过程:

通过缩放w,b(即||w||)总是可以使得yiy(xi)>=1得到满足。即此处多了一个限制条件,根据这个限制条件来进一步转化目标函数。

由约束条件yi
y(xi)>=1,得到原目标函数可以转化为新目标函数

线性可分SVM的目标函数

将目标函数转化为拉格朗日乘子法来求。
一般问题的优化的解法(即求极值的问题):拉格朗日乘子法
拉格朗日乘子法是一种经典的求解条件极值的解析方法,可将所有约束的优化模型问题转化为无约束极值问题的求解。


求极大极小问题,先求极小值即先对w,b求导数。

得到上面两个条件后代入拉格朗日函数得到下面的式子

由前面得到得条件接着求解

原函数求的是极小极大值而拉格朗日对偶函数求的是极大极小值(参考上图),所以需要先求该式子的最小值,这里通过添加负号做出对应的转换。

求的最小值对应的α值

根据α值得到下面的值

6.2、推导实例


注意计算这个最小值的过程(求一个一元二次方程的最小值的过程)

注意这个结论

7、了解核函数相关知识

核函数思想:将不可分的输入数据映射到核函数空间中来进行分割。

知道核函数为什么被使用:减小运算的复杂度。
知道这几个核函数:多项核函数、高斯核函数RBF、Sigmoid核函数。
知道为什么需要核函数:将原始输入空间映射到新的特征空间从而使得原本线性不可分的样本在核空间中可分。

8、了解SVM算法的调参技巧

知道调参中常用的参数以及对应的参数的含义。
详情参考:https://blog.csdn.net/qq_16633405/article/details/70243030

机器学习之支持向量机(SVM)总结相关推荐

  1. 机器学习实战 支持向量机SVM 代码解析

    机器学习实战 支持向量机SVM 代码解析 <机器学习实战>用代码实现了算法,理解源代码更有助于我们掌握算法,但是比较适合有一定基础的小伙伴.svm这章代码看起来风轻云淡,实则对于新手来说有 ...

  2. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

  3. 优达学城机器学习之--支持向量机(SVM)

    前言 SVM是支持向量机的简称(Support Vector Machine) 文章目录如下: 简述 选择分隔线 核函数(kernel)及其参数c, gamma 过拟合 over-fitting SV ...

  4. OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  5. 机器学习:支持向量机SVM的SVC和SVR

    支持向量机SVM SVM的工作原理及分类 支持向量机的原理 线性可分的SVM 非线性可分的支持向量机 支持向量机分类SVC 支持向量机回归SVR SVR原理 SVR模型 时间序列曲线预测 SVM的工作 ...

  6. 【机器学习】支持向量机(SVM)代码练习

    本课程是中国大学慕课<机器学习>的"支持向量机"章节的课后代码. 课程地址: https://www.icourse163.org/course/WZU-1464096 ...

  7. [机器学习-实践]支持向量机(SVM)从例子代码中学习

    [机器学习-原理篇]支持向量机(SVM)深入理解 1.用SVM的linear做鸢尾花分类 利用sklearn中自带的dataset,鸢尾花数据库为例,进行二分类. #载入鸢尾花数据集,datasets ...

  8. 机器学习:支持向量机SVM和人工神经网络ANN的比较

    在统计学习理论中发展起来的支持向量机(Support Vector Machines, SVM)方法是一种新的通用学习方法,表现出理论和实践上的优势.SVM在非线性分类.函数逼近.模式识别等应用中有非 ...

  9. 入门机器学习(十三)--支持向量机(SVM)

    1. 优化目标(Optimization Objective) 目前来说,我们已经学过了单变量与多变量的线性回归,逻辑回归以及神经网络等机器学习算法,他们在各自的领域都发挥着巨大的作用.但是还有一个算 ...

  10. 吴恩达机器学习7——支持向量机SVM

    吴恩达机器学习7 一.SVM直观理解 1. SVM引入逻辑回归 2. 大边界分类器SVM 3. SVM原理 二.核函数 1. 核函数原理和概念 2. SVM和核函数结合的计算步骤 三.使用SVM 一. ...

最新文章

  1. 九、股票收盘价与滑动平均线MA
  2. linux mysql依赖关系_[Linux]-MySQL主从复制
  3. 【PHP高级特性】之反射
  4. 图解分布式架构的演进过程!
  5. MooTools教程(3):数组管理DOM元素
  6. spring bean
  7. GD2拖动验证码Thinkphp版
  8. 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
  9. [IIS网站问题]设置防火墙协议及端口等问题
  10. html缓存失败是什么,HTML5离线“应用程序缓存错误事件:清单读取失败(-1)”...
  11. 子类可以重新定义父类的同名方法,并且允许他们有不同的返回值类型吗?
  12. 创建个人网站(一) 如何申请一个网站
  13. java博饼_java博饼游戏( 完善中。。。。。。。。。。。)
  14. 天池大赛-心跳信号分类预测:探索性数据分析
  15. 第十七章 OAuth2集成——《跟我学Shiro》
  16. Python数据分析实战【十二】:机器学习决策树算法案例实战【文末源码地址】
  17. 【观察】亚马逊云科技发布中国战略背后,是“在中国”到“懂中国”的蜕变...
  18. 微信小程序与后台交互案例
  19. matlab怎么把mat文件转化为excel
  20. oracle中的references,Oracle 中的references权限

热门文章

  1. GCC 命令选项使用详解
  2. 解决:-bash: unzip: command not found (Linux 中 unZip/Zip 的安装及使用)
  3. LeetCode刷题第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...
  4. linkit-smart-7688-feed 安装笔录
  5. 用JSmooth制作java jar文件的可运行exe文件教程【图文】
  6. 一个典型的参数型跨站脚本漏洞
  7. 用友财务软件主要数据表字段含义
  8. 网络编程项目(聊天室项目)
  9. HttpServletRequest中获取IP值
  10. 特斯拉股价暴跌,疯狂烧钱是否真的能够带来高额回报?