机器学习之支持向量机(SVM)总结

文章目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习之聚类算法的原理推导及相关知识总结

文章目录1、知道几个关于"差"的概念2、理解相似度度量的各种方法和相互关系2.1、欧氏距离2.2、jaccard相似系数2.3、余弦相似度2.4、Pearson相似系数2.5、相对熵3、掌握掌握K-Means算法3.1、知道聚类的思想3.2、K-Means算法原理3.3、知道K-Mediods聚类3.4、如何选取K…

机器学习之EM算法的原理推导及相关知识总结

文章目录1、知道先验概率和后验概率2、了解高斯混合模型GMM3、通过最大似然估计推导EM算法的过程的实例4、EM算法5、知道pLSA模型1、知道先验概率和后验概率 先验概率(prior probability)是指根据以往经验和分析得到的概率(理解为自定义概率…

机器学习之朴素贝叶斯算法的推理及相关知识总结

文章目录1、朴素贝叶斯公式1.1、贝叶斯公式的应用2、了解贝叶斯网络2.1、知道什么是贝叶斯网络2.2、贝叶斯网络的两种表示形式2.3、掌握全连接的贝叶斯网络的公式2.3、知道条件概率表参数个数分析的方法2.4、掌握变量联合分布概率的公式及含义2.5、知道马尔科夫模型3、了解D-se…

HA机制的大数据集群的搭建过程

文章目录集群规划1、 准备Linux环境1.1、修改Linux主机名1.3、修改主机名和IP的映射关系1.4、关闭防火墙1.5、ssh免登陆(主节点和从节点之间)2、 安装JDK2.1、上传2.2、解压jdk2.3、将java添加到环境变量中2.4、刷新配置2.5、验证3、安装zookeeper3.1、解…

Linux系统7个运行级别图文详解

Linux系统7个运行级别图文详解 当安装linux操作系统时将选择下列那一个操作 ______ A.选择 "图形登录方式" 设定系统开始运行级为4 B.选择 "文本登录方式" 设定系统开始运行级为3 C.选择 "文本登录方式" 设定系…

使用IntelliJ IDEA碰到的问题总结

文章目录问题一:无法创建Java Class文件问题一:无法创建Java Class文件 今天打开项目时,发现右击新建不了java.class文件,于是尝试了以下方法: (1)选择 File——>Project Structure——>…

linux文本处理常用指令总结

引子 作为一个偏爱windows的程序员,以前做文本处理的时候总是喜欢在windows下用notepad等图形化工具处理,比如有时需要把linux服务器上一个文件进行一次全局字符串替换这样简单的操作,还得把文件down到本地编辑好再传回去。这两天买了本《鸟哥…

Linux中chown和chmod的区别和用法

chmod修改第一列内容, chown修改第3、4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组。 chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:chown root:root /tmp/tmp1 就…

玩大数据期间碰到的一些问题总结

文章目录问题一:Zookeeper节点数量为什么建议是奇数个?问题二:HA机制的Hadoop集群中Journal Node 作用问题三:两个datanode节点互相排斥怎么解决(集群无法识别新加入的Datanode)?问题四&#xf…

JAVA的SSH框架登录注册

Struts 的MVC设计模式可以使我们的逻辑变得很清晰,主要负责表示层的显示。 Spring 的IOC和AOP可以使我们的项目在最大限度上解藕。 hibernate的就是实体对象的持久化了, 数据库的封装。 项目截图:(代码是按照项目截图上传的,直接对号入座即可…

Visual Studio Code 前端调试不完全指南

本文最初发布于我的个人博客:咀嚼之味Visual Studio Code (以下简称 vscode) 如今已经代替 Sublime,成为前端工程师们最喜爱的代码编辑器。它作为一个大型的开源项目,不断推陈出新;社区中涌现出大量优质的插件,以支持我…

机器学习之LDA主题模型算法

文章目录1、知道LDA的特点和应用方向1.1、特点1.2、应用方向2、知道Beta分布和Dirichlet分布数学含义3、了解共轭先验分布4、知道先验概率和后验概率5、知道参数α值的大小对应的含义6、掌握LDA主题模型的生成过程7、知道超参数α等值的参考值8、LDA总结1、知道LDA的特点和应用…

[Go] Template 使用简介

Golang 提供了两个标准库用来处理模板 text/template 和 html/template。我们使用 html/template 格式化 html 字符。 模板引擎 模板引擎很多,Python 的 jinja,nodejs 的 jade 等都很好。所谓模板引擎,则将模板和数据进行渲染的输出格式化后的…

内存泄露监测

2019独角兽企业重金招聘Python工程师标准>>> iOS 内存泄露监测 144 作者 谢谢生活 已关注 2017.05.19 17:38* 字数 4235 阅读 209评论 0喜欢 6 iOS可能存在的内存泄露:block 循环引用。当一个对象有一个block属性,而block属性又引用这个对象…

玩Azkaban跳过的坑

文章目录一号坑:启动Azkaban报错:User xml file conf/azkaban-users.xml doesnt exist.二号坑:报错:failed SslSocketConnector0.0.0.0:8443: java.io.FileNotFoundException: /home/hadoop/app/azkaban/azkaban-web-2.5.0/bin/ke…

删除节点removeChild()

http://www.imooc.com/code/1700 删除节点removeChild() removeChild() 方法从子节点列表中删除某个节点。如删除成功,此方法可返回被删除的节点,如失败,则返回 NULL。 语法: nodeObject.removeChild(node) 参数: node :必需&…

机器学习自主解决安全威胁离我们还有多远?

曾经听见不止一次这样的问题: “机器学习会替代基于人工经验规则的安全解决方案么?”把这个问题放在去年来看,我们已经得到了非常多的讨论甚至是一些已经实际应用的解决方案,对于人工智能在安全以及其它各种对数据进行价值挖掘的场…

Vue:解决[Vue warn]: Failed to resolve directive: modle (found in Anonymous)

解决问题 [Vue warn]: Failed to resolve directive: modle (found in <ComponentA>) console.error(("[Vue warn]: " msg trace)); 原因是 我把model 写成了 modle 这类错误一般是单词写错了 (found in <Anonymous>) 解决思路

一行Python代码制作动态二维码

目录 1、普通二维码 2、艺术二维码 3、动态二维码 在GitHub上发现了一个比较有意思的项目&#xff0c;只需要一行Python代码就可以快捷方便生成普通二维码、艺术二维码(黑白/彩色)和动态GIF二维码。 GitHub网站参加&#xff1a;https://github.com/sylnsfar/qrcode 用法比…

Vue常用经典开源项目汇总参考-海量

Vue常用经典开源项目汇总参考-海量 Vue是什么&#xff1f; Vue.js&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是&#xff0c;Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层&#xff0c;并且非常…