内容来自:https://github.com/GreedyAIAcademy/Machine-Learning

最初

支持向量机的目的:找到一条好的分割线
什么杨的分割线最好?
有最大间隔的分割线最好。

推导过程

Support Vector是被选中用于计算的点,也就是距离分界线最近的几个点。

显然d1+d2=“向量(x1-x2)的模”*cosθ。
根据向量内机的算法:向量w*向量(x1-x2)=|w|*|x1-x2|cosθ
因此,d1+d2=向量w*向量(x1-x2)/|w|,又根据上面的两个方程式相加就可以知道d1+d2=2/|w|

又因为向量w向量w的转置矩阵=|w|的平方
所以为了让(d1+d2)最大,也就是让"向量w
向量w的转置矩阵"最小,然后再加上一个松弛变量就有了这样的方程:

实际生活中如果考虑全部的点很有可能画不出分割线,松弛变量的意思就是舍弃一些点画出分割线:

最终的向量内积方程的形式是:

扩展SVM到支持多个类别

两种方法:

  1. OVR (one versus rest): 对于K个类别的情况, 训练K个SVM, 第 j 个SVM用于判读任意条数据是属于类别 j 还是属于类别非 j. 预测的时候, 具有最大值的

    机器学习笔记4:SVM支持向量积的推导过程的更多相关文章

    1. Python机器学习笔记:SVM(1)——SVM概述

      前言 整理SVM(support vector machine)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...

    2. 机器学习笔记——支持向量机 (SVM)

      声明: 机器学习系列主要记录自己学习机器学习算法过程中的一些参考和总结,其中有部分内容是借鉴参考书籍和参考博客的. 目录: 什么支持向量机(SVM) SVM中必须知道的概念 SVM实现过程 SVM核心 ...

    3. 吴恩达机器学习笔记(六) —— 支持向量机SVM

      主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...

    4. Python机器学习笔记:sklearn库的学习

      网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...

    5. [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论

      前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...

    6. 机器学习之支持向量机—SVM原理代码实现

      支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

    7. Python机器学习笔记:使用Keras进行回归预测

      Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

    8. Python机器学习笔记:不得不了解的机器学习面试知识点(1)

      机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...

    9. 机器学习 支持向量机(SVM) 从理论到放弃,从代码到理解

      基本概念 支持向量机(support vector machines,SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器.支持向量机还包括核技巧,这使它成为实质上的非线性分 ...

    随机推荐

    1. git中ignore文件配置

      在项目中我们有一些文件是不能公开的,或者说是每个人需要单独配置的,那么这个时候使用 git 就不能上传这些文件.此时就需要对 .gitignore 文件进行配置. git 的忽略原则:参考 廖雪峰的g ...

    2. 【BigData】Java基础_ArrayList的使用

      ArrayList概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. 数组有自身的特点,不变性,一旦数组被初始化,那么其长度就固定了,不 ...

    3. docker Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post

      利用docker构建时,报错 + docker pull maven:3-alpine Got permission denied while trying to connect to the Doc ...

    4. kibana We couldn't activate monitoring

      调节一下监控状态查询的时间范围,有时候,刚启动监控,数据没有生成.把”last 1 hour“改成 具体有数据的时间 用如下语句查看,监控日志在不断生成.重启kibana后正常有监控画面了. GET ...

    5. xilinx SDK开发 GPIO使用API总结

      t_v GPIO常用函数 1.XGpio_Config *XGpio_LookupConfig(u16 DeviceId) 功能:根据输入设备ID查找该设备. 输入:设备ID. 输出:若找到该设备ID ...

    6. [记录] C# 版本和.NET 版本以及VS版本的对应关系

      简单的来说:    VS2010 最高用到 .Net Framework4,C# 4.0    VS2015 最高用到 .Net Framework4.6,C# 6.0    VS2017 最高用到 ...

    7. NanoPi NEO Plus2开发环境搭建

      1.前言 NanoPi NEO Plus2是友善电子推出的一款非常小巧精致的开源硬件,该开源硬件的CPU是基于Allwinner公司的64位四核ARM Cortex-A53处理器H5,并且内置了六核M ...

    8. FTP服务器安装测试

      FTP服务器基本搭建 -- vsftpd 作用:文件的基本上传和下载 1.服务器端 软件的安装: $ sudo apt-get install vsftpd (1)修改配置文件 $ sudo vim ...

    9. [转帖]centos7 使用kubeadm 快速部署 kubernetes 国内源

      centos7 使用kubeadm 快速部署 kubernetes 国内源 https://www.cnblogs.com/qingfeng2010/p/10540832.html 前言 搭建kube ...

    10. C语言 宏定义的1<<0 与 直接定义1 有什么区别

      [1]示例程序 如下示例代码: #include <stdio.h> #define TEST1 1 << 0 #define TEST2 (1 << 0) #de ...