机器学习之支持向量机(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版学习笔记 -初学者的笔记,记录花时间思考的各种疑惑 本文主要阐述该书在数学推导上一笔带过的地方.参考学习,在流畅理解书本内容的同时,还能温顾学过的数学知识,达到事半功倍的效果. ...
随机推荐
- C# 通过GUID生成不重复的ID
/// <summary> /// 获得32位字符长度的ID /// </summary> /// <param name="information" ...
- xpath, urllib
li_category = response.xpath("//div[@class='r-name']") <div class="r-name"> ...
- Jacey:烧了500万才知道,信息流广告OCPC竟然要这样玩!心疼
现在很多线索类广告主,已经不满足于表单.在线咨询等获客方式,随着微商的火热,很多行业都玩起了个人微信号加粉的方式来获取潜在消费者. 随着手机的普遍,移动流量呈大幅上涨趋势,越来越多广告主将目光投向了信 ...
- POJ - 3278
题目链接:http://poj.org/problem?id=3278 ac代码: #include <iostream>#include <stdio.h>#include ...
- orcal - 添加用户、授权
create user jy2 identified by jy2; grant dba to jy2;
- 获取的是 string 类型的字段,直接输出 数字 或者 需要的第几行
Freight = driver.find_element_by_xpath("//tbody/tr/td[6]").text print(type(Freight)) # 这里输 ...
- azkaban使用--传入动态参数
转: azkaban的工作流中的参数可以分为如下几个类型:azkaban UI 页面输入参数, 环境变量参数, job作业文件中定义的参数,工作流的用户定义的属性文件,上游作业传递给下游的参数,工作流 ...
- 变量 range while for input
1.程序 =数据结构+算法 1.1.数字计算机的编码指令的次序 1.4.程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指 ...
- Python conda安装 并安装Tensorflow
Python conda安装 1: 官网下载3版本 Anaconda2-2018.12-Windows-x86_64.exe, 安装完后配置环境变量 用户变量->PATH 编辑新增路径 C:\P ...
- (转)Android 只开启一个Activity实例
在一个Activity中,多次调用startActivity()来启动另一个Activity,要想只生成一个Activity实例,方法有两种. 方法一:设置起动模式 一个Activity有四种启动模式 ...