机器学习之支持向量机(SVM)学习笔记
支持向量机是一种二分类算法,算法目的是找到一个最佳超平面将属于不同种类的数据分隔开。当有新数据输入时,判断该数据在超平面的哪一侧,继而决定其类别。
具体实现思路:
训练过程即找到最佳的分隔超平面的过程。当数据特征数是2时,超平面就是一条直线;当数据的特征数是3时,超平面就是一个平面;当数据特征数为1024时,就需要一个2013维的超平面来对其分类。分隔超平面的形式可以写为:wTx+b
最佳超平面的判断依据是,希望离超平面最近的点离超平面尽可能远。支持向量就是指那些离超平面最近的点。
分类函数:
使用单位跃阶函数作用到wTx+b上得到f(wTx+b),当wTx+b大于0时函数输出为1,反之为-1,而不是像LR之类算法输出1或0。使用这个函数的好处是当计算数据点到分隔超平面的距离来确定超平面的位置时,间隔通过label*(wTx+b)来计算,那么不管是正分类还是负分类的数据点,其间隔都是正数。
优化目标函数:
——公式(1)
上式为优化的目标函数。
是点到分割面的函数间隔,当wT和b等比例放大时,函数间隔的值可以随之变大,因此不具有优化价值。所以优化目标函数中使用点到分割面的几何间隔
直接对公式(1)进行求解十分困难,因此考虑固定一个因子而最大化其它因子。令支持向量的函数间隔为1,最大化1/||w||来求得最终解。因为除支持向量外的其他点的函数间隔都大于1,所以约束条件是
,所以可以得到新的目标函数(最小化||w||2和最大化1/||w||是一样的,yi 就是xi 对应的label):
——公式(2)
拉格朗日对偶:
目标函数公式(2)的求解可以用拉格朗日对偶思想进行优化。首先定义广义拉格朗日函数为:

然后令:
,其中
当所有约束条件均满足,即
时,αi 均为0时
取得最大值,此时
。
所以目标函数变为

当函数在满足KKT条件时,可以转化为其对偶问题,即上式可以转化为
——公式(3)
做对偶化的原因是这样可以简化求解过程,且经过验证本问题中的函数满足KKT条件。至于KKT条件是什么,这里就不详细介绍了,反正就是一个数学条件。
至此,我们求最优间隔面的问题成功地转化为了公式(3)。
目标函数求解:
首先固定αi ,让L取得关于w和b的最小值。分别对w和b求偏导数(这可能就是进行拉格朗日对偶化的原因吧),并令导数为0可得:


将上面两个式子代入公式(3),化简得到目标函数为(因为有两个w,所以alpha、x、y的下标用 i 和 j 来区分):
——公式(4)
此时决策规则变为:
若
,则样本u为正分类样本。
而b可以用wT*x+b=0来求,所以现在的问题就只剩下求解满足公式(4)的alpha。
SMO算法:
SMO算法是将大优化问题分解为多个小优化问题来求解。
其工作原理是:每次循环选择两个α进行优化处理。一旦找到一对合适的α,就增大其中一个同时减小另一个。
SMO算法能求出一系列alpha,一旦求出了这些alpha,就很容易计算出权重向量w和b并得到分隔超平面。
核函数——将低维数据映射到高维空间:
当遇到数据集线性不可分的情况时,就无法在本维度进行求解。但利用核函数将数据映射到高维空间,就有可能成为线性可分的数据集。根据公式6可知需要求极值的L函数只与 xi 和 xj 的点积有关,所以核函数需要做的只是提供空间变换后两向量的点积,我们甚至不需要知道这个空间变换是什么。常用的核函数有线性核函数和指数核函数:
——线性核函数
——指数核函数
机器学习之支持向量机(SVM)学习笔记的更多相关文章
- 机器学习框架ML.NET学习笔记【4】多元分类之手写数字识别
一.问题与解决方案 通过多元分类算法进行手写数字识别,手写数字的图片分辨率为8*8的灰度图片.已经预先进行过处理,读取了各像素点的灰度值,并进行了标记. 其中第0列是序号(不参与运算).1-64列是像 ...
- 机器学习框架ML.NET学习笔记【3】文本特征分析
一.要解决的问题 问题:常常一些单位或组织召开会议时需要录入会议记录,我们需要通过机器学习对用户输入的文本内容进行自动评判,合格或不合格.(同样的问题还类似垃圾短信检测.工作日志质量分析等.) 处理思 ...
- 机器学习框架ML.NET学习笔记【2】入门之二元分类
一.准备样本 接上一篇文章提到的问题:根据一个人的身高.体重来判断一个人的身材是否很好.但我手上没有样本数据,只能伪造一批数据了,伪造的数据比较标准,用来学习还是蛮合适的. 下面是我用来伪造数据的代码 ...
- 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录
一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...
- 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)
一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...
- 机器学习框架ML.NET学习笔记【6】TensorFlow图片分类
一.概述 通过之前两篇文章的学习,我们应该已经了解了多元分类的工作原理,图片的分类其流程和之前完全一致,其中最核心的问题就是特征的提取,只要完成特征提取,分类算法就很好处理了,具体流程如下: 之前介绍 ...
- 机器学习框架ML.NET学习笔记【7】人物图片颜值判断
一.概述 这次要解决的问题是输入一张照片,输出人物的颜值数据. 学习样本来源于华南理工大学发布的SCUT-FBP5500数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间 ...
- 机器学习框架ML.NET学习笔记【8】目标检测(采用YOLO2模型)
一.概述 本篇文章介绍通过YOLO模型进行目标识别的应用,原始代码来源于:https://github.com/dotnet/machinelearning-samples 实现的功能是输入一张图片, ...
- 机器学习框架ML.NET学习笔记【9】自动学习
一.概述 本篇我们首先通过回归算法实现一个葡萄酒品质预测的程序,然后通过AutoML的方法再重新实现,通过对比两种实现方式来学习AutoML的应用. 首先数据集来自于竞赛网站kaggle.com的UC ...
- 神经网络与机器学习第3版学习笔记-第1章 Rosenblatt感知器
神经网络与机器学习第3版学习笔记 -初学者的笔记,记录花时间思考的各种疑惑 本文主要阐述该书在数学推导上一笔带过的地方.参考学习,在流畅理解书本内容的同时,还能温顾学过的数学知识,达到事半功倍的效果. ...
随机推荐
- jersey 用FastJson替换掉默认的Jackson
@Bean public ResourceConfig resourceConfig() { ResourceConfig resourceConfig = new ResourceConfig(); ...
- loadrunner-关联
1.什么是关联? 将服务器动态返回的值,保存成一个参数,供后面需要使用到 此参数的地方使用 PS:1.一定是服务器返回的 2.动态变化的,静态不需要关联 3.服务器需要校验的 4.保存成一个参数 5. ...
- python3下最简单的九九乘法表
def minus(): print("=========================九九乘法表===========================") x=1 y=1 wh ...
- JHipster简介
JHipster简介 JHipster或者称Java Hipster,是一个应用代码产生器,能够创建Spring Boot + AngularJS的应用.开源项目地址:JHipster/Github. ...
- Java8 Base64
转自:https://www.runoob.com/java/java8-base64.html 在Java 8中,Base64编码已经成为Java类库的标准. Java 8 内置了 Base64 编 ...
- sql语句应用
laravel5.6框架中用到的sql语句 //排序 $data=DB::table('admin')->select(array('id','name','password'))->or ...
- 每日算法之递推排序(P1866 编号)
兔子也是数字控:每个兔子都有自己喜欢的数字区间,找出能让所有兔子都满意的组合. 将所有兔子喜欢的序号按从小到大排序,此时如果小序号的兔子选择了一个数字,则之后的兔子只要排除排在它之前的兔子数(由于已经 ...
- java并发编程概念
并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其 ...
- Dnsmasq 配置PXE批量安装系统
以下测试都是基于centos 7下的环境 需要安装的软件为 nginx 用来下载ks.cfg和系统镜像文件用的,也可以用ftp服务器来代替 dnsmasq 提供dhcp服务和tftp服务,也可以单独去 ...
- Spring_Four -- 团队项目设计完善&编码测试
团队项目设计完善&编码测试 1.文档<软件设计方案说明书>github地址:https://github.com/gzyt/SRS 2.项目集成开发环境 数据库:Mysql 5.0 ...