支持向量机

  • 优化目标
    • 模型转换
    • 代价函数
    • 假设方程
  • 模型原理
    • 数学边界
    • 最大间隔分类器
  • 数学原理 - 略,宜看视频
  • 核心程序
    • 概念解析
      • f特征量
      • 近似核心方程
    • 决策边界
  • 应用指南
    • 参数选择
    • 实战简明教程
      • 声明参数
      • 处理高斯核心方程
      • 其它核心方程
      • 处理多类分类问题
  • 逻辑回归与SVM

优化目标


模型转换


  • 在y=0/1时,分别将逻辑回归模型曲线转换为近似的折线
  • y=0时, 转折点在 z = θ T x z=\theta^Tx z=θTx = -1处, z > − 1 z > -1 z>−1时,cost > 0
  • y=1时, 转折点在 z = θ T x z=\theta^Tx z=θTx = 1处, z < 1 z < 1 z<1时,cost > 0

代价函数


模型特征

相比逻辑回归,支持虚拟机公式对代价函数进行了以下改变

  • 移除了m项,移除此项不影响梯度下降结果
  • 将 c c c替换了 1 λ \dfrac{1}{\lambda} λ1​,不影响正则化结果
  • 假设方程项发生了改变

假设方程


假设方程不再进行公式运算,而是简单的二元判断

模型原理


数学边界


  • θ T x > = 1 \theta^Tx >= 1 θTx>=1,y = 1
  • θ T x < = − 1 \theta^Tx <= -1 θTx<=−1,y = 0

通过扩大边界范围,支持虚拟机给我们带来了更加严格的分类标准(0 --> 1)

最大间隔分类器


支持向量机的决策边界即最大间隔分类器,边界值离不同分类样本间的垂直距离最远,这也是数学上的更严格在几何上的体现

在最大边界分类器中,边界改变的可能性由C反映

  • C时,即 λ \lambda λ,此时模型接近过拟合,曲线灵敏度高,出现图中边界线由于一个值的增加就发生改变的情况
  • C时,即 λ \lambda λ曲线平稳性更强,不容易发生改变

数学原理 - 略,宜看视频


核心程序


核心程序是使用虚拟向量机获得复杂非线性分类器的关键

概念解析


f特征量

使用f项代替样本多项式(在之后都是用的是近似方程),统一称为特征,寻找最佳特征,拟合边界曲线,很快我们就会知道,这个最佳多项式就是近似方程(一种高斯方程),f项随后可以理解为对样本使用高斯近似方差后的结果

近似核心方程

近似的概念是相对的,我们需要设定地标,对这些地标点使用近似方程,如下图中的 l ( 1 , 2 , 3 ) l^{(1,2,3)} l(1,2,3)

此中核心就是高斯方程(即近似方程,similarity function),所以我们又称之为高斯核心

近似方程的使用:

  • 如果x坐标接近样本点 l ( 1 ) l^{(1)} l(1),近似方程结果为1
  • 如果远离,近似方程结果为0

近似方程中需要注意的参数是 σ \sigma σ, σ \sigma σ越大,曲线越胖,顶点恒为一,底部预测概率则为0,如下图三维模型:

决策边界


根据最小化代价函数得到 θ \theta θ,带入假设方程,其实近似方程和f向量的算法对每个样本点的结果是一样的,最终分类还是依靠 θ \theta θ参数进行

总的来说,样本曲线接近预测结果为1的样本点

应用指南


  1. 选择地标

    对所有的样本点 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)),选择地标 l ( i ) = x ( i ) l^{(i)}=x^{(i)} l(i)=x(i)
  2. 应用近似核心方程

    对每个输入数据,算出它在所有特征方向所有地标的近似核心方程,m x n
    注意用于最终计算的f矩阵也要加上 f 0 f_0 f0​
  3. 训练样本,得到 θ \theta θ值
    训练此样本时的主要区别就是用f特征量代替了原始特征量

    老规矩正则项不考虑 θ 0 \theta_0 θ0​
  4. 计算假设方程,预测y值

参数选择

打累了上图吧

  • C大,低偏置高方差
  • C小,高偏置低方差
  • σ 2 \sigma^2 σ2大,曲线越胖,曲线光滑,倾向于高偏置低方差
  • σ 2 \sigma^2 σ2小,曲线越瘦,曲线欠光滑,倾向于低偏置高方差

实战简明教程


首先,需要声明的是使用别人写的SVM算法库是更加合理的方面,这样一来,压力就来到了参数选择方面(因为大多数时候,我们只需要填参数就够了。。。)

声明参数

  • 声明C
  • 声明核型程序(无核心即为线性核型方程),一般为高斯核心方程(近似核心方程)
  • 声明核心程序参数,高斯核心需声明 σ 2 \sigma^2 σ2

处理高斯核心方程

  • 如果要进行规模缩放,请在使用高斯核心方程之前对训练集进行处理
  • 高斯核心方程需要填入训练集的输入和输出

其它核心方程

列举一下,不作多言

较多用的是多项式核心,看图蓝色部分应该就能动,就是把核心方程替换了一下而已

处理多类分类问题


大多数SVM库拥有自带的多类分类功能,如果没有,那仍使用一对多模型,注意图中的x是未经过核心程序处理的,不知道可不可以替换为f特征量进行计算

逻辑回归与SVM


逻辑回归和支持向量机又诸多相同之处,最大的不同就在于假设方程和核心程序的使用,逻辑回归的假设方程为逻辑方程,且不适用核心程序

考虑使用逻辑回归和SVM只要是样本数量m和特征维度n两方面

  • n大(10000):维度多,计算量大,使用逻辑回归或者无核心支持向量机(记得高斯核心需要计算出所有特征方向上每个样本对所有样本的近似值吗)
  • n小,m适中:使用高斯核心的SVM
  • n小,m大:组合创造更多的特征量,然后使用逻辑回归或者无核心支持向量机(记得大数据,多特征两者共存才可以获得低方差低偏置的预测模型吗)

Andrew Ng带我漫步机器学习 - 第七周 支持向量机SVM相关推荐

  1. Andrwe Ng带我漫步机器学习 - 第九周 异常检测模型和推荐系统

    异常检测模型和推荐系统 异常检测 密度估计 高斯分布(正态分布) 密度估计算法 单个样本 样本集 数字评估 分割数据集 算法评估 选择特征 非高斯分布特征处理 误差分析 异常检测与监督学习 推荐系统 ...

  2. 机器学习(七)支持向量机svm中级篇

    上一篇博文中我们得到的最后求解方程是: 接着我们将详解它的求解方法.这一步涉及到拉格朗日求解问题,有点难,建议如果想学这个问题是怎么求解的,先去好好学学拉格朗日的对偶问题求解. 一.数学基础知识复习: ...

  3. 机器学习中的算法-支持向量机(SVM)基础

    机器学习中的算法-支持向量机(SVM)基础 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处 ...

  4. 机器学习-第六章 支持向量机(SVM)

    机器学习-第六章 支持向量机(SVM) D系鼎溜关注 2020.02.09 21:19:41字数 1,131阅读 458 6.1 间隔与支持向量 开倍速观看视频之后,对课本所说的会更加了解. 支持向量 ...

  5. python sklearn 支持向量机_python机器学习库sklearn之支持向量机svm介绍

    python机器学习库sklearn之支持向量机svm介绍tcB太阳2平台注册|网站分类目录 python数据挖掘系列教程tcB太阳2平台注册|网站分类目录 这里只讲述sklearn中如何使用svm算 ...

  6. 逻辑回归二分类算法python_机器学习第七周--二分类算法逻辑回归

    一.Logistic分类算法 逻辑回归(Logistic Regression, LR)是传统机器学习中的一种分类模型,由于算法的简单和高效,解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR ...

  7. 吴恩达|机器学习作业6.0支持向量机(SVM)

    6.0.支持向量机 1)题目: 在本练习中,您将使用支持向量机来建立一个垃圾邮件分类器. 在本练习的前半部分,您将使用支持向量机(SVM)处理各种两维的样本数据集.使用这些数据集进行实验将帮助您直观地 ...

  8. python机器学习案例系列教程——支持向量机SVM、核函数

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归.线性分类 参考:http://blog.csdn.net/luanpeng825485697/article/de ...

  9. svm 支持向量机 回归 预测_机器学习:简单理解支持向量机SVM

    在介绍过贝叶斯之后,今天尝试着给大家介绍支持向量机SVM. 在机器学习中,SVM试图找到一个最佳的超平面,该平面可以最佳地分割来自不同类别的观察结果.一个在N-1维的超平面可以分割Ñ维的特征空间.例如 ...

最新文章

  1. 数据科学家必须要掌握的5种聚类算法
  2. 由于找不到appvisvsubsystems32.dll_去固始张街逛一逛,以后可能看不到了......
  3. gen_caltab自治标定板
  4. Win7下运行VC程序UAC权限问题
  5. lm016l c语言编程,基于MCS51-LM016L (液晶屏)
  6. c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)
  7. python实现求解字符串集的最长公共前缀
  8. numpy和pandas的参考手册
  9. spring中将静态代理修改为动态代理
  10. 跨境电商自建独立站CMS
  11. 计算机组成原理——如何理解计算机的运算速度以及运算速度的相关计算CPI/IPS/f/T
  12. B2B供应链管理平台主流技术架构方案
  13. LDO稳压芯片-内部框图及选型参数
  14. 笔记2~CSMA/CD协议
  15. 学习用HTML做新闻摘要
  16. 顺丰快递查询接口的调用方法(附带源码)
  17. Android kotilin 滴+震动提示
  18. php居中缩放图片,PHP对图片等比缩放和补白居中
  19. 前后端分离 Spring Security 对登出.logout()的处理
  20. 讲真,这可能是博客图床最佳解决方案

热门文章

  1. 这可能是最全的计算机编程语言列表了
  2. 斜方肌(01):负重耸肩
  3. 阿里云最简单的认证是什么?
  4. 磁感应强度 磁场强度
  5. 计算机控制整体液压提升滑移技术采用了,钢结构滑移施工技术
  6. 游戏联运系统SDK丨红包游戏丨手游联运系统丨游戏SDK丨游戏SDK红包功能
  7. S7-200SMART案例分析——运动控制编程三轴控制(一)
  8. python取反操作_在python中对于bool布尔值的取反操作
  9. 表白代码抖音很火的卡通H5动态表白源码HTML+CSS,七夕情人节代码,520代码
  10. 神奇的不可见空格200b导致代码异常